@@ -63,10 +63,76 @@ public async Task Should_set_reply_as_answer_and_add_event()
6363
6464 var replyUpdated = await dbContext . Posts . Include ( x => x . Topic ) . FirstOrDefaultAsync ( x => x . Id == reply . Id ) ;
6565 var replyEvent = await dbContext . Events . FirstOrDefaultAsync ( x => x . TargetId == reply . Id ) ;
66+ var userUpdated = await dbContext . Users . FirstOrDefaultAsync ( x => x . Id == user . Id ) ;
6667
67- Assert . AreEqual ( true , replyUpdated . IsAnswer ) ;
68- Assert . AreEqual ( true , replyUpdated . Topic . HasAnswer ) ;
68+ Assert . True ( replyUpdated . IsAnswer ) ;
69+ Assert . True ( replyUpdated . Topic . HasAnswer ) ;
6970 Assert . NotNull ( replyEvent ) ;
71+ Assert . AreEqual ( 1 , userUpdated . AnswersCount ) ;
72+ }
73+ }
74+
75+ [ Test ]
76+ public async Task Should_set_topic_as_not_answered_and_add_event ( )
77+ {
78+ var options = Shared . CreateContextOptions ( ) ;
79+
80+ var siteId = Guid . NewGuid ( ) ;
81+ var categoryId = Guid . NewGuid ( ) ;
82+ var forumId = Guid . NewGuid ( ) ;
83+ var topicId = Guid . NewGuid ( ) ;
84+ var userId = Guid . NewGuid ( ) ;
85+
86+ var category = new Category ( categoryId , siteId , "Category" , 1 , Guid . NewGuid ( ) ) ;
87+ var forum = new Forum ( forumId , categoryId , "Forum" , "my-forum" , "My Forum" , 1 ) ;
88+ var topic = Post . CreateTopic ( topicId , forumId , Guid . NewGuid ( ) , "Title" , "slug" , "Content" , PostStatusType . Published ) ;
89+ var reply = Post . CreateReply ( Guid . NewGuid ( ) , topicId , forumId , userId , "Content" , PostStatusType . Published ) ;
90+ var user = new User ( userId , Guid . NewGuid ( ) . ToString ( ) , "Email" , "Display Name" ) ;
91+
92+ category . IncreaseRepliesCount ( ) ;
93+ forum . IncreaseRepliesCount ( ) ;
94+ topic . IncreaseRepliesCount ( ) ;
95+ user . IncreaseRepliesCount ( ) ;
96+
97+ reply . SetAsAnswer ( true ) ;
98+ topic . SetAsAnswered ( true ) ;
99+ user . IncreaseAnswersCount ( ) ;
100+
101+ using ( var dbContext = new AtlesDbContext ( options ) )
102+ {
103+ dbContext . Categories . Add ( category ) ;
104+ dbContext . Forums . Add ( forum ) ;
105+ dbContext . Posts . Add ( topic ) ;
106+ dbContext . Posts . Add ( reply ) ;
107+ dbContext . Users . Add ( user ) ;
108+ await dbContext . SaveChangesAsync ( ) ;
109+ }
110+
111+ using ( var dbContext = new AtlesDbContext ( options ) )
112+ {
113+ var command = new SetReplyAsAnswer
114+ {
115+ ReplyId = reply . Id ,
116+ SiteId = siteId ,
117+ ForumId = forumId ,
118+ TopicId = topicId ,
119+ IsAnswer = false
120+ } ;
121+
122+ var cacheManager = new Mock < ICacheManager > ( ) ;
123+
124+ var sut = new SetReplyAsAnswerHandler ( dbContext , cacheManager . Object ) ;
125+
126+ await sut . Handle ( command ) ;
127+
128+ var replyUpdated = await dbContext . Posts . Include ( x => x . Topic ) . FirstOrDefaultAsync ( x => x . Id == reply . Id ) ;
129+ var replyEvent = await dbContext . Events . FirstOrDefaultAsync ( x => x . TargetId == reply . Id ) ;
130+ var userUpdated = await dbContext . Users . FirstOrDefaultAsync ( x => x . Id == user . Id ) ;
131+
132+ Assert . False ( replyUpdated . IsAnswer ) ;
133+ Assert . False ( replyUpdated . Topic . HasAnswer ) ;
134+ Assert . NotNull ( replyEvent ) ;
135+ Assert . AreEqual ( 0 , userUpdated . AnswersCount ) ;
70136 }
71137 }
72138 }
0 commit comments