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); }
private void ShowAddDialog() { AddRating nxtview = view.CreateAddRatingDlg(); AddRatingPresenter nxtprs = new AddRatingPresenter(nxtview); nxtview.StartPosition = FormStartPosition.CenterParent; view.HideView(); nxtprs.ShowAsDialog(); }
public IActionResult AddRating(AddRating model) { if (ModelState.IsValid) { model.UserId = userService.GetUserId(); if (ratingManager.AddRating(model)) { return(RedirectToAction("Index", "Posts")); } } return(RedirectToAction("Index", "Posts")); }
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)); }
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); } }
public bool AddRating(AddRating model) { return(ratingRepository.AddRating(model)); }