示例#1
0
        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());
        }