Ejemplo n.º 1
0
        public async Task GivenSubscriptionToItCrowd_WhenReviewGetsSubmitted_ThenReceivedTheRatingViaSignalR()
        {
            var ratingToSubmit = new AddRating
            {
                User  = "******",
                Stars = 5
            };

            await GivenSubscription();

            AddRating receivedRating = null;
            var       ratingReceived = new AutoResetEvent(false);

            _signalRConnection.On <AddRating>("NewRatingArrived", newRating =>
            {
                _testOutputHelper.WriteLine($"{newRating.User} rated {newRating.Stars}");
                receivedRating = newRating;
                ratingReceived.Set();
            });

            await _httpClient.PostAsJsonAsync($"api/reviews/{MovieId}/ratings", ratingToSubmit);


            ratingReceived.WaitOne(TimeSpan.FromSeconds(2));
            receivedRating.Should().BeEquivalentTo(ratingToSubmit);
        }
Ejemplo n.º 2
0
        private void ShowAddDialog()
        {
            AddRating          nxtview = view.CreateAddRatingDlg();
            AddRatingPresenter nxtprs  = new AddRatingPresenter(nxtview);

            nxtview.StartPosition = FormStartPosition.CenterParent;
            view.HideView();
            nxtprs.ShowAsDialog();
        }
Ejemplo n.º 3
0
 public IActionResult AddRating(AddRating model)
 {
     if (ModelState.IsValid)
     {
         model.UserId = userService.GetUserId();
         if (ratingManager.AddRating(model))
         {
             return(RedirectToAction("Index", "Posts"));
         }
     }
     return(RedirectToAction("Index", "Posts"));
 }
Ejemplo n.º 4
0
        public bool AddRating(AddRating model)
        {
            var ratings = db.Ratings.Include(u => u.UIDs).Where(pid => pid.PostId == model.PostId).FirstOrDefault();

            if (ratings == null)
            {
                Rating l = new Rating();
                l.PostId = model.PostId;
                RUID uID = new RUID();
                uID.U_ID = model.UserId;
                l.UIDs.Add(uID);

                l.TotalRating   = model.RatingValue;
                l.AverageRating = model.RatingValue;
                return(base.Add(l));
            }

            foreach (var u in ratings.UIDs)
            {
                if (u.U_ID == model.UserId)
                {
                    return(false);
                }
            }

            RUID ID = new RUID();

            ID.U_ID = model.UserId;
            ratings.UIDs.Add(ID);
            ratings.TotalRating = ratings.TotalRating + model.RatingValue;
            double avg      = (double)ratings.TotalRating / ratings.UIDs.Count;
            double avgValue = Math.Round(avg, 1);

            ratings.AverageRating = avgValue;

            return(base.Update(ratings));
        }
Ejemplo n.º 5
0
        public async void TestAddRatingAsync()
        {
            AddRating       req;
            Request         req2;
            RecombeeBinding resp;

            // it 'does not fail with cascadeCreate'
            req = new AddRating("u_id", "i_id", 1, cascadeCreate: true, additionalData: new Dictionary <string, object>()
            {
                { "answer", 42 }
            });
            resp = await client.SendAsync(req);

            // it 'does not fail with existing item and user'
            req  = new AddRating("entity_id", "entity_id", 0);
            resp = await client.SendAsync(req);

            // it 'fails with nonexisting item id'
            req = new AddRating("entity_id", "nonex_id", -1);
            try
            {
                await client.SendAsync(req);

                Assert.True(false, "No exception thrown");
            }
            catch (ResponseException ex)
            {
                Assert.Equal(404, (int)ex.StatusCode);
            }
            // it 'fails with nonexisting user id'
            req = new AddRating("nonex_id", "entity_id", 0.5);
            try
            {
                await client.SendAsync(req);

                Assert.True(false, "No exception thrown");
            }
            catch (ResponseException ex)
            {
                Assert.Equal(404, (int)ex.StatusCode);
            }
            // it 'fails with invalid time'
            req = new AddRating("entity_id", "entity_id", 0, timestamp: UnixTimeStampToDateTime(-15));
            try
            {
                await client.SendAsync(req);

                Assert.True(false, "No exception thrown");
            }
            catch (ResponseException ex)
            {
                Assert.Equal(400, (int)ex.StatusCode);
            }
            // it 'fails with invalid rating'
            req = new AddRating("entity_id", "entity_id", -2);
            try
            {
                await client.SendAsync(req);

                Assert.True(false, "No exception thrown");
            }
            catch (ResponseException ex)
            {
                Assert.Equal(400, (int)ex.StatusCode);
            }
            // it 'really stores interaction to the system'
            req  = new AddRating("u_id", "i_id", 0.3, cascadeCreate: true, timestamp: UnixTimeStampToDateTime(5));
            resp = await client.SendAsync(req);

            try
            {
                await client.SendAsync(req);

                Assert.True(false, "No exception thrown");
            }
            catch (ResponseException ex)
            {
                Assert.Equal(409, (int)ex.StatusCode);
            }
        }
Ejemplo n.º 6
0
 public bool AddRating(AddRating model)
 {
     return(ratingRepository.AddRating(model));
 }