public void ExternalLinksHarvester_WithValidParametersInConstructor_ShouldCorrectlyInitializeNewInstance() { // Arrange var contextWrapperMock = new Mock <IXmlContextWrapper>(); var serializerMock = new Mock <IXmlTransformDeserializer>(); var transformersFactoryMock = new Mock <IExternalLinksTransformersFactory>(); // Act var harvester = new ExternalLinksHarvester(contextWrapperMock.Object, serializerMock.Object, transformersFactoryMock.Object); // Assert Assert.IsNotNull(harvester); var contextWrapperField = PrivateField.GetInstanceField(HarvesterType.BaseType, harvester, ContextWrapperFieldName); Assert.IsNotNull(contextWrapperField); Assert.IsInstanceOf <IXmlContextWrapper>(contextWrapperField); Assert.AreSame(contextWrapperMock.Object, contextWrapperField); var serializerField = PrivateField.GetInstanceField(HarvesterType, harvester, SerializerFieldName); Assert.IsNotNull(serializerField); Assert.IsInstanceOf <IXmlTransformDeserializer>(serializerField); Assert.AreSame(serializerMock.Object, serializerField); var transformersFactoryField = PrivateField.GetInstanceField(HarvesterType, harvester, TransformersFactoryFieldName); Assert.IsNotNull(transformersFactoryField); Assert.IsInstanceOf <IExternalLinksTransformersFactory>(transformersFactoryField); Assert.AreSame(transformersFactoryMock.Object, transformersFactoryField); }
public void ExternalLinksHarvester_WithNullSerializerProviderInConstructor_ShouldThrowArgumentNullExceptionWithCorrectParamName() { // Arrange var contextWrapperMock = new Mock <IXmlContextWrapper>(); var transformersFactoryMock = new Mock <IExternalLinksTransformersFactory>(); // Act + Assert var exception = Assert.Throws <ArgumentNullException>(() => { var harvester = new ExternalLinksHarvester(contextWrapperMock.Object, null, transformersFactoryMock.Object); }); Assert.AreEqual(SerializerFieldName, exception.ParamName); }
public void ExternalLinksHarvester_WithSampleXmlFile_ShouldExtractCorrectlyExternalLinks() { // Arrange const int ExpectedNumberOfExternalLinks = 10; const int ExpectedNumberOfExternalLinksOfTypeDoi = 9; var xmlFileName = $"{ConfigurationManager.AppSettings["SampleFiles"]}/article-with-external-links.xml"; var document = new XmlDocument { PreserveWhitespace = true }; document.Load(xmlFileName); var contextWrapper = new XmlContextWrapper(); var deserializer = new XmlDeserializer(); var serializer = new XmlTransformDeserializer(deserializer); var xslCache = new XslTransformCache(); var transformer = new XslTransformer( ConfigurationManager.AppSettings[AppSettingsKeys.ExternalLinksXslFileName], xslCache); var transformersFactoryMock = new Mock <IExternalLinksTransformersFactory>(); transformersFactoryMock .Setup(f => f.GetExternalLinksTransformer()) .Returns(transformer); var harvester = new ExternalLinksHarvester(contextWrapper, serializer, transformersFactoryMock.Object); // Act var externalLinks = harvester.Harvest(document.DocumentElement).Result?.ToList(); // Assert Assert.IsNotNull(externalLinks); externalLinks.ForEach(i => Console.WriteLine("{0} | {1} | {2}", i.BaseAddress, i.Uri, i.Value)); Assert.AreEqual(ExpectedNumberOfExternalLinks, externalLinks.Count); var doiExternalLinks = externalLinks.Where(i => i.BaseAddress.Contains("doi.org")).ToList(); Assert.AreEqual(ExpectedNumberOfExternalLinksOfTypeDoi, doiExternalLinks.Count); }