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); }
public void ExtractTaxaCommand_WithNullHarvesterAndNullReporter_ShouldThrowArgumentNullException() { // Arrange + Act + Assert var exception = Assert.Throws <ArgumentNullException>(() => { var command = new ExtractTaxaCommand(null, null); }); }
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); }
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); }
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); }