public void FacadeToDomainService() { // Arrange var eventPublisherMock = new Mock <IEventPublisher>(MockBehavior.Strict); eventPublisherMock.Setup(x => x.Publish(It.IsAny <DomainEvent>())); using (var onderhoudsopdrachtRepo = new OnderhoudsopdrachtRepository(new OnderhoudBeheerContext(_options))) { var onderhoudsopdrachtService = new OnderhoudsopdrachtService(onderhoudsopdrachtRepo, eventPublisherMock.Object); var logServiceMock = new Mock <ILogService>(MockBehavior.Strict); logServiceMock.Setup(x => x.Log(It.IsAny <LogMessage>())); logServiceMock.Setup(x => x.LogException(It.IsAny <LogMessage>())); // Act // Facade receives valid CreateOnderhoudCommand var onderhoudController = new OnderhoudController(onderhoudsopdrachtService, logServiceMock.Object); // Post multiple CreateOnderhoudCommands to the controller using Post method foreach (var createOnderhoudCommand in _validCreateOnderhoudCommands) { // Post will pass CreateOnderhoudCommands to DomainService (OnderhoudsopdrachtService) onderhoudController.Post(createOnderhoudCommand); } // Results stored in database var storedInDatabase = onderhoudsopdrachtRepo.FindAll(); // Assert // Test if repository saved correct entity Assert.AreEqual(3, storedInDatabase.Count()); CollectionAssert.AllItemsAreNotNull(storedInDatabase.ToList()); // Check if all can be found by Id. Id's are starting at 1 and Database is re-created for every test. for (var i = 1; i < _validCreateOnderhoudCommands.Count + 1; i++) { var currentItem = storedInDatabase.Where(x => x.Id == i).FirstOrDefault(); Assert.IsNotNull(currentItem); } // Test if Publisher has been called exactly 3 times eventPublisherMock.Verify(x => x.Publish(It.IsAny <DomainEvent>()), Times.Exactly(_validCreateOnderhoudCommands.Count)); logServiceMock.Verify(x => x.Log(It.IsAny <LogMessage>()), Times.Never()); logServiceMock.Verify(x => x.LogException(It.IsAny <LogMessage>()), Times.Never()); } }
public void UpdateOnderhoudsopdrachtDependenciesAreCalled() { // Arrange var onderhoudsopdrachtRepoMock = new Mock <IRepository <Onderhoudsopdracht, long> >(MockBehavior.Strict); onderhoudsopdrachtRepoMock.Setup(x => x.Update(It.IsAny <Onderhoudsopdracht>())); var eventPublisherMock = new Mock <IEventPublisher>(MockBehavior.Strict); eventPublisherMock.Setup(x => x.Publish(It.IsAny <DomainEvent>())); var onderhoudopdrachtService = new OnderhoudsopdrachtService(onderhoudsopdrachtRepoMock.Object, eventPublisherMock.Object); // Act onderhoudopdrachtService.UpdateOnderhoudsopdracht(new UpdateOnderhoudCommand()); // Assert onderhoudsopdrachtRepoMock.Verify(x => x.Update(It.IsAny <Onderhoudsopdracht>()), Times.Once()); eventPublisherMock.Verify(x => x.Publish(It.IsAny <DomainEvent>()), Times.Once()); }