public void All_ReturnsAllItems() { //Arrange var expectedItemCount = dbContext.Blogs.Count(); //Act var items = repository.All(); //Assert Assert.NotNull(items); Assert.NotEmpty(items); Assert.Equal(expectedItemCount, items.ToList().Count); }
public async Task CanDoCrudOnBlogs() { var allBlogs = await _db.All(); var cnt = allBlogs.Count; // add var blog = new Blog { Title = "blog1", Description = "blog one" }; await _db.Add(blog); allBlogs = await _db.All(); Assert.Equal(allBlogs.Count, cnt + 1); var blogs = await _db.Find(b => b.Title == "blog1"); var added = blogs.FirstOrDefault(); Assert.NotNull(added); Assert.True(added.Id > 0); // update added.Description = "blog one updated"; await _db.Update(added); blogs = await _db.Find(b => b.Title == "blog1"); added = blogs.FirstOrDefault(); Assert.Equal(added.Description, "blog one updated"); // delete await _db.Delete(added.Id); allBlogs = await _db.All(); Assert.Equal(allBlogs.Count, cnt); }
public TagCount[] GetCount() { return(_blogRepository.All <TagCountEntity>().Select(AutoMapper.Mapper.Map <TagCountEntity, TagCount>).ToArray()); }
public ServiceResult <string> Save(BlogEntryModel entryModel) { if (entryModel == null) { throw new ArgumentNullException("entryModel"); } entryModel.RebuildTagsFromString(); BlogEntry entry = null; if (!Exists(entryModel.Slug)) { entry = new BlogEntry { Slug = entryModel.Title.ToUrlSlug(), DateCreated = DateTime.Now }; if (Exists(entry.Slug)) { return(ServiceResult <string> .Error("Sorry, a post with that slug already exists.")); } } else { entry = AutoMapper.Mapper.Map <BlogEntryEntity, BlogEntry>(_blogRepository.Single <BlogEntryEntity>(b => b.Slug == entryModel.Slug)); entry.DateCreated = DateTime.ParseExact(entryModel.Date, DateSettings.DateStringFormat(), Thread.CurrentThread.CurrentCulture); var slugChanged = !string.Equals(entryModel.Slug, entryModel.NewSlug, StringComparison.InvariantCultureIgnoreCase) && !string.IsNullOrWhiteSpace(entryModel.NewSlug); if (slugChanged) { if (Exists(entryModel.NewSlug)) { return(ServiceResult <string> .Error("Sorry, a post with that slug already exists.")); } //delete current one as slug is the ID will create / save a new one. Delete(entryModel.Slug); entry.Slug = entryModel.NewSlug.ToLowerInvariant(); } } if (!IsValidSlug(entry.Slug)) { return(ServiceResult <string> .Error("That's not a valid slug. Only letters, numbers and hypens are allowed.")); } entry.Title = entryModel.Title; entry.Markdown = entryModel.Markdown; entry.Summary = CreateSummary(entryModel.Markdown); entry.IsPublished = entryModel.IsPublished; entry.IsCodePrettified = entryModel.IsCodePrettified; entry.Author = _blogUserService.FindByName(_currentUserService.GetUserName()).DisplayName; //update all the tags. var tags = _blogRepository.All <TagEntity>().ToArray(); var distinctTags = entryModel.Tags.Distinct(); var trimmedTags = distinctTags.Select(t => t.Trim().ToLowerInvariant()).ToArray(); var matchedTags = tags.Where(t => trimmedTags.Contains(t.Name.ToLowerInvariant())).ToArray(); var newTags = trimmedTags.Where(t => tags.All(tag => tag.Name.ToLowerInvariant() != t)) .Select(t => new TagEntity { Id = 0, Name = t }).ToArray(); //ensure new tags are added to the list of known tags. foreach (var newTag in newTags) { _blogRepository.Add(newTag); } var actualTags = newTags.Union(matchedTags); var entryEntity = AutoMapper.Mapper.Map <BlogEntry, BlogEntryEntity>(entry); entryEntity.Tags.Clear(); entryEntity.Tags.AddRange(actualTags); _blogRepository.Save(entryEntity, b => b.Slug == entry.Slug); _blogTagService.RemoveUnsedTags(); _blogTagService.UpdateTagCount(); return(ServiceResult <string> .Success(entry.Slug)); }
public async Task <ActionResult> Get() { return(Json(await _db.All())); }