Example #1
0
        public async Task ExtractTaxaCommand_RunWithValidDocumentAndValidProgramSettings_ExtractLowerAndHigherTaxa_ShouldWork()
        {
            // Arrange
            var harvesterMock = new Mock <ITaxonNamesHarvester>();
            var reporterMock  = new Mock <IReporter>();
            var command       = new ExtractTaxaCommand(harvesterMock.Object, reporterMock.Object);
            var settingsMock  = new Mock <ICommandSettings>();
            var documentMock  = new Mock <IDocument>();

            var xmldocumentStub = new XmlDocument();

            xmldocumentStub.LoadXml("<a />");

            documentMock
            .SetupGet(d => d.XmlDocument)
            .Returns(xmldocumentStub);

            settingsMock
            .SetupGet(s => s.ExtractTaxa)
            .Returns(false);
            settingsMock
            .SetupGet(s => s.ExtractLowerTaxa)
            .Returns(true);
            settingsMock
            .SetupGet(s => s.ExtractHigherTaxa)
            .Returns(true);

            // Act
            var result = await command.Run(documentMock.Object, settingsMock.Object);

            // Assert
            settingsMock.VerifyGet(s => s.ExtractTaxa, Times.Once);
            settingsMock.VerifyGet(s => s.ExtractLowerTaxa, Times.Once);
            settingsMock.VerifyGet(s => s.ExtractHigherTaxa, Times.Once);

            harvesterMock.Verify(r => r.Harvest(It.IsAny <XmlNode>()), Times.Never);
            harvesterMock.Verify(r => r.HarvestLowerTaxa(It.IsAny <XmlNode>()), Times.Once);
            harvesterMock.Verify(r => r.HarvestLowerTaxa(xmldocumentStub.DocumentElement), Times.Once);
            harvesterMock.Verify(r => r.HarvestHigherTaxa(It.IsAny <XmlNode>()), Times.Once);
            harvesterMock.Verify(r => r.HarvestHigherTaxa(xmldocumentStub.DocumentElement), Times.Once);

            reporterMock.Verify(r => r.AppendContent(It.IsAny <string>()), Times.Exactly(2));
            reporterMock.Verify(r => r.MakeReport(), Times.Once);
        }
Example #2
0
        public void ExtractTaxaCommand_RunWithNullDocumentAndNullProgramSettings_ShouldThrowArgumentNullException()
        {
            // Arrange
            var harvesterMock = new Mock <ITaxonNamesHarvester>();
            var reporterMock  = new Mock <IReporter>();
            var command       = new ExtractTaxaCommand(harvesterMock.Object, reporterMock.Object);

            // Act + Assert
            var exception = Assert.ThrowsAsync <ArgumentNullException>(() =>
            {
                return(command.Run(null, null));
            });

            harvesterMock.Verify(r => r.Harvest(It.IsAny <XmlNode>()), Times.Never);
            harvesterMock.Verify(r => r.HarvestLowerTaxa(It.IsAny <XmlNode>()), Times.Never);
            harvesterMock.Verify(r => r.HarvestHigherTaxa(It.IsAny <XmlNode>()), Times.Never);

            reporterMock.Verify(r => r.AppendContent(It.IsAny <string>()), Times.Never);
            reporterMock.Verify(r => r.MakeReport(), Times.Never);
        }
Example #3
0
        public void ExtractTaxaCommand_RunWithValidDocumentAndNullProgramSettings_ShouldThrowArgumentNullExceptionWithCorrectParamName()
        {
            // Arrange
            var harvesterMock = new Mock <ITaxonNamesHarvester>();
            var reporterMock  = new Mock <IReporter>();
            var command       = new ExtractTaxaCommand(harvesterMock.Object, reporterMock.Object);
            var documentMock  = new Mock <IDocument>();

            // Act + Assert
            var exception = Assert.ThrowsAsync <ArgumentNullException>(() =>
            {
                return(command.Run(documentMock.Object, null));
            });

            Assert.AreEqual(ParameterNames.Settings, exception.ParamName, "ParamName is not correct.");

            harvesterMock.Verify(r => r.Harvest(It.IsAny <XmlNode>()), Times.Never);
            harvesterMock.Verify(r => r.HarvestLowerTaxa(It.IsAny <XmlNode>()), Times.Never);
            harvesterMock.Verify(r => r.HarvestHigherTaxa(It.IsAny <XmlNode>()), Times.Never);

            reporterMock.Verify(r => r.AppendContent(It.IsAny <string>()), Times.Never);
            reporterMock.Verify(r => r.MakeReport(), Times.Never);
        }
        public async Task ExtractTaxaCommand_RunWithValidDocumentAndValidProgramSettings_ExtractOnlyLowerTaxa_ShouldNotChangeDocumentContent()
        {
            // Arrange
            var harvesterMock = new Mock <ITaxonNamesHarvester>();
            var reporterMock  = new Mock <IReporter>();
            var command       = new ExtractTaxaCommand(harvesterMock.Object, reporterMock.Object);
            var settingsMock  = new Mock <ICommandSettings>();
            var documentMock  = new Mock <IDocument>();

            var xmldocumentStub = new XmlDocument();

            xmldocumentStub.LoadXml("<a />");

            documentMock
            .SetupGet(d => d.XmlDocument)
            .Returns(xmldocumentStub);

            settingsMock
            .SetupGet(s => s.ExtractTaxa)
            .Returns(false);
            settingsMock
            .SetupGet(s => s.ExtractLowerTaxa)
            .Returns(true);
            settingsMock
            .SetupGet(s => s.ExtractHigherTaxa)
            .Returns(false);

            // Act
            string initialContent = xmldocumentStub.OuterXml;

            var result = await command.Run(documentMock.Object, settingsMock.Object);

            string finalContent = xmldocumentStub.OuterXml;

            // Assert
            Assert.AreEqual(initialContent, finalContent);
        }