public void GivenTestData_WhenBuildPackage_ShouldBeAbleToReadManifest() { string specFile = new TestResources().WriteTestData_1(); string buildFolder = Path.Combine(Path.GetTempPath(), nameof(nBlog), "build", Guid.NewGuid().ToString()); string packageFile = new ArticlePackageBuilder() .SetSpecFile(specFile) .SetBuildFolder(buildFolder) .SetObjFolder(Path.Combine(buildFolder, "obj")) .Build(); byte[] fileBytes = File.ReadAllBytes(packageFile); ArticlePayload articlePayload = fileBytes.ToArticlePayload((ArticleId)"id"); ArticleManifest articleManifest = articlePayload.ReadManifest(); articleManifest.Should().NotBeNull(); articleManifest.Should().NotBeNull(); articleManifest.ArticleId.Should().Be("article/contact"); articleManifest.Title.Should().Be("Contact"); articleManifest.Author.Should().Be("Ghost Writer"); articleManifest.Date.Should().Be(new DateTime(2020, 1, 2)); Enumerable.SequenceEqual(articleManifest.Tags, new[] { "Tag1", "Tag2" }).Should().BeTrue(); }
public static ArticlePayload ToArticlePayload(this byte[] subject) { subject.VerifyAssert(x => x?.Length > 0, $"{nameof(subject)} is empty"); ArticleManifest articleManifest = subject.ReadManifest(); return(subject.ToArticlePayload((ArticleId)articleManifest.ArticleId)); }
public static void WriteToFile(this ArticleManifest mlPackageManifest, string filePath) { filePath.VerifyNotEmpty(nameof(filePath)); mlPackageManifest.Verify(); var json = Json.Default.SerializeFormat(mlPackageManifest); File.WriteAllText(filePath, json); }
public static void Verify(this ArticleManifest subject) { subject.VerifyNotNull(nameof(subject)); subject.ArticleId.VerifyNotEmpty($"{nameof(subject.ArticleId)} is required"); _ = new ArticleId(subject.ArticleId).GetArticleArea(); subject.PackageVersion.VerifyNotEmpty($"{nameof(subject.PackageVersion)} is required"); subject.Title.VerifyNotEmpty($"{nameof(subject.Title)} is required"); }
public async Task GivenRealPackage_WhenFullLifeCycleInFolder_ShouldPass() { TestWebsiteHost host = TestApplication.GetHost(); string specFile = new TestResources().WriteTestData_1(); string buildFolder = Path.Combine(Path.GetTempPath(), nameof(nBlog), "build", Guid.NewGuid().ToString()); string packageFile = new ArticlePackageBuilder() .SetSpecFile(specFile) .SetBuildFolder(buildFolder) .SetObjFolder(Path.Combine(buildFolder, "obj")) .Build(); byte[] packageBytes = File.ReadAllBytes(packageFile); ArticlePayload articlePayload = packageBytes.ToArticlePayload(); ArticleManifest articleManifest = packageBytes.ReadManifest(); await host.ArticleClient.Set(articlePayload); ArticlePayload?readPayload = await host.ArticleClient.Get((ArticleId)articlePayload.Id); readPayload.Should().NotBeNull(); ArticleManifest readArticleManifest = articlePayload.ReadManifest(); articleManifest.ArticleId.Should().Be(readArticleManifest.ArticleId); articleManifest.PackageVersion.Should().Be(readArticleManifest.PackageVersion); articleManifest.Title.Should().Be(readArticleManifest.Title); articleManifest.Summary.Should().Be(readArticleManifest.Summary); articleManifest.Author.Should().Be(readArticleManifest.Author); articleManifest.ImageFile.Should().Be(readArticleManifest.ImageFile); articleManifest.Date.Should().Be(readArticleManifest.Date); Enumerable.SequenceEqual(articleManifest.Tags !, readArticleManifest.Tags !).Should().BeTrue(); Enumerable.SequenceEqual(articleManifest.Categories !, readArticleManifest.Categories !).Should().BeTrue(); (articlePayload == readPayload).Should().BeTrue(); BatchSet <string> searchList = await host.ArticleClient.List(QueryParameters.Default).ReadNext(); searchList.Should().NotBeNull(); searchList.Records.Any(x => x.StartsWith(articlePayload.Id)).Should().BeTrue(); (await host.ArticleClient.Delete((ArticleId)articlePayload.Id)).Should().BeTrue(); searchList = await host.ArticleClient.List(QueryParameters.Default).ReadNext(); searchList.Should().NotBeNull(); searchList.Records.Any(x => x.StartsWith(articlePayload.Id)).Should().BeFalse(); }
private void BuildIndex(Context context, string packageFile, CancellationToken token) { _logger.LogInformation($"{nameof(BuildIndex)}: packageFile={packageFile}"); byte[] bytes = File.ReadAllBytes(packageFile); ArticlePayload articlePayload = bytes.ToArticlePayload((ArticleId)"id"); IReadOnlyList <WordCount> wordCounts = new ArticlePackageIndexBuilder().Build(articlePayload); ArticleManifest articleManifest = articlePayload.ReadManifest(); var articleIndex = new ArticleIndex { ArticleId = articleManifest.ArticleId, WordIndexes = wordCounts, }; context.Queue.Enqueue(articleIndex); }
public static IEnumerable <string> GetCategoryList(this ArticleManifest mlPackageManifest) => mlPackageManifest.Categories ?? Array.Empty <string>();
public static IEnumerable <string> GetTagList(this ArticleManifest mlPackageManifest) => mlPackageManifest.Tags ?? Array.Empty <string>();
public static IReadOnlyList <string> GetReferences(this ArticleManifest mlPackageManifest) => mlPackageManifest.GetTagList() .Concat(mlPackageManifest.GetCategoryList()) .OrderBy(x => x) .ToList();