public void AddRating(int diaryId, double rate, string username) { var user = this.UserManager.FindByNameAsync(username).GetAwaiter().GetResult(); var diary = this.Context.GetShreddedDiaries.Find(diaryId); bool rated = AlreadyRated(diary.Id, user.UserName); if (rated) { throw new InvalidOperationException(GlobalConstants.AlreadyRated); } var rating = new DiaryRating { Rating = rate, GetShreddedUserId = user.Id }; this.Context.DiaryRatings.Add(rating); var diaryRating = new GetShreddedRating { GetShreddedDiaryId = diaryId, DiaryRatingId = rating.Id }; this.Context.GetShreddedRatings.Add(diaryRating); diary.Ratings.Add(diaryRating); this.Context.Update(diary); this.Context.SaveChanges(); }
public void AddRatingShouldThrowExceptionIfAlreadyRatedIsTrue() { //arrange var diary = new GetShreddedDiary { Id = 1, User = null, Summary = "Summary", Title = "Title" }; var user = new GetShreddedUser { Id = "UserId", UserName = "******", }; var rating = new DiaryRating { Rating = 8, GetShreddedUserId = user.Id, Id = 1, GetShreddedUser = user }; var diaryRating = new GetShreddedRating { GetShreddedDiaryId = diary.Id, DiaryRatingId = rating.Id, GetShreddedDiary = diary, DiaryRating = rating }; var usermanager = this.Provider.GetRequiredService <UserManager <GetShreddedUser> >(); usermanager.CreateAsync(user).GetAwaiter(); this.Context.GetShreddedDiaries.Add(diary); this.Context.DiaryRatings.Add(rating); this.Context.GetShreddedRatings.Add(diaryRating); this.Context.SaveChanges(); //act var diaryService = GetService(); Action act = () => diaryService.AddRating(diary.Id, 1, user.UserName); //assert act.Should().Throw <InvalidOperationException>().WithMessage(GlobalConstants.AlreadyRated); }
public async Task AddRatingShouldAddRatingToADiary() { //arrange var diary = new GetShreddedDiary { Id = 1, User = null, Summary = "Summary", Title = "Title" }; var user = new GetShreddedUser { Id = "UserId", UserName = "******", }; var usermanager = this.Provider.GetRequiredService <UserManager <GetShreddedUser> >(); await usermanager.CreateAsync(user); this.Context.GetShreddedDiaries.Add(diary); this.Context.SaveChanges(); //act var diaryService = GetService(); diaryService.AddRating(diary.Id, 10, user.UserName); //assert var diaryRating = new GetShreddedRating { GetShreddedDiaryId = 1, DiaryRatingId = 1 }; var result = this.Context.GetShreddedRatings.FirstOrDefault(); result.Should().NotBeNull().And. Subject.Should() .BeOfType <GetShreddedRating>().And.Should() .BeEquivalentTo(diaryRating, opt => opt.ExcludingMissingMembers()); }