Example #1
0
 internal static IEnumerable <PostTagEntity> Convert(this PostHeaderEntity ent, IEnumerable <Tag> ents)
 {
     return(ents.Select(t => new PostTagEntity
     {
         PostId = ent.Id,
         TagId = t.Id
     }));
 }
Example #2
0
        internal static Post Convert(this PostBodyEntity ent, PostHeaderEntity ent2)
        {
            if (ent == null || ent2 == null)
            {
                return(null);
            }

            return(new Post
            {
                Header = ent2.Convert(),
                Body = ent.Markdown
            });
        }
Example #3
0
        public async Task GetMetaTagsTest()
        {
            //Arrange
            var tagText = TestConstants.GuidString;

            using (var ctx = new BlogContext(_opts))
            {
                var tag = new TagEntity {
                    Text = tagText
                };
                var header = new PostHeaderEntity {
                    Title = TestConstants.GuidString, Body = new PostBodyEntity {
                        Markdown = TestConstants.GuidString
                    }
                };
                var header2 = new PostHeaderEntity {
                    Title = TestConstants.GuidString, Body = new PostBodyEntity {
                        Markdown = TestConstants.GuidString
                    }
                };
                await ctx.Tags.AddAsync(tag);

                await ctx.Headers.AddAsync(header);

                await ctx.Headers.AddAsync(header2);

                await ctx.SaveChangesAsync();

                await ctx.PostTags.AddAsync(new PostTagEntity { PostId = header.Id, TagId = tag.Id });

                await ctx.PostTags.AddAsync(new PostTagEntity { PostId = header2.Id, TagId = tag.Id });

                await ctx.SaveChangesAsync();
            }

            var accessor = new BlogAccessor(_opts);

            //Act
            var results = await accessor.GetTagList();

            var match = results.FirstOrDefault(t => t.Tag.Equals(tagText));

            //Assert
            Assert.IsNotNull(results, "Should never be null");
            Assert.IsInstanceOfType(results, typeof(IEnumerable <MetaTag>));
            Assert.IsTrue(results.Any());
            Assert.IsNotNull(match, "Should be at least one match");
            Assert.IsInstanceOfType(match, typeof(MetaTag));
            Assert.AreEqual(2, match.Count, "Should be equal");
            Assert.AreEqual(tagText, match.Tag, "Should be equal");
        }
Example #4
0
        public static void Init(TestContext tctx)
        {
            _opts = new DbContextOptionsBuilder()
                    .UseNpgsql($"Server={TestConstants.Server};Port=5432;Database={TestConstants.GuidString};User Id=user1;Password=password1;")
                    .Options;

            _testTag   = TestConstants.GuidString;
            _testTitle = TestConstants.GuidString;
            _testBody  = TestConstants.GuidString;

            using (var ctx = new BlogContext(_opts))
            {
                ctx.Database.EnsureCreated();

                var tag1 = new TagEntity {
                    Text = _testTag
                };

                //Add a tag
                ctx.Tags.Add(tag1);
                ctx.SaveChanges();

                var body = new PostBodyEntity {
                    Markdown = _testBody
                };

                //add body
                ctx.Bodies.Add(body);
                ctx.SaveChanges();

                var header = new PostHeaderEntity
                {
                    BodyId = body.Id,
                    Title  = _testTitle
                };

                //add header
                ctx.Headers.Add(header);
                ctx.SaveChanges();

                var join = new PostTagEntity
                {
                    TagId  = tag1.Id,
                    PostId = header.Id
                };

                ctx.PostTags.Add(join);
                ctx.SaveChanges();
            }
        }
Example #5
0
        public async Task GetPostTest()
        {
            //Arrange
            var bodyId   = -1;
            var bodyText = TestConstants.GuidString;

            using (var ctx = new BlogContext(_opts))
            {
                var tags = new []
                {
                    new PostTagEntity {
                        Tag = new TagEntity {
                            Text = TestConstants.GuidString
                        }
                    },
                    new PostTagEntity {
                        Tag = new TagEntity {
                            Text = TestConstants.GuidString
                        }
                    }
                };
                var body = new PostBodyEntity {
                    Markdown = bodyText
                };
                var header = new PostHeaderEntity {
                    Title = TestConstants.GuidString, Body = body
                };
                foreach (var pt in tags)
                {
                    pt.Post = header;
                }

                await ctx.Headers.AddAsync(header);

                await ctx.SaveChangesAsync();

                bodyId = body.Id;
            }

            var accessor = new BlogAccessor(_opts);

            //Act
            var result = await accessor.GetPostById(bodyId);

            //Assert
            Assert.IsTrue(bodyId > 0, "Should be at least 1");
            Assert.IsNotNull(result, "Should never be null");
            Assert.IsInstanceOfType(result, typeof(Post));
            Assert.AreEqual(bodyText, result.Body, "Should contain the test body text");
        }
Example #6
0
        internal static PostHeader Convert(this PostHeaderEntity ent)
        {
            if (ent == null)
            {
                return(null);
            }

            return(new PostHeader
            {
                Id = ent.Id,
                BodyId = ent.BodyId,
                Title = ent.Title,
                Tags = ent.PostTags.Select(e => e.Tag).Convert()
            });
        }