public async Task AddDuplicateSlugShouldThrow() { using (var api = CreateApi()) { var post = await MyPost.CreateAsync(api); post.BlogId = BLOG_ID; post.Title = "My first post"; post.Published = DateTime.Now; await Assert.ThrowsAsync <ValidationException>(async() => { await api.Posts.SaveAsync(post); }); } }
public async Task Add() { using (var api = CreateApi()) { var count = (await api.Posts.GetAllAsync(BLOG_ID)).Count(); var catCount = (await api.Posts.GetAllCategoriesAsync(BLOG_ID)).Count(); var post = await MyPost.CreateAsync(api, "MyPost"); post.BlogId = BLOG_ID; post.Category = "My category"; post.Title = "My fourth post"; post.Ingress = "My fourth ingress"; post.Body = "My fourth body"; await api.Posts.SaveAsync(post); Assert.Equal(count + 1, (await api.Posts.GetAllAsync(BLOG_ID)).Count()); Assert.Equal(catCount, (await api.Posts.GetAllCategoriesAsync(BLOG_ID)).Count()); } }
public async Task AddWithTags() { using (var api = CreateApi()) { var count = (await api.Posts.GetAllAsync(BLOG_ID)).Count(); var catCount = (await api.Posts.GetAllCategoriesAsync(BLOG_ID)).Count(); var tagCount = (await api.Posts.GetAllTagsAsync(BLOG_ID)).Count(); var post = await MyPost.CreateAsync(api, "MyPost"); post.BlogId = BLOG_ID; post.Category = "My category"; post.Tags.Add("Testing", "Trying", "Adding"); post.Title = "My fifth post"; post.Ingress = "My fifth ingress"; post.Body = "My fifth body"; await api.Posts.SaveAsync(post); Assert.Equal(count + 1, (await api.Posts.GetAllAsync(BLOG_ID)).Count()); Assert.Equal(catCount, (await api.Posts.GetAllCategoriesAsync(BLOG_ID)).Count()); Assert.Equal(tagCount + 3, (await api.Posts.GetAllTagsAsync(BLOG_ID)).Count()); post = await api.Posts.GetBySlugAsync <MyPost>(BLOG_ID, Piranha.Utils.GenerateSlug("My fifth post")); Assert.NotNull(post); Assert.Equal(3, post.Tags.Count); post.Tags.Add("Another tag"); await api.Posts.SaveAsync(post); Assert.Equal(tagCount + 4, (await api.Posts.GetAllTagsAsync(BLOG_ID)).Count()); post = await api.Posts.GetBySlugAsync <MyPost>(BLOG_ID, Piranha.Utils.GenerateSlug("My fifth post")); Assert.NotNull(post); Assert.Equal(4, post.Tags.Count); } }
public override async Task InitializeAsync() { using (var api = CreateApi()) { Piranha.App.Init(api); var pageBuilder = new PageTypeBuilder(api) .AddType(typeof(MyPage)); pageBuilder.Build(); var postBuilder = new PostTypeBuilder(api) .AddType(typeof(MyPost)); postBuilder.Build(); // Add site var site1 = new Site { Id = SITE1_ID, Title = "Page Site", InternalId = "PostSite", IsDefault = true }; await api.Sites.SaveAsync(site1); var site2 = new Site { Id = SITE2_ID, Title = "Page Site 2", InternalId = "PostSite2", Hostnames = "www.myothersite.com", IsDefault = false }; await api.Sites.SaveAsync(site2); // Add pages var page1 = await MyPage.CreateAsync(api); page1.Id = PAGE1_ID; page1.SiteId = SITE1_ID; page1.Title = "Blog"; page1.Published = DateTime.Now; await api.Pages.SaveAsync(page1); var page2 = await MyPage.CreateAsync(api); page2.Id = PAGE2_ID; page2.SiteId = SITE2_ID; page2.Title = "News"; page2.Published = DateTime.Now; await api.Pages.SaveAsync(page2); // Add categories var category1 = new Models.Taxonomy { Id = CATEGORY1_ID, Title = "Default category" }; var category2 = new Models.Taxonomy { Id = CATEGORY2_ID, Title = "Default category" }; // Add posts var post1 = await MyPost.CreateAsync(api); post1.Id = POST1_ID; post1.BlogId = page1.Id; post1.Category = category1; post1.Title = "My first post"; post1.Body = "My first body"; post1.Tags.Add(new Models.Taxonomy { Id = TAG1_ID, Title = "My tag" }); post1.Published = DateTime.Now; await api.Posts.SaveAsync(post1); var post2 = await MyPost.CreateAsync(api); post2.Id = POST2_ID; post2.BlogId = page2.Id; post2.Category = category2; post2.Title = "My second post"; post2.Body = "My second body"; post2.Tags.Add(new Models.Taxonomy { Id = TAG2_ID, Title = "My other tag" }); post2.Published = DateTime.Now; await api.Posts.SaveAsync(post2); } }
public override async Task InitializeAsync() { _services = new ServiceCollection() .AddSingleton <IMyService, MyService>() .BuildServiceProvider(); using (var api = CreateApi()) { Piranha.App.Init(api); Piranha.App.Fields.Register <MyFourthField>(); var pageTypeBuilder = new PageTypeBuilder(api) .AddType(typeof(BlogPage)); pageTypeBuilder.Build(); var postTypeBuilder = new PostTypeBuilder(api) .AddType(typeof(MissingPost)) .AddType(typeof(MyPost)) .AddType(typeof(MyCollectionPost)) .AddType(typeof(MyDIPost)); postTypeBuilder.Build(); // Add site var site = new Site { Id = SITE_ID, Title = "Post Site", InternalId = "PostSite", IsDefault = true }; await api.Sites.SaveAsync(site); // Add blog page var page = await BlogPage.CreateAsync(api); page.Id = BLOG_ID; page.SiteId = SITE_ID; page.Title = "Blog"; await api.Pages.SaveAsync(page); var category = new Models.Taxonomy { Id = CAT_1_ID, Title = "My category" }; var post1 = await MyPost.CreateAsync(api); post1.Id = POST_1_ID; post1.BlogId = BLOG_ID; post1.Category = category; post1.Title = "My first post"; post1.Ingress = "My first ingress"; post1.Body = "My first body"; post1.Blocks.Add(new Extend.Blocks.TextBlock { Body = "Sollicitudin Aenean" }); post1.Blocks.Add(new Extend.Blocks.TextBlock { Body = "Ipsum Elit" }); await api.Posts.SaveAsync(post1); var post2 = await MyPost.CreateAsync(api); post2.Id = POST_2_ID; post2.BlogId = BLOG_ID; post2.Category = category; post2.Title = "My second post"; post2.Ingress = "My second ingress"; post2.Body = "My second body"; await api.Posts.SaveAsync(post2); var post3 = await MyPost.CreateAsync(api); post3.Id = POST_3_ID; post3.BlogId = BLOG_ID; post3.Category = category; post3.Title = "My third post"; post3.Ingress = "My third ingress"; post3.Body = "My third body"; await api.Posts.SaveAsync(post3); var post4 = await MyCollectionPost.CreateAsync(api); post4.BlogId = BLOG_ID; post4.Category = category; post4.Title = "My collection post"; post4.Texts.Add(new TextField { Value = "First text" }); post4.Texts.Add(new TextField { Value = "Second text" }); post4.Texts.Add(new TextField { Value = "Third text" }); await api.Posts.SaveAsync(post4); var post6 = await MyDIPost.CreateAsync(api); post6.Id = POST_DI_ID; post6.BlogId = BLOG_ID; post6.Category = category; post6.Title = "My Injection Post"; await api.Posts.SaveAsync(post6); } }