public void GivenAMessageWhenGetMessagesIsCalledThenTheMessageIsReturned()
        {
            // Arrange.
            var message  = MessageBuilder.ABuilder().Build();
            var messages = new List <Message>
            {
                message,
            };
            var messageViewModel  = MessageViewModelBuilder.ABuilder().Build();
            var messageViewModels = new List <MessageViewModel>
            {
                messageViewModel,
            };

            this.messageComponentTestDouble
            .Setup(component => component.GetMessages())
            .Returns(messages);
            this.mapperTestDouble
            .Setup(mapper => mapper.Map <MessageViewModel>(It.IsAny <Message>()))
            .Returns(messageViewModel);

            // Act.
            var result = this.systemUnderTest.GetMessages();

            // Assert.
            result.Should().BeOfType <OkObjectResult>();
            var okObjectResult = (OkObjectResult)result;

            okObjectResult.Value.Should().BeEquivalentTo(messageViewModels);
            this.messageComponentTestDouble
            .Verify(component => component.GetMessages(), Times.Once);
            this.mapperTestDouble
            .Verify(mapper => mapper.Map <MessageViewModel>(message), Times.Once);
        }
        public void GivenAMessageWhenEditMessageIsCalledThenTheMessageIsEdited()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();
            var messageAddEditViewModel = MessageAddEditViewModelBuilder.ABuilder().Build();
            var messageViewModel        = MessageViewModelBuilder.ABuilder().Build();

            this.messageComponentTestDouble
            .Setup(component => component.GetMessage(It.IsAny <Guid>()))
            .Returns(message);
            this.mapperTestDouble
            .Setup(mapper => mapper.Map <MessageViewModel>(It.IsAny <Message>()))
            .Returns(messageViewModel);

            // Act.
            var result = this.systemUnderTest.EditMessage(message.ExternalId, messageAddEditViewModel);

            // Assert.
            result.Should().BeOfType <OkObjectResult>();
            var okObjectResult = (OkObjectResult)result;

            okObjectResult.Value.Should().BeEquivalentTo(messageViewModel);
            this.messageComponentTestDouble
            .Verify(component => component.GetMessage(message.ExternalId), Times.Once);
            this.mapperTestDouble
            .Verify(mapper => mapper.Map(messageAddEditViewModel, message), Times.Once);
            this.messageComponentTestDouble
            .Verify(component => component.EditMessage(message), Times.Once);
            this.mapperTestDouble
            .Verify(mapper => mapper.Map <MessageViewModel>(message), Times.Once);
        }
        public void GivenAMessageWhenAddMessageIsCalledThenTheMessageIsAdded()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();
            var messageAddEditViewModel = MessageAddEditViewModelBuilder.ABuilder().Build();
            var messageViewModel        = MessageViewModelBuilder.ABuilder().Build();

            this.mapperTestDouble
            .Setup(mapper => mapper.Map <Message>(It.IsAny <MessageAddEditViewModel>()))
            .Returns(message);
            this.mapperTestDouble
            .Setup(mapper => mapper.Map <MessageViewModel>(It.IsAny <Message>()))
            .Returns(messageViewModel);

            // Act.
            var result = this.systemUnderTest.AddMessage(messageAddEditViewModel);

            // Assert.
            result.Should().BeOfType <CreatedResult>();
            var createdresult = (CreatedResult)result;

            createdresult.Value.Should().BeEquivalentTo(messageViewModel);
            createdresult.Location.Should().Be($"/api/v1/Messages/{messageViewModel.Id}");
            this.mapperTestDouble
            .Verify(mapper => mapper.Map <Message>(messageAddEditViewModel), Times.Once);
            this.messageComponentTestDouble
            .Verify(component => component.AddMessage(message), Times.Once);
            this.mapperTestDouble
            .Verify(mapper => mapper.Map <MessageViewModel>(message), Times.Once);
        }
Esempio n. 4
0
        public void GivenANewMessageWhenRemoveMessageIsCalledThenADbUpdateConcurrencyExceptionIsThrown()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();

            // Act.
            Action action = () => this.systemUnderTest.RemoveMessage(message);

            // Assert.
            action.Should().Throw <DbUpdateConcurrencyException>();
        }
Esempio n. 5
0
        public void GivenAMessageWhenAddMessageIsCalledThenTheMessageIsAdded()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();

            // Act.
            var result = this.systemUnderTest.AddMessage(message);

            // Assert.
            result.Should().BeEquivalentTo(message);
            this.helloWorldContextTestDouble.Messages.Should().HaveCount(1);
        }
        public void GivenAMessageWhenRemoveMessageIsCalledThenTheMessageIsRemoved()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();

            // Act.
            this.systemUnderTest.RemoveMessage(message);

            // Assert.
            this.messageRepositoryTestDouble
            .Verify(repository => repository.RemoveMessage(message), Times.Once);
        }
