public ActionResult AdminReply(Reply reply) { ReplyRepository repoRep = new ReplyRepository(); reply.User_ID = 1; repoRep.Insert(reply); return(Redirect("~/Home/Details" + reply.Article_ID)); }
public async Task Delete_ReplyNotFound_DoesNotAttemptToDeleteReply() { A.CallTo(() => ReplyRepository.Read(1)).Returns(null as Reply); await ReplyService.Delete(1); A.CallTo(() => ReplyRepository.Delete(A <Reply> .Ignored)) .MustNotHaveHappened(); }
public async Task Read_EverythingOk_ReturnsReply() { var reply = new Reply(); A.CallTo(() => ReplyRepository.Read(1)).Returns(reply); var response = await ReplyService.Read(1); Assert.Equal(reply, response); }
public IHttpActionResult Delete(int id) { ReplyRepository r = new ReplyRepository(); var replist = con.Replies.Where(x => x.ComID == id).ToList(); foreach (var x in replist) { r.Delete(x.ReplyId); } cr.Delete(id); return(StatusCode(HttpStatusCode.NoContent)); }
public async Task Delete_Unauthorized_DoesNotAttemptToDeleteReply() { var reply = new Reply(); A.CallTo(() => ReplyRepository.Read(1)).Returns(reply); A.CallTo(() => User.Is(reply.UserId)).Returns(false); await ReplyService.Delete(1); A.CallTo(() => ReplyRepository.Delete(A <Reply> .Ignored)) .MustNotHaveHappened(); }
public async Task Delete_EverythingOk_DeletesReply() { var reply = new Reply(); A.CallTo(() => ReplyRepository.Read(1)).Returns(reply); A.CallTo(() => User.Is(reply.UserId)).Returns(true); await ReplyService.Delete(1); A.CallTo(() => ReplyRepository.Delete(reply)) .MustHaveHappenedOnceExactly(); }
public async Task List_ReturnsAll() { var replies = new List <Reply> { new Reply { Id = 1 }, new Reply { Id = 2 } }; A.CallTo(() => ReplyRepository.List(1)).Returns(replies); var response = await ReplyService.List(1); Assert.Equal(2, response.Count); }
public async Task Create_PostDoesNotExist_DoesNotCreateReply() { var create = new CreateReply(); var reply = new Reply { Content = "Content" }; const string userId = "User id"; A.CallTo(() => Mapper.Map <Reply>(create)).Returns(reply); A.CallTo(() => User.Exists()).Returns(true); A.CallTo(() => PostService.Read(1)).Returns(null as Post); A.CallTo(() => User.Id()).Returns(userId); var response = await ReplyService.Create(1, create); Assert.Null(response); A.CallTo(() => ReplyRepository.Create(A <Reply> .Ignored)) .MustNotHaveHappened(); }
public async Task Create_Unauthenticated_DoesNotCreateReply() { var create = new CreateReply(); var reply = new Reply { Content = "Content" }; var post = new Post { Id = 1 }; A.CallTo(() => Mapper.Map <Reply>(create)).Returns(reply); A.CallTo(() => User.Exists()).Returns(false); A.CallTo(() => PostService.Read(1)).Returns(post); var response = await ReplyService.Create(1, create); Assert.Null(response); A.CallTo(() => ReplyRepository.Create(A <Reply> .Ignored)) .MustNotHaveHappened(); }
public async Task Update_UserDoesNotOwnReply_DoesNotAttemptUpdate() { var oldReply = new Reply { Id = 1 }; var update = new UpdateReply(); var reply = new Reply { Id = 1, Content = "hello" }; A.CallTo(() => ReplyRepository.Read(1)).Returns(oldReply); A.CallTo(() => Mapper.Map(update, oldReply)).Returns(reply); A.CallTo(() => User.Is(oldReply.UserId)).Returns(false); await ReplyService.Update(oldReply.Id, update); A.CallTo(() => ReplyRepository.Update(A <Reply> .Ignored)) .MustNotHaveHappened(); }
public async Task Update_EverythingOk_UpdatesReply() { var oldReply = new Reply { Id = 1 }; var update = new UpdateReply(); var reply = new Reply { Id = 1, Content = "hello" }; A.CallTo(() => ReplyRepository.Read(1)).Returns(oldReply); A.CallTo(() => Mapper.Map(update, oldReply)).Returns(reply); A.CallTo(() => User.Is(oldReply.UserId)).Returns(true); await ReplyService.Update(oldReply.Id, update); A.CallTo(() => ReplyRepository.Update(A <Reply> .That.Matches(r => r.Id == reply.Id && r.Content == reply.Content ))).MustHaveHappenedOnceExactly(); }
public async Task Create_EverythingOk_CreatesReply() { const string userId = "User id"; var create = new CreateReply(); var reply = new Reply { Content = "Content" }; var post = new Post { Id = 1 }; A.CallTo(() => User.Exists()).Returns(true); A.CallTo(() => Mapper.Map <Reply>(create)).Returns(reply); A.CallTo(() => User.Id()).Returns(userId); A.CallTo(() => PostService.Read(1)).Returns(post); await ReplyService.Create(1, create); A.CallTo(() => ReplyRepository.Create(A <Reply> .That.Matches(r => r.Content == reply.Content && r.UserId == userId && r.Post.Id == post.Id ))).MustHaveHappenedOnceExactly(); }
public ReplyController(ReplyRepository replyRepository, NotificationsIOSRepository _notifications) { this._replyRepository = replyRepository; this._notifications = _notifications; }
private string GetResponseForText(Account currentAccount, Dictionary<string, string> dicParams) { if (!dicParams.ContainsKey("ToUserName")) throw new Exception("没有获取到ToUserName"); if (!dicParams.ContainsKey("FromUserName")) throw new Exception("没有获取到FromUserName"); if (!dicParams.ContainsKey("Content")) throw new Exception("没有获取到Content"); var replyRepository = new ReplyRepository(); Reply reply = replyRepository.GetReply(currentAccount.ID, dicParams["Content"], EnumKeyType.Keyword); BaseReply returnReply; switch (reply.Message.Type) { case (int)EnumReplyType.TextReply: returnReply = new TextReply { Content = reply.Message.Content }; break; case (int)EnumReplyType.ArticleReply: returnReply = new ArticleReply { Articles = JsonConvert.DeserializeObject<List<ArticleReplyItem>>(reply.Message.Content) }; break; default: return null; } returnReply.FromUserName = dicParams["ToUserName"]; returnReply.ToUserName = dicParams["FromUserName"]; return returnReply.GetXmlString(); }
public QuestionsController(QuestionRepository questionRepository, ReplyRepository replyRepository) { _questionRepository = questionRepository; _replyRepository = replyRepository; }
public async Task ReplyRepositoryAllMethodTest() { #region [0] DbContextOptions<T> Object Creation and ILoggerFactory Object Creation //[0] DbContextOptions<T> Object Creation and ILoggerFactory Object Creation var options = new DbContextOptionsBuilder <ReplyAppDbContext>() .UseInMemoryDatabase(databaseName: $"ReplyApp{Guid.NewGuid()}").Options; //.UseSqlServer("server=(localdb)\\mssqllocaldb;database=ReplyApp;integrated security=true;").Options; var serviceProvider = new ServiceCollection().AddLogging().BuildServiceProvider(); var factory = serviceProvider.GetService <ILoggerFactory>(); #endregion #region [1] AddAsync() Method Test //[1] AddAsync() Method Test //[1][1] Repository 클래스를 사용하여 저장 using (var context = new ReplyAppDbContext(options)) { context.Database.EnsureCreated(); // 데이터베이스가 만들어져 있는지 확인 //[A] Arrange: 1번 데이터를 아래 항목으로 저장합니다. var repository = new ReplyRepository(context, factory); var model = new Reply { Name = "[1] 관리자", Title = "Q&A입니다.", Content = "내용입니다.", ParentId = 1, ParentKey = "1" }; //[B] Act: AddAsync() 메서드 테스트 await repository.AddAsync(model); // Id: 1 } //[1][2] DbContext 클래스를 통해서 개수 및 레코드 확인 using (var context = new ReplyAppDbContext(options)) { //[C] Assert: 현재 총 데이터 개수가 1개인 것과, 1번 데이터의 이름이 "[1] 관리자"인지 확인합니다. Assert.AreEqual(1, await context.Replys.CountAsync()); var model = await context.Replys.Where(n => n.Id == 1).SingleOrDefaultAsync(); Assert.AreEqual("[1] 관리자", model.Name); } #endregion #region [2] GetAllAsync() Method Test //[2] GetAllAsync() Method Test using (var context = new ReplyAppDbContext(options)) { // 트랜잭션 관련 코드는 InMemoryDatabase 공급자에서는 지원 X // using (var transaction = context.Database.BeginTransaction()) { transaction.Commit(); } //[A] Arrange var repository = new ReplyRepository(context, factory); var model = new Reply { Name = "[2] 홍길동", Title = "Q&A입니다.", Content = "내용입니다." }; //[B] Act await repository.AddAsync(model); // Id: 2 await repository.AddAsync(new Reply { Name = "[3] 백두산", Title = "Q&A입니다.", ParentId = 3, ParentKey = "1" }); // Id: 3 } using (var context = new ReplyAppDbContext(options)) { //[C] Assert var repository = new ReplyRepository(context, factory); var models = await repository.GetAllAsync(); Assert.AreEqual(3, models.Count()); // TotalRecords: 3 } #endregion #region [3] GetByIdAsync() Method Test //[3] GetByIdAsync() Method Test using (var context = new ReplyAppDbContext(options)) { // Empty } using (var context = new ReplyAppDbContext(options)) { var repository = new ReplyRepository(context, factory); var model = await repository.GetByIdAsync(2); Assert.IsTrue(model.Name.Contains("길동")); Assert.AreEqual("[2] 홍길동", model.Name); } #endregion #region [4] EditAsync() Method Test //[4] EditAsync() Method Test using (var context = new ReplyAppDbContext(options)) { // Empty } using (var context = new ReplyAppDbContext(options)) { var repository = new ReplyRepository(context, factory); var model = await repository.GetByIdAsync(2); model.Name = "[2] 임꺽정"; // Modified await repository.EditAsync(model); var updateModel = await repository.GetByIdAsync(2); Assert.IsTrue(updateModel.Name.Contains("꺽정")); Assert.AreEqual("[2] 임꺽정", updateModel.Name); Assert.AreEqual("[2] 임꺽정", (await context.Replys.Where(m => m.Id == 2).SingleOrDefaultAsync())?.Name); } #endregion #region [5] DeleteAsync() Method Test //[5] DeleteAsync() Method Test using (var context = new ReplyAppDbContext(options)) { // Empty } using (var context = new ReplyAppDbContext(options)) { var repository = new ReplyRepository(context, factory); await repository.DeleteAsync(2); Assert.AreEqual(2, (await context.Replys.CountAsync())); Assert.IsNull(await repository.GetByIdAsync(2)); } #endregion #region [6] GetAllAsync(PagingAsync)() Method Test //[6] GetAllAsync(PagingAsync)() Method Test using (var context = new ReplyAppDbContext(options)) { // Empty } using (var context = new ReplyAppDbContext(options)) { int pageIndex = 0; int pageSize = 1; var repository = new ReplyRepository(context, factory); var noticesSet = await repository.GetAllAsync(pageIndex, pageSize); var firstName = noticesSet.Records.FirstOrDefault()?.Name; var recordCount = noticesSet.TotalRecords; Assert.AreEqual("[3] 백두산", firstName); Assert.AreEqual(2, recordCount); } #endregion #region [7] GetStatus() Method Test //[7] GetStatus() Method Test using (var context = new ReplyAppDbContext(options)) { int parentId = 1; var no1 = await context.Replys.Where(m => m.Id == 1).SingleOrDefaultAsync(); no1.ParentId = parentId; no1.IsPinned = true; // Pinned context.Entry(no1).State = EntityState.Modified; context.SaveChanges(); var repository = new ReplyRepository(context, factory); var r = await repository.GetStatus(parentId); Assert.AreEqual(1, r.Item1); // Pinned Count == 1 } #endregion #region [8] GetArticles() Method Test //[8] GetArticles() Method Test using (var context = new ReplyAppDbContext(options)) { var repository = new ReplyRepository(context, factory); //var articleSet = await repository.GetArticles<int>(0, 10, "", "", "", 0); // [3] 백두산, [1] 관리자 //var articleSet = await repository.GetArticles<int>(0, 10, "", "두", "", 0); // [3] 백두산 //var articleSet = await repository.GetArticles<int>(0, 10, "", "", "Name", 0); // [1] 관리자, [3] 백두산 //var articleSet = await repository.GetArticles<int>(0, 10, "", "", "TitleDesc", 0); // Q&A, Q&A //var articleSet = await repository.GetArticles<int>(0, 10, "", "", "Title", 0); // Q&A, Q&A //var articleSet = await repository.GetArticles<int>(0, 10, "", "", "TitleDesc", 1); // Q&A var articleSet = await repository.GetArticlesAsync <string>(0, 10, "", "", "TitleDesc", "1"); // 자, 공 foreach (var item in articleSet.Items) { Console.WriteLine($"{item.Name} - {item.Title}"); } } #endregion //#region [9] AddRange() Method Test ////[9] AddRange() Method Test //using (var context = new ReplyAppDbContext(options)) //{ // var repository = new ReplyRepository(context, factory); // var reply1 = new Reply { Name = "답변 1", }; // var reply2 = new Reply { Name = "답변 2", }; // var reply3 = new Reply { Name = "답변 3", }; // var reply4 = new Reply { Name = "답변 4", }; // context.Replys.AddRange(reply1, reply2, reply3, reply4); // context.SaveChanges(); // var replys = await repository.GetArticles<int>(0, 10, "Name", "답변 ", "", 0); // Assert.AreEqual(4, replys.Items.Count()); //} //#endregion }