Exemplo n.º 1
0
        public static void EnsureSeedData(this BlogDbContext context, UserManager <IdentityUser> userManager)
        {
            var defaultUser = new IdentityUser
            {
                UserName = "******",
                Email    = "*****@*****.**"
            };

            if (!context.Users.AnyAsync().Result)
            {
                userManager.CreateAsync(defaultUser, "P@asW0rd").Wait();
                userManager.AddClaimsAsync(defaultUser, new []
                {
                    new Claim(ClaimTypes.Name, "Default"),
                    new Claim(ClaimTypes.Surname, "Author")
                }).Wait();
            }

            if (!context.Posts.AnyAsync().Result)
            {
                var inMemoryPostStore = new InMemoryPosts();
                var store             = new PostsSqlServerRepository(context);
                var result            = inMemoryPostStore.GetLatestApprovedPosts(0, 100).Result;
                var tags = result.Items.SelectMany(x => x.Tags);

                context.AddRange(tags.Select(tag => new TagEntity
                {
                    Name              = tag.Name,
                    Slug              = tag.Slugs.First().Path,
                    CreatedBy         = defaultUser,
                    CreationIpAddress = "127.0.0.1",
                    CreatedOnUtc      = DateTime.UtcNow
                }));

                context.SaveChanges();

                foreach (var post in result.Items)
                {
                    var newPostCommand = new CreatePostCommand(post.Title,
                                                               post.Abstract,
                                                               post.Content,
                                                               post.CreationRecord.IpAddress,
                                                               new CreatePostCommand.User {
                        Id = defaultUser.Id, Name = defaultUser.UserName
                    },
                                                               post.Tags.Select(x => x.Name).ToList().AsReadOnly(),
                                                               true);

                    store.CreatePost(newPostCommand).Wait();
                }
            }
        }
Exemplo n.º 2
0
        public async Task FindApprovedPostById_ShouldFindThePostWhenItExistsAndApproved()
        {
            using (var provider = BlogDbContextProvider.Create())
            {
                var postId           = Guid.NewGuid();
                var expectedTitle    = TestUtils.RandomString();
                var expectedAbstract = TestUtils.RandomString(40);

                using (var context = provider.CreateContext())
                {
                    const string ipAddress = "127.0.0.1";
                    string       userId    = Guid.NewGuid().ToString();
                    var          user      = new IdentityUser
                    {
                        Id       = userId,
                        UserName = TestUtils.RandomString(),
                        Email    = $"{TestUtils.RandomString()}@{TestUtils.RandomString()}.com"
                    };

                    var post = new PostEntity
                    {
                        Id                = postId,
                        Language          = "en-US",
                        Title             = expectedTitle,
                        Abstract          = expectedAbstract,
                        Content           = TestUtils.RandomString(200),
                        Format            = PostFormatEntity.PlainText,
                        CreatedBy         = user,
                        CreatedOnUtc      = DateTime.UtcNow,
                        CreationIpAddress = ipAddress,
                        Tags              = new Collection <PostTagEntity>((new[]
                        {
                            TestUtils.RandomString(),
                            TestUtils.RandomString()
                        }).Select(t => new PostTagEntity
                        {
                            Tag = new TagEntity
                            {
                                Name              = t,
                                Slug              = TestUtils.RandomString(),
                                CreatedBy         = user,
                                CreatedOnUtc      = DateTime.UtcNow,
                                CreationIpAddress = ipAddress
                            }
                        }).ToList())
                    };

                    await context.Users.AddAsync(user);

                    await context.Posts.AddAsync(post);

                    await context.SaveChangesAsync();
                }

                using (var context = provider.CreateContext())
                {
                    var store  = new PostsSqlServerRepository(context);
                    var result = await store.FindApprovedPostById(postId.ToString());

                    result.Match(
                        some =>
                    {
                        some.Switch(
                            found =>
                        {
                            var post = found;
                            Assert.Equal(postId.ToString(), post.Id);
                            Assert.Equal(expectedTitle, post.Title);
                            Assert.Equal(expectedAbstract, post.Abstract);
                        },

                            notApproved =>
                        {
                            Assert.True(false, $"Result shouldn't be {notApproved.GetType().ToString()}");
                        });
                    },
                        () =>
                    {
                        Assert.True(false, $"Result shouldn't be Option.None");
                    });
                }
            }
        }