Esempio n. 7
0
        public void GivenAMessageWhenRemoveMessageIsCalledThenTheMessageIsRemoved()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();

            this.helloWorldContextTestDouble.Messages.Add(message);
            this.helloWorldContextTestDouble.SaveChanges();

            // Act.
            this.systemUnderTest.RemoveMessage(message);

            // Assert.
            this.helloWorldContextTestDouble.Messages.Should().BeEmpty();
        }
Esempio n. 8
0
        public void GivenAMessageWhenGetMessageOnGuidIsCalledThenTheMessageIsReturned()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();

            this.helloWorldContextTestDouble.Messages.Add(message);
            this.helloWorldContextTestDouble.SaveChanges();

            // Act.
            var result = this.systemUnderTest.GetMessage(message.ExternalId);

            // Assert.
            result.Should().BeEquivalentTo(message);
        }
Esempio n. 9
0
        public void GivenAMessageWhenEditMessageIsCalledThenTheMessageIsEdited()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();

            this.helloWorldContextTestDouble.Messages.Add(message);
            this.helloWorldContextTestDouble.SaveChanges();
            message.Content = "Edited";

            // Act.
            var result = this.systemUnderTest.EditMessage(message);

            // Assert.
            result.Should().BeEquivalentTo(message);
        }
Esempio n. 10
0
        public void GivenAMessageWithIdEmptyWhenEditMessageIsCalledThenTheMessageIsAdded()
        {
            // Arrange.
            var message = MessageBuilder
                          .ABuilder()
                          .WithId(0L)
                          .WithExternalId(Guid.Empty)
                          .Build();

            // Act.
            var result = this.systemUnderTest.EditMessage(message);

            // Assert.
            result.Should().BeEquivalentTo(message);
            this.helloWorldContextTestDouble.Messages.Should().HaveCount(1);
        }
Esempio n. 11
0
        public void GivenAMessageWhenAddMessageIsCalledThenTheMessageIsAdded()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();

            this.messageRepositoryTestDouble
            .Setup(repository => repository.AddMessage(It.IsAny <Message>()))
            .Returns(message);

            // Act.
            var result = this.systemUnderTest.AddMessage(message);

            // Assert.
            result.Should().Be(message);
            this.messageRepositoryTestDouble
            .Verify(repository => repository.AddMessage(message), Times.Once);
        }
Esempio n. 12
0
        public void GivenAMessageWhenMapMessageViewModelIsCalledThenTheMessageIsCorrectlyMapped()
        {
            // Arrange.
            var message          = MessageBuilder.ABuilder().Build();
            var messageViewModel = MessageViewModelBuilder
                                   .ABuilder()
                                   .WithId(message.ExternalId)
                                   .WithAddedOn(message.AddedOn)
                                   .WithEditedOn(message.EditedOn)
                                   .WithContent(message.Content)
                                   .Build();

            // Act.
            var result = this.systemUnderTest.Map <MessageViewModel>(message);

            // Assert.
            result.Should().BeEquivalentTo(messageViewModel);
        }
        public void GivenAMessageWhenRemoveMessageIsCalledThenTheMessageIsRemoved()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();

            this.messageComponentTestDouble
            .Setup(component => component.GetMessage(It.IsAny <Guid>()))
            .Returns(message);

            // Act.
            var result = this.systemUnderTest.RemoveMessage(message.ExternalId);

            // Assert.
            result.Should().BeOfType <NoContentResult>();
            this.messageComponentTestDouble
            .Verify(component => component.GetMessage(message.ExternalId), Times.Once);
            this.messageComponentTestDouble
            .Verify(component => component.RemoveMessage(message), Times.Once);
        }
Esempio n. 14
0
        public void GivenAMessageWhenGetMessagesIsCalledThenTheMessageIsReturned()
        {
            // Arrange.
            var messages = new List <Message>
            {
                MessageBuilder.ABuilder().Build(),
            };

            this.messageRepositoryTestDouble
            .Setup(repository => repository.GetMessages())
            .Returns(messages);

            // Act.
            var result = this.systemUnderTest.GetMessages();

            // Assert.
            result.Should().BeEquivalentTo(messages);
            this.messageRepositoryTestDouble
            .Verify(repository => repository.GetMessages(), Times.Once);
        }
Esempio n. 15
0
        public void GivenAMessageWhenMapIsCalledThenTheMessageIsCorrectlyEdited()
        {
            // Arrange.
            var message = MessageBuilder.ABuilder().Build();
            var messageAddEditViewModel = MessageAddEditViewModelBuilder
                                          .ABuilder()
                                          .WithContent("Edited")
                                          .Build();
            var editedMessage = MessageBuilder
                                .ABuilder()
                                .WithId(message.Id)
                                .WithExternalId(message.ExternalId)
                                .WithAddedOn(message.AddedOn)
                                .WithEditedOn(message.EditedOn)
                                .WithContent(messageAddEditViewModel.Content)
                                .Build();

            // Act.
            this.systemUnderTest.Map(messageAddEditViewModel, message);

            // Assert.
            message.Should().BeEquivalentTo(editedMessage);
        }