/** @test */ public function a_sale_can_be_completed() { $bookId = BookId::generate(); $sellersId = MemberId::generate(); $buyersId = MemberId::generate(); $this->scenario->given([new BookOffered($bookId, $sellersId, "0534408133", 1500), new BookSoldToMember($bookId, $buyersId)])->when(new BookSaleCompleted($bookId))->then([]); }
/** * Run the database seeds. * * @return void */ public function run() { $repo = App::make(Books\BookRepository::class); $faker = App::make(Faker\Generator::class); foreach ($this->isbns as $isbn) { $sellersId = MemberId::generate(); $bookId = Books\BookId::generate(); $book = Books\Book::offer($bookId, $sellersId, $isbn, 1500); $repo->save($book); } }
/** * @test */ public function a_book_cannot_be_sold_twice() { $bookId = BookId::generate(); $memberId = MemberId::generate(); $buyersId1 = MemberId::generate(); $buyersId2 = MemberId::generate(); $book = Book::offer($bookId, $memberId, "0534408133", 1500); //15 euro $book->sellToMember($buyersId1); $this->expectException(\Exception::class); $this->expectExceptionMessage("A book cannot be sold twice"); $book->sellToMember($buyersId2); }
public function store(Request $req, BookRepository $repo) { $isbn = new \Isbn\Isbn(); ///@todo validation if (!$isbn->check->identify($req->input('isbn'))) { throw new \Exception('Not an ISBN'); } $isbn_10 = $isbn->hyphens->removeHyphens($req->input('isbn')); if ($isbn->check->identify($isbn_10) == 13) { $isbn_10 = $isbn->translate->to10($isbn_10); } $book = Book::offer(BookId::generate(), MemberId::generate(), $isbn_10, $req->input('price') * 100); $repo->save($book); return redirect('/books'); }
protected function createInstance() { $bookId = BookId::generate(); return new BookOfferRetracted($bookId); }
protected function createInstance() { $bookId = BookId::generate(); $buyersId = MemberId::generate(); return new BookSoldToMember($bookId, $buyersId); }
protected function createInstance() { $bookId = BookId::generate(); $sellersId = MemberId::generate(); return new BookOffered($bookId, $sellersId, "0534408133", 1500); }
protected function createInstance() { $bookId = BookId::generate(); return new BookSaleCancelled($bookId); }
protected function createInstance() : AvailableBook { $id = BookId::generate(); return new AvailableBook($id, "Domain-driven design", "Eric J. Evans", 1599, "0534408133", "www.blabla.jpg", false); }