public void Test_FilemetadataParser_EmptyFileWithoutConfigOnlyGetsDefaultValues() { // Arange var optionsMock = new MetadataParserOptions(); var metadataProviderMock = new Mock <IMetadataProvider>(); metadataProviderMock .Setup(x => x.Retrieve <FileMetaData>(It.Is <string>(p => p.Equals(string.Empty)))) .Returns(new Metadata <FileMetaData> { }); var loggerMock = new LoggerMock <FileMetadataParser>(); var sut = new FileMetadataParser(loggerMock.Object, metadataProviderMock.Object, optionsMock); var criteria = new MetadataCriteria { Content = string.Empty, FileName = "file.html" }; // Act var result = sut.Parse(criteria); // Assert result.Should().NotBeNull(); result.Data.Should().NotBeNull(); result.Data.Count.Should().Be(1, "Only URI is added by default"); result.Data.Uri.Should().NotBeNull(); result.Data.Uri.Should().Be("file.html"); }
public void Test_FilemetadataParser_EmptyFileIfMultipleConfigurationsApplyLastOneWins() { // Arange var options = new MetadataParserOptions { Defaults = new DefaultMetadatas { new DefaultMetadata { Path = string.Empty, Values = new FileMetaData { Layout = "default.html" } }, new DefaultMetadata { Path = "test", Values = new FileMetaData { Layout = "other.html", Collection = "test" } } } }; var metadataProviderMock = new Mock <IMetadataProvider>(); metadataProviderMock .Setup(x => x.Retrieve <FileMetaData>(It.Is <string>(p => p.Equals(string.Empty)))) .Returns(new Metadata <FileMetaData> { }); var loggerMock = new LoggerMock <FileMetadataParser>(); var sut = new FileMetadataParser(loggerMock.Object, metadataProviderMock.Object, options); var criteria = new MetadataCriteria { Content = string.Empty, FileName = Path.Combine("test", "file.html"), Permalink = Path.Combine("test", ":name:ext") }; // Act var result = sut.Parse(criteria); // Assert result.Should().NotBeNull(); result.Data.Should().NotBeNull(); result.Data.Count.Should().Be(3, "Defaults = 1 + Applied Config = 2, Makes 3 values"); result.Data.Uri.Should().NotBeNull(); result.Data.Uri.Should().Be(Path.Combine("test", "file.html")); result.Data.Layout.Should().NotBeNull(); result.Data.Layout.Should().Be("other.html"); result.Data.Collection.Should().NotBeNull(); result.Data.Collection.Should().Be("test"); }
public void Test_FilemetadataParser_MultipleLayers() { // Arange var options = new MetadataParserOptions { Defaults = new DefaultMetadatas { new DefaultMetadata { Path = string.Empty, Values = new FileMetaData { Layout = "default.html" } }, new DefaultMetadata { Path = "test", Values = new FileMetaData { Collection = "test" } } } }; var metadataProviderMock = new Mock <IMetadataProvider>(); metadataProviderMock .Setup(x => x.Retrieve <FileMetaData>(It.Is <string>(p => p.Equals(string.Empty)))) .Returns(new Metadata <FileMetaData> { }); var loggerMock = new Mock <ILogger <FileMetadataParser> >(); var sut = new FileMetadataParser(loggerMock.Object, metadataProviderMock.Object, options); var criteria = new MetadataCriteria { Content = string.Empty, FileName = "posts/2021/file.html", Permalink = "posts/2021/:name:ext" }; // Act var result = sut.Parse(criteria); // Assert result.Should().NotBeNull(); result.Data.Should().NotBeNull(); result.Data.Count.Should().Be(2, "Defaults = 1 + Applied Config = 1, Makes 2 values"); result.Data.Uri.Should().NotBeNull(); result.Data.Uri.Should().Be("posts/2021/file.html"); result.Data.Layout.Should().NotBeNull(); result.Data.Layout.Should().Be("default.html"); }