Example #1
0
        public void ExtractTaxaCommand_WithValidHarvesterAndValidReporter_ShouldCorrectlyInitializeObject()
        {
            // Arrange
            var harvesterMock = new Mock <ITaxonNamesHarvester>();
            var reporterMock  = new Mock <IReporter>();

            // Act
            var command = new ExtractTaxaCommand(harvesterMock.Object, reporterMock.Object);

            // Assert
            Assert.IsNotNull(command, "Initialized Command object should not be null.");

            var harvester = PrivateField.GetInstanceField <ExtractTaxaCommand>(
                command,
                ParameterNames.Harvester);

            Assert.IsNotNull(harvester, "Private harvester field should not be null.");
            Assert.AreSame(harvesterMock.Object, harvester, "Private harvester field should not be set correctly.");

            var reporter = PrivateField.GetInstanceField <ExtractTaxaCommand>(
                command,
                ParameterNames.Reporter);

            Assert.IsNotNull(reporter, "Private reporter field should not be null.");
            Assert.AreSame(reporterMock.Object, reporter, "Private reporter field should not be set correctly.");

            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 #2
0
 public void ExtractTaxaCommand_WithNullHarvesterAndNullReporter_ShouldThrowArgumentNullException()
 {
     // Arrange + Act + Assert
     var exception = Assert.Throws <ArgumentNullException>(() =>
     {
         var command = new ExtractTaxaCommand(null, null);
     });
 }
Example #3
0
        public void ExtractTaxaCommand_WithNullHarvesterAndValidReporter_ShouldThrowArgumentNullExceptionWithCorrectParamName()
        {
            // Arrange
            var reporterMock = new Mock <IReporter>();

            // Act + Assert
            var exception = Assert.Throws <ArgumentNullException>(() =>
            {
                var command = new ExtractTaxaCommand(null, reporterMock.Object);
            });

            Assert.AreEqual(ParameterNames.Harvester, exception.ParamName, "ParamName is not correct.");
            reporterMock.Verify(r => r.AppendContent(It.IsAny <string>()), Times.Never);
            reporterMock.Verify(r => r.MakeReport(), Times.Never);
        }
Example #4
0
        public void ExtractTaxaCommand_WithValidHarvesterAndNullReporter_ShouldThrowArgumentNullExceptionWithCorrectParamName()
        {
            // Arrange
            var harvesterMock = new Mock <ITaxonNamesHarvester>();

            // Act + Assert
            var exception = Assert.Throws <ArgumentNullException>(() =>
            {
                var command = new ExtractTaxaCommand(harvesterMock.Object, null);
            });

            Assert.AreEqual(ParameterNames.Reporter, 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);
        }
Example #5
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 #6
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 #7
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);
        }