Ejemplo n.º 1
0
        public async Task ProcessAsync_ValidSubjectWhichDoesntRequireContentUpdate_DoesNotChangeContentAndReturnsValidProcessingResult()
        {
            var documentRepositoryMock = new Mock <IDocumentRepository>();
            var archivistFactoryMock   = new Mock <IArchivistFactory>();
            var subject = new UpdateDocumentSubject {
                Content = "this is new content", ContentUpdateRequired = false, Id = "test_update"
            };
            var documentToUpdate = new Document {
                Content = "this is old content", Id = subject.Id
            };

            documentRepositoryMock.Setup(it => it.FindDocumentAsync(subject.Id)).ReturnsAsync(documentToUpdate);
            archivistFactoryMock.Setup(it => it.CreateArchivistChain(It.IsAny <DocumentProcessingAction[]>())).Returns(new DoNothingArchivist());
            var strategy = new UpdateDocumentStrategy(documentRepositoryMock.Object, archivistFactoryMock.Object);
            var result   = await strategy.ProcessAsync(subject, new[] { new DocumentProcessingAction() });

            Assert.NotNull(result);
            Assert.IsType <DocumentView <DocumentProcessingResultContent> >(result);
            var documentView = (DocumentView <DocumentProcessingResultContent>)result;

            Assert.Equal(DocumentViewType.Ok, documentView.Type);
            Assert.Equal(DocumentProcessingResultType.Added, documentView.Content.ProcessingResultType);
            documentRepositoryMock.Verify(it => it.UpdateAsync(documentToUpdate), Times.Once);
            Assert.Equal("this is old content", documentToUpdate.Content);
        }
Ejemplo n.º 2
0
        public async Task ProcessAsync_ValidSubjecWithProcessingParameters_CreatesAndCallArchivistChain()
        {
            var documentRepositoryStub = new Mock <IDocumentRepository>();
            var archivistFactoryStub   = new Mock <IArchivistFactory>();
            var archivistMock          = new Mock <IArchivist>();
            var subject = new UpdateDocumentSubject {
                Id = "test"
            };

            archivistMock.Setup(it => it.Rethink(null)).Returns((Document)null);
            documentRepositoryStub.Setup(it => it.FindDocumentAsync(subject.Id)).ReturnsAsync(new Document());
            archivistFactoryStub.Setup(it => it.CreateArchivistChain(It.IsAny <DocumentProcessingAction[]>())).Returns(archivistMock.Object);
            var strategy = new UpdateDocumentStrategy(documentRepositoryStub.Object, archivistFactoryStub.Object);
            await strategy.ProcessAsync(subject, new[] { new DocumentProcessingAction() });

            archivistMock.Verify(it => it.Rethink(It.IsAny <Document>()), Times.Once);
        }
Ejemplo n.º 3
0
        public async Task ProcessAsync_SubjectWithInvalidId_ReturnsWarningProcessingResult()
        {
            var documentRepositoryStub = new Mock <IDocumentRepository>();
            var archivistFactoryStub   = new Mock <IArchivistFactory>();
            var subject = new UpdateDocumentSubject {
                Id = "test"
            };

            documentRepositoryStub.Setup(it => it.FindDocumentAsync(subject.Id)).ReturnsAsync((Document)null);
            var strategy = new UpdateDocumentStrategy(documentRepositoryStub.Object, archivistFactoryStub.Object);
            var result   = await strategy.ProcessAsync(subject, null);

            Assert.NotNull(result);
            Assert.IsType <DocumentView <DocumentProcessingResultContent> >(result);
            var documentView = (DocumentView <DocumentProcessingResultContent>)result;

            Assert.Equal(DocumentViewType.Warning, documentView.Type);
            Assert.Equal(DocumentProcessingResultType.UpdateFailed, documentView.Content.ProcessingResultType);
            Assert.Equal($"Document '{subject.Id}' not found.", documentView.Content.Description);
        }