diff --git a/src/test/groovy/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacadeSpec.groovy b/src/test/groovy/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacadeSpec.groovy new file mode 100644 index 0000000..eaa2406 --- /dev/null +++ b/src/test/groovy/io/wkrzywiec/hexagonal/library/domain/borrowing/BorrowingFacadeSpec.groovy @@ -0,0 +1,32 @@ +package io.wkrzywiec.hexagonal.library.domain.borrowing + +import io.wkrzywiec.hexagonal.library.domain.borrowing.core.BorrowingFacade +import io.wkrzywiec.hexagonal.library.domain.borrowing.core.model.AvailableBook +import io.wkrzywiec.hexagonal.library.domain.borrowing.core.model.MakeBookAvailableCommand +import io.wkrzywiec.hexagonal.library.domain.borrowing.core.ports.outgoing.BorrowingEventPublisher +import spock.lang.Specification + +class BorrowingFacadeSpec extends Specification { + + private BorrowingFacade facade; + private InMemoryBorrowingDatabase database; + private BorrowingEventPublisher eventPublisher; + + def setup(){ + database = new InMemoryBorrowingDatabase(); + eventPublisher = new BorrowingEventPublisherFake(); + facade = new BorrowingFacade(database, eventPublisher); + } + + def "Make a book available"(){ + + given: "prepare a command" + def command = new MakeBookAvailableCommand(100L) + + when: "receive MakeBookAvailableCommand" + facade.handle(command) + + then: "check database to have this book as available" + database.availableBooks[100L].idAsLong == new AvailableBook(100L).idAsLong + } +} \ No newline at end of file