public void ValidAddOnderhoudsopdrachtPostDomainServiceExceptionTest()
        {
            // Arrange
            var onderhoudsopdrachtServiceMock = new Mock <IOnderhoudsopdrachtService>(MockBehavior.Strict);

            onderhoudsopdrachtServiceMock.Setup(x => x.AddOnderhoudsopdracht(It.IsAny <CreateOnderhoudCommand>())).Throws <Exception>();

            var logServiceMock = new Mock <ILogService>(MockBehavior.Strict);

            logServiceMock.Setup(x => x.Log(It.IsAny <LogMessage>()));
            logServiceMock.Setup(x => x.LogException(It.IsAny <LogMessage>()));

            var controller = new OnderhoudController(onderhoudsopdrachtServiceMock.Object, logServiceMock.Object);

            // Act
            var result = controller.Post(new CreateOnderhoudCommand());

            // Assert
            onderhoudsopdrachtServiceMock.Verify(x => x.AddOnderhoudsopdracht(It.IsAny <CreateOnderhoudCommand>()), Times.Once());

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult));

            var invalidRequest = (result as BadRequestObjectResult).Value as InvalidRequest;

            Assert.AreEqual("Er ging iets mis. Onderhoud niet geplaatst.", invalidRequest.Message);
            Assert.AreEqual(0, invalidRequest.InvalidProperties.Count());

            logServiceMock.Verify(x => x.Log(It.IsAny <LogMessage>()), Times.Never());
            logServiceMock.Verify(x => x.LogException(It.IsAny <LogMessage>()), Times.Once());
        }
        public void ValidAddOnderhoudsopdrachtPostTest()
        {
            // Arrange
            var logServiceMock = new Mock <ILogService>(MockBehavior.Strict);

            logServiceMock.Setup(x => x.Log(It.IsAny <LogMessage>()));
            logServiceMock.Setup(x => x.LogException(It.IsAny <LogMessage>()));

            var onderhoudsopdrachtServiceMock = new Mock <IOnderhoudsopdrachtService>(MockBehavior.Strict);

            onderhoudsopdrachtServiceMock.Setup(x => x.AddOnderhoudsopdracht(It.IsAny <CreateOnderhoudCommand>()));

            var controller = new OnderhoudController(onderhoudsopdrachtServiceMock.Object, logServiceMock.Object);

            // Act
            var result = controller.Post(new CreateOnderhoudCommand());

            // Assert
            onderhoudsopdrachtServiceMock.Verify(x => x.AddOnderhoudsopdracht(It.IsAny <CreateOnderhoudCommand>()), Times.Once());

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(OkResult));

            logServiceMock.Verify(x => x.Log(It.IsAny <LogMessage>()), Times.Never());
            logServiceMock.Verify(x => x.LogException(It.IsAny <LogMessage>()), Times.Never());
        }
        public void InvalidAddOnderhoudsopdrachtPostTest()
        {
            // Arrange
            var onderhoudsopdrachtServiceMock = new Mock <IOnderhoudsopdrachtService>(MockBehavior.Strict);

            onderhoudsopdrachtServiceMock.Setup(x => x.AddOnderhoudsopdracht(It.IsAny <CreateOnderhoudCommand>()));

            var logServiceMock = new Mock <ILogService>(MockBehavior.Strict);

            logServiceMock.Setup(x => x.Log(It.IsAny <LogMessage>()));
            logServiceMock.Setup(x => x.LogException(It.IsAny <LogMessage>()));

            var controller = new OnderhoudController(onderhoudsopdrachtServiceMock.Object, logServiceMock.Object);

            controller.ModelState.AddModelError("error", "testerror");

            // Act
            var result = controller.Post(new CreateOnderhoudCommand());

            // Assert
            onderhoudsopdrachtServiceMock.Verify(x => x.AddOnderhoudsopdracht(It.IsAny <CreateOnderhoudCommand>()), Times.Never());

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult));

            var invalidRequest = (result as BadRequestObjectResult).Value as InvalidRequest;

            Assert.AreEqual("Request bevat: 1 fouten", invalidRequest.Message);

            logServiceMock.Verify(x => x.Log(It.IsAny <LogMessage>()), Times.Once());
            logServiceMock.Verify(x => x.LogException(It.IsAny <LogMessage>()), Times.Never());
        }
Пример #4
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());
            }
        }