public void SimpleInput_Dash() { var slug = new Slug("a-c"); Assert.AreEqual("a-c", slug.GenerateSlug()); Assert.AreEqual("a-c", slug.GenerateSlug(true)); }
public void SimpleInput_LowerCase() { var slug = new Slug("aBc"); Assert.AreEqual("abc", slug.GenerateSlug()); Assert.AreEqual("abc", slug.GenerateSlug(true)); }
public void SimpleInput_SpecialChars(string input) { var slug = new Slug(input); Assert.AreEqual("jackjones", slug.GenerateSlug()); Assert.AreEqual("jackjones", slug.GenerateSlug(true)); }
public void OnlySpecialChars() { var slug = new Slug("!@#%!"); Assert.IsNull(slug.GenerateSlug()); Assert.IsTrue(Guid.TryParse(slug.GenerateSlug(true), out _)); }
public async Task <IActionResult> PutCategory([FromRoute] int id, [FromBody] CategoryViewModel source) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != source.CategoryId) { return(BadRequest()); } try { var category = await _categoryRepository.Find(id); category.Name = source.Name; category.IsActive = source.IsActive; category.Slug = Slug.GenerateSlug(source.Name); await _categoryRepository.Update(category); } catch (DbUpdateConcurrencyException) { if (!await _categoryRepository.Exists(id)) { return(NotFound()); } else { throw new ApiException(HttpStatusCode.BadRequest, "some thing went wrong with update! Please contact with your administrator"); } } return(NoContent()); }
public async Task <IActionResult> PostTopic() { var source = JsonConvert.DeserializeObject <PostTopicViewModel>(Request.Form["source"]); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (await _topicRepository.Exists(source.Title, source.LessonId)) { return(BadRequest(new { errors = "Already Exists" })); } Topic target = new Topic { Slug = Slug.GenerateSlug(source.Title), LessonId = source.LessonId, Title = source.Title, IsActive = source.IsActive, CreatedOn = DateTime.Now, RowId = Guid.NewGuid() }; var result = await _topicRepository.Add(target); await StoreToAzureTable(source, target); return(CreatedAtAction("getCategory", new { id = result.TopicId }, source)); }
public void NullList() { var slug = new Slug("a b"); slug.SetExistingSlugs(null); Assert.AreEqual("a-b", slug.GenerateSlug()); }
public ActionResult Edit(int id, Category c) { c.MetaLink = Slug.GenerateSlug(c.CategoryName); if (ModelState.IsValid) { try { if (_Category.Edit(c)) { TempData["msg"] = new ResponseMessage() { Type = "alert-success", Message = "Sửa Thành Công ID = " + c.CategoryId, }; return(RedirectToAction("Index")); } ModelState.AddModelError("", "Có Lỗi Trong Quá Trình Sửa Dữ Liệu"); return(View()); } catch { ModelState.AddModelError("", "Có Lỗi Trong Quá Trình Sửa Dữ Liệu"); return(View()); } } return(View()); }
public void EmptyList() { var slug = new Slug("a b"); slug.SetExistingSlugs(new List <string>()); Assert.AreEqual("a-b", slug.GenerateSlug()); }
public void string_to_slug_remain_CapitalLetters() { string input = "JohnDoe"; string actual = Slug.GenerateSlug(input); string expected = "JohnDoe"; Assert.AreEqual(expected, actual); }
public ActionResult Create([ModelBinder(typeof(CreateOrEditPostCustomDataBinder))] CreateOrEditPostModel model) { model.Post.UrlSlug = Slug.GenerateSlug(model.Post.Title); _postRepository.Add(model.Post); _blogRepository.AddPost(model.Blog.Id, model.Post); return(RedirectToAction("Details", "Blog")); }
public void string_to_slug_remove_polish_letters() { string input = "PawełSołtysiak"; string actual = Slug.GenerateSlug(input); string expected = "PaweSotysiak"; Assert.AreEqual(expected, actual); }
public void string_to_slug_replacing_spaces_with_underscores() { string input = "john doe"; string actual = Slug.GenerateSlug(input); string expected = "john_doe"; Assert.AreEqual(expected, actual); }
public void MatchingWrongCase() { var slug = new Slug("a b"); slug.SetExistingSlugs(new List <string> { "A-B" }); Assert.AreEqual("a-b-1", slug.GenerateSlug()); }
public void MatchingNumbered() { var slug = new Slug("a b"); slug.SetExistingSlugs(new List <string> { "a-b", "a-b-1", }); Assert.AreEqual("a-b-2", slug.GenerateSlug()); }
public void NotMatching() { var slug = new Slug("a b"); slug.SetExistingSlugs(new List <string> { "a-c", "c-a" }); Assert.AreEqual("a-b", slug.GenerateSlug()); }
public ActionResult Create([Bind(Include = "Id,Title")] Blog blog) { if (ModelState.IsValid) { blog.UrlSlug = Slug.GenerateSlug(blog.Title); var user = _userRepository.FindByUserName(User.Identity.Name); _blogRepository.AddToUser(blog, user); return(RedirectToAction("Details", new { blogSlug = blog.UrlSlug })); } return(View(blog)); }
public ActionResult Create(Product p) { p.CreateDate = DateTime.Now; string url = Slug.GenerateSlug(p.ProductName); p.MetaLink = url; p.CoutView = 0; ViewBag.ProviderId = new SelectList(_Provider.GetAll(), "ProviderId", "ProviderName"); ViewBag.CatPro = _Category.GetAll(); ViewBag.Color = _Color.GetAll(); ViewBag.Size = _Size.GetAll(); ViewBag.Attribute = _Attribute.GetAll(); ViewBag.AttrTypes = _Attr.GetAll().AsQueryable().Include(x => x.Attributes).AsEnumerable(); if (p.CategoryProducts != null) { p.CategoryProducts.ToList().ForEach(x => x.ProductId = p.ProductId); } if (p.ProductSizes != null) { p.ProductSizes.ToList().ForEach(x => x.ProductId = p.ProductId); } if (p.ProductColors != null) { p.ProductColors.ToList().ForEach(x => x.ProductId = p.ProductId); } if (p.ProductAttributes != null) { p.ProductAttributes.ToList().ForEach(x => x.ProductId = p.ProductId); } if (ModelState.IsValid) { if (_Product.GetAll().Any(x => x.ProductName.ToLower().Equals(p.ProductName.ToLower()))) { ModelState.AddModelError("", "Tên Này Đã Tồn Tại !"); return(View()); } if (_Product.Add(p)) { TempData["msg"] = new ResponseMessage() { Type = "alert-success", Message = "Thêm Thành Công Sản Phẩm Có ID = " + p.ProductId, }; return(RedirectToAction("index")); } ModelState.AddModelError("", "Có Lỗi Trong Quá Trình Thêm Mới"); return(View()); } return(View()); }
public async Task <IActionResult> PutTopic([FromRoute] int id) { var source = JsonConvert.DeserializeObject <PostTopicViewModel>(Request.Form["source"]); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != source.TopicId) { return(BadRequest()); } var target = await _topicRepository.Find(id); target.Slug = Slug.GenerateSlug(source.Title); target.LessonId = source.LessonId; target.IsActive = source.IsActive; target.Title = source.Title; if (target == null) { return(NotFound()); } try { await _topicRepository.Update(target); } catch (DbUpdateConcurrencyException) { if (!await _topicRepository.Exists(id)) { return(NotFound()); } else { throw; } } if (target != null) { await StoreToAzureTable(source, target); } return(NoContent()); }
public async Task <IActionResult> PutCourse([FromRoute] int id, [FromBody] PostCourseViewModel source) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != source.CourseId) { return(BadRequest()); } var course = await _courseRepository.Find(id); if (course == null) { return(NotFound()); } try { course.Slug = Slug.GenerateSlug(source.Name); course.CategoryId = source.CategoryId; course.Name = source.Name; course.IsActive = source.IsActive; await _courseRepository.Update(course); } catch (DbUpdateConcurrencyException) { if (!await _courseRepository.Exists(id)) { return(NotFound()); } else { throw new ApiException(HttpStatusCode.BadRequest, "some thing went wrong with update!"); } } await StorageHelper.InsertOrMerge(course.RowId.ToString(), course.CourseId.ToString(), source.Description); return(NoContent()); }
public async Task <IActionResult> PutLesson([FromRoute] int id, [FromBody] PostLessonViewModel source) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != source.LessonId) { return(BadRequest()); } var lesson = await _lessonRepository.Find(id); if (lesson == null) { return(NotFound()); } lesson.Slug = Slug.GenerateSlug(source.Name); lesson.CourseId = source.CourseId; lesson.SortOrder = source.SortOrder; lesson.Name = source.Name; lesson.IsActive = source.IsActive; try { await _lessonRepository.Update(lesson); } catch (DbUpdateConcurrencyException) { if (!await _lessonRepository.Exists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <IActionResult> PostLesson([FromBody] PostLessonViewModel source) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } //if (await _lessonRepository.Exists(source.Name)) //{ // return BadRequest(new { errors = "Already Exists" }); //} var result = await _lessonRepository.Add(new Lesson { Slug = Slug.GenerateSlug(source.Name), CourseId = source.CourseId, Name = source.Name, IsActive = source.IsActive, SortOrder = source.SortOrder }); return(CreatedAtAction("getLesson", new { id = result.LessonId }, source)); }
public async Task <IActionResult> PostCourse([FromBody] PostCourseViewModel source) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (await _courseRepository.Exists(source.Name)) { return(BadRequest(new { errors = "Already Exists" })); } var target = await _courseRepository.Add(new Course { CategoryId = source.CategoryId, Slug = Slug.GenerateSlug(source.Name), Name = source.Name, IsActive = source.IsActive, }); await StorageHelper.InsertOrMerge(target.RowId.ToString(), target.CourseId.ToString(), source.Description); return(CreatedAtAction("getCourse", new { id = target.CourseId }, source)); }
public ActionResult Create([ModelBinder(typeof(CreateOrEditPostCustomDataBinder))] CreateOrEditPostModel model) { if (string.IsNullOrWhiteSpace(model.Post.Title)) { ModelState.AddModelError("Post.Title", "You must specify a title."); } if (string.IsNullOrWhiteSpace(model.Post.Content)) { ModelState.AddModelError("Post.Content", "You must specify a content."); } if (!ModelState.IsValid) { return(View()); } model.Post.UrlSlug = Slug.GenerateSlug(model.Post.Title); _postRepository.Add(model.Post); _blogRepository.AddPost(model.Blog.Id, model.Post); return(RedirectToAction("Details", "Blog")); }
public ActionResult Create(Category c) { c.MetaLink = Slug.GenerateSlug(c.CategoryName); if (ModelState.IsValid) { if (_Category.GetAll().Any(x => x.CategoryName.ToLower().Equals(c.CategoryName.ToLower()))) { ModelState.AddModelError("", "Tên Này Đã Tồn Tại !"); return(View()); } if (_Category.Add(c)) { TempData["msg"] = new ResponseMessage() { Type = "alert-success", Message = "Thêm Thành Công ID = " + c.CategoryId, }; return(RedirectToAction("index")); } ModelState.AddModelError("", "Có Lỗi Trong Quá Trình Thêm Mới"); return(View()); } return(View()); }
public void MaxLength() { var slug = new Slug("abcdefgh", 2); Assert.AreEqual("ab", slug.GenerateSlug()); }
protected override void Seed(PSBlogContext context) { Role administrator = new Role() { Name = Settings.Default.SuperAdminRole, }; context.Roles.Add(administrator); User admin = new User { UserName = Settings.Default.SuperAdminName, Password = SHA.CreateSHA1Hash("milk"), Roles = new List <Role>() { administrator } }; context.Users.Add(admin); User normalUser = new User { UserName = "******", Password = SHA.CreateSHA1Hash("milk"), }; context.Users.Add(normalUser); Tag tag = new Tag() { Name = "mytag" }; context.Tags.Add(tag); Comment comment1 = new Comment() { Content = "Comment#1", User = admin }; Comment comment2 = new Comment() { Content = "Comment#2", User = normalUser }; context.Comments.Add(comment1); context.Comments.Add(comment2); string paragraph1 = string.Format("<p>{0}</p>", Ipsum.GetPhrase(50)); string paragraph2 = string.Format("<p>{0}</p>", Ipsum.GetPhrase(75)); Post post = new Post { Title = "Hello, World", Content = paragraph1 + paragraph2, DatePosted = DateTime.Now, Tags = new List <Tag> { tag }, Comments = new List <Comment> { comment1, comment2 } }; post.UrlSlug = Slug.GenerateSlug(post.Title); context.Posts.Add(post); Blog defaultBlog = new Blog { Title = "I <3 Blogs", Owner = admin, Posts = new List <Post> { post } }; defaultBlog.UrlSlug = Slug.GenerateSlug(defaultBlog.Title); context.Blogs.Add(defaultBlog); context.SaveChanges(); }
public async Task <IActionResult> PostCategory([FromBody] CategoryViewModel source) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (await _categoryRepository.Exists(source.Name)) { return(BadRequest(new { errors = "Already Exists" })); } var result = await _categoryRepository.Add(new Category { Name = source.Name, IsActive = source.IsActive, Slug = Slug.GenerateSlug(source.Name) }); return(CreatedAtAction("getCategory", new { id = result.CategoryId }, source)); }
public ActionResult Edit(int id, Product p) { ViewBag.ProviderId = new SelectList(_Provider.GetAll(), "ProviderId", "ProviderName"); ViewBag.CatPro = _Category.GetAll(); ViewBag.Color = _Color.GetAll(); ViewBag.Size = _Size.GetAll(); ViewBag.Attribute = _Attribute.GetAll(); ViewBag.CatProduct = _CategoryProduct.GetBy(x => x.ProductId == id); ViewBag.AttrTypes = _Attr.GetAll().AsQueryable().Include(x => x.Attributes).AsEnumerable(); if (p.CategoryProducts != null) { _CategoryProduct.RemoveRange(_CategoryProduct.GetBy(x => x.ProductId == p.ProductId)); p.CategoryProducts.ToList().ForEach(x => x.ProductId = p.ProductId); _CategoryProduct.AddRange(p.CategoryProducts); } if (p.ProductColors != null) { _proColor.RemoveRange(_proColor.GetBy(x => x.ProductId == p.ProductId)); p.ProductColors.ToList().ForEach(x => x.ProductId = p.ProductId); _proColor.AddRange(p.ProductColors); } if (p.ProductSizes != null) { _proSize.RemoveRange(_proSize.GetBy(x => x.ProductId == p.ProductId)); p.ProductSizes.ToList().ForEach(x => x.ProductId = p.ProductId); _proSize.AddRange(p.ProductSizes); } if (p.ProductAttributes != null) { _proAtt.RemoveRange(_proAtt.GetBy(x => x.ProductId == p.ProductId)); p.ProductAttributes.ToList().ForEach(x => x.ProductId = p.ProductId); _proAtt.AddRange(p.ProductAttributes); } if (ModelState.IsValid) { p.CreateDate = DateTime.Now; string url = Slug.GenerateSlug(p.ProductName); p.MetaLink = url; p.CoutView = 1; try { if (_Product.Edit(p)) { return(RedirectToAction("Index")); } ViewBag.getCatPro = _Product.GetAll().AsQueryable().Include(x => x.CategoryProducts).FirstOrDefault(x => x.ProductId == id); ViewBag.getProColor = _Product.GetAll().AsQueryable().Include(x => x.ProductColors).FirstOrDefault(x => x.ProductId == id); ViewBag.getProSize = _Product.GetAll().AsQueryable().Include(x => x.ProductSizes).FirstOrDefault(x => x.ProductId == id); ModelState.AddModelError("", "Lỗi trong quá trình sửa"); return(View(p)); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); ViewBag.getCatPro = _Product.GetAll().AsQueryable().Include(x => x.CategoryProducts).FirstOrDefault(x => x.ProductId == id); ViewBag.getProColor = _Product.GetAll().AsQueryable().Include(x => x.ProductColors).FirstOrDefault(x => x.ProductId == id); ViewBag.getProSize = _Product.GetAll().AsQueryable().Include(x => x.ProductSizes).FirstOrDefault(x => x.ProductId == id); return(View(p)); } } return(View(p)); }