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(); } } }
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"); }); } } }