Exemplo n.º 1
0
        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());
        }