Exemple #1
0
        public async void OnPost_WithoutNewRevision_VerifyServiceMethodIsCalledAndConfirmationMessageIsSet()
        {
            //Arrange
            var poem            = new PoemBuilder().Default().Build();
            var poemDTO         = PoemDTO.CreateDTOFromEntity(poem);
            var mockReadService = new Mock <IReadPoemService>();

            mockReadService.Setup(r => r.IsNameUsedByOtherPoem(poemDTO.Id, poemDTO.Name))
            .Returns(false);

            var mockWriteService = new Mock <IWritePoemService>();

            mockWriteService.Setup(w => w.UpdatePoem(It.IsAny <PoemDTO>()));
            mockWriteService.Setup(w => w.SaveNewRevision(poemDTO.Id, It.IsAny <RevisionDTO>()));
            var testModel = new EditPoemModel(mockReadService.Object, mockWriteService.Object);

            //Act
            testModel.PoemToEdit  = poemDTO;
            testModel.NewRevision = new RevisionDTO();
            await testModel.OnPostAsync();

            //Assert
            mockWriteService.Verify(w => w.UpdatePoem(It.IsAny <PoemDTO>()), Times.Once);
            mockWriteService.Verify(w => w.SaveNewRevision(poemDTO.Id, It.IsAny <RevisionDTO>()), Times.Never);
            Assert.Equal(EditPoemModel.POEM_SAVED_MESSAGE, testModel.ConfirmationMessage);
        }
Exemple #2
0
        public async void OnPost_PublishNewRevision_NewRevisionNotSaved_VerifyServiceMethodIsNotCalledAndErrorMessageIsSetCorrectly()
        {
            //Arrange
            var poem        = new PoemBuilder().Default().Build();
            var poemDTO     = PoemDTO.CreateDTOFromEntity(poem);
            var revisionDTO = RevisionDTO.CreateDTOFromEntity(poem.PoemRevisions.FirstOrDefault());

            revisionDTO.Id = Guid.NewGuid();
            var mockReadService = new Mock <IReadPoemService>();

            mockReadService.Setup(r => r.IsNameUsedByOtherPoem(poemDTO.Id, poemDTO.Name))
            .Returns(false);
            mockReadService.Setup(r => r.GetLatestPoemRevision(poemDTO.Id))
            .Returns(new RevisionDTO());

            var mockWriteService = new Mock <IWritePoemService>();

            mockWriteService.Setup(w => w.UpdatePoem(It.IsAny <PoemDTO>()));
            mockWriteService.Setup(w => w.SaveNewRevision(poemDTO.Id, It.IsAny <RevisionDTO>()));
            var testModel = new EditPoemModel(mockReadService.Object, mockWriteService.Object);

            //Act
            testModel.PoemToEdit = poemDTO;
            testModel.PoemToEdit.PublishedRevisionId = EditPoemModel.PUBLISH_NEW_REVISION;
            testModel.NewRevision = revisionDTO;

            //Assert
            await Assert.ThrowsAsync <ApplicationException>(() => testModel.OnPostAsync());
        }
Exemple #3
0
        public async void OnPost_PublishEmptyRevision_VerifyServiceMethodIsNotCalledAndErrorMessageIsSetCorrectly()
        {
            //Arrange
            var poem            = new PoemBuilder().Default().Build();
            var poemDTO         = PoemDTO.CreateDTOFromEntity(poem);
            var mockReadService = new Mock <IReadPoemService>();

            mockReadService.Setup(r => r.GetPoemRevisions(poemDTO.Id))
            .Returns(new RevisionList());
            mockReadService.Setup(r => r.IsNameUsedByOtherPoem(poemDTO.Id, poemDTO.Name))
            .Returns(false);

            var mockWriteService = new Mock <IWritePoemService>();

            mockWriteService.Setup(w => w.UpdatePoem(It.IsAny <PoemDTO>()));
            var testModel = new EditPoemModel(mockReadService.Object, mockWriteService.Object);

            //Act
            testModel.PoemToEdit = poemDTO;
            testModel.PoemToEdit.PublishedRevisionId = EditPoemModel.PUBLISH_NEW_REVISION;
            testModel.NewRevision = new RevisionDTO();
            await testModel.OnPostAsync();

            //Assert
            mockWriteService.Verify(w => w.UpdatePoem(It.IsAny <PoemDTO>()), Times.Never);

            var inputFieldName = nameof(testModel.PoemToEdit) + "." + nameof(testModel.PoemToEdit.PublishedRevisionId);

            AssertKeyInErrorState(testModel, inputFieldName);
            AssertErrorMessage(testModel, EditPoemModel.NEW_REVISION_EMPTY_MESSAGE);
        }
Exemple #4
0
        public async void OnPost_NameConflict_VerifyServiceMethodIsNotCalledAndErrorMessageIsSetCorrectly()
        {
            var newName = "new name";
            //Arrange
            var poem            = new PoemBuilder().Default().Build();
            var poemDTO         = PoemDTO.CreateDTOFromEntity(poem);
            var mockReadService = new Mock <IReadPoemService>();

            mockReadService.Setup(r => r.GetPoemRevisions(poemDTO.Id))
            .Returns(new RevisionList());
            mockReadService.Setup(r => r.IsNameUsedByOtherPoem(poemDTO.Id, newName))
            .Returns(true);

            var mockWriteService = new Mock <IWritePoemService>();

            mockWriteService.Setup(w => w.UpdatePoem(It.IsAny <PoemDTO>()));
            var testModel = new EditPoemModel(mockReadService.Object, mockWriteService.Object);

            //Act
            testModel.PoemToEdit      = poemDTO;
            testModel.PoemToEdit.Name = newName;
            await testModel.OnPostAsync();

            //Assert
            mockWriteService.Verify(w => w.UpdatePoem(It.IsAny <PoemDTO>()), Times.Never);

            var inputFieldName = nameof(testModel.PoemToEdit) + "." + nameof(testModel.PoemToEdit.Name);

            AssertKeyInErrorState(testModel, inputFieldName);
            AssertErrorMessage(testModel, EditPoemModel.NAME_CONFLICT_MESSAGE);
        }
Exemple #5
0
        public async void OnPost_InvalidModelState_VerifyServiceMethodIsNotCalled()
        {
            //Arrange
            var poem            = new PoemBuilder().Default().Build();
            var poemDTO         = PoemDTO.CreateDTOFromEntity(poem);
            var mockReadService = new Mock <IReadPoemService>();

            mockReadService.Setup(r => r.GetPoemRevisions(poemDTO.Id))
            .Returns(new RevisionList());
            mockReadService.Setup(r => r.IsNameUsedByOtherPoem(poemDTO.Id, poemDTO.Name));

            var mockWriteService = new Mock <IWritePoemService>();

            mockWriteService.Setup(w => w.UpdatePoem(It.IsAny <PoemDTO>()));
            var testModel = new EditPoemModel(mockReadService.Object, mockWriteService.Object);

            //Act
            testModel.PoemToEdit = poemDTO;
            testModel.ModelState.AddModelError("test", "invalid state");
            await testModel.OnPostAsync();

            //Assert
            mockReadService.Verify(r => r.IsNameUsedByOtherPoem(poemDTO.Id, poemDTO.Name), Times.Never);
            mockWriteService.Verify(w => w.UpdatePoem(It.IsAny <PoemDTO>()), Times.Never);
        }
Exemple #6
0
        public async void OnPost_PublishNewRevision_VerifyServiceMethodIsCalledAndConfirmationMessageIsSet()
        {
            //Arrange
            var poem        = new PoemBuilder().Default().Build();
            var poemDTO     = PoemDTO.CreateDTOFromEntity(poem);
            var revisionDTO = RevisionDTO.CreateDTOFromEntity(poem.PoemRevisions.FirstOrDefault());

            revisionDTO.Id = Guid.NewGuid();
            var mockReadService = new Mock <IReadPoemService>();

            mockReadService.Setup(r => r.IsNameUsedByOtherPoem(poemDTO.Id, poemDTO.Name))
            .Returns(false);
            mockReadService.Setup(r => r.GetLatestPoemRevision(poemDTO.Id))
            .Returns(revisionDTO);

            var mockWriteService = new Mock <IWritePoemService>();

            mockWriteService.Setup(w => w.UpdatePoem(It.IsAny <PoemDTO>()));
            mockWriteService.Setup(w => w.SaveNewRevision(poemDTO.Id, It.IsAny <RevisionDTO>()));
            var testModel = new EditPoemModel(mockReadService.Object, mockWriteService.Object);

            //Act
            testModel.PoemToEdit = poemDTO;
            testModel.PoemToEdit.PublishedRevisionId = EditPoemModel.PUBLISH_NEW_REVISION;
            testModel.NewRevision = revisionDTO;
            await testModel.OnPostAsync();

            //Assert
            mockReadService.Verify(r => r.GetLatestPoemRevision(poemDTO.Id), Times.Once);
            mockWriteService.Verify(w => w.UpdatePoem(testModel.PoemToEdit), Times.Once);
            mockWriteService.Verify(w => w.SaveNewRevision(poemDTO.Id, revisionDTO), Times.Once);
            Assert.Equal(EditPoemModel.POEM_SAVED_MESSAGE, testModel.ConfirmationMessage);
        }