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); }
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); }
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); }