public void TestWorkoutRatingAddRating() { workout_rating rating = new workout_rating() { workout_id = 100, average_rating = 0, times_rated = 0 }; db.Setup(w => w.workout_rating.Add(rating)).Returns(rating); RedirectToRouteResult result = controller.AddWorkoutRating(100, 10) as RedirectToRouteResult; Assert.IsNotNull(result); Assert.AreEqual("Index", result.RouteValues["action"], "action was not Index"); Assert.AreEqual("Home", result.RouteValues["controller"], "controller was not Home"); }
public ActionResult AddWorkoutRating(int? workout_id, int? rating) { if (workout_id == null) { return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No workout id was specified.")); } if (rating == null) { return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No rating value was specified.")); } int userID = userAccess.getUserId(User.Identity.Name); if (userID == -1) { return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "No user could be associated with the rating being added")); } bool isFirstRating = false; workout_rating w_rating = db.workout_rating.Find(workout_id); //workout_rating w_rating = db.workout_rating.Where(m => m.workout_id == (int)workout_id).FirstOrDefault(); if (w_rating != null) { w_rating.average_rating = (w_rating.average_rating * w_rating.times_rated + (int)rating) / (w_rating.times_rated + 1); w_rating.times_rated++; } else { w_rating = new workout_rating(); w_rating.workout_id = (int)workout_id; w_rating.average_rating = (int)rating; w_rating.times_rated = 1; isFirstRating = true; } if (ModelState.IsValid) { try { if (isFirstRating) { db.workout_rating.Add(w_rating); } else { db.Entry(w_rating).State = EntityState.Modified; } db.SaveChanges(); if (this.Request.UrlReferrer != null) { string url = this.Request.UrlReferrer.PathAndQuery; return Redirect(url); } else { return RedirectToAction("Index", "Home"); } } catch (Exception ex) { return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Failed to rate the requested workout.")); } } else { return View("DetailedError", new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Failed to rate the requested workout.")); } }
private List<workout_rating> getSeedWorkoutRating() { var workouts = getSeedWorkouts(); workout_rating rating1 = new workout_rating { workout_id = 1, workout = workouts[0], average_rating = 10.0M, times_rated = 1 }; workout_rating rating2 = new workout_rating { workout_id = 2, workout = workouts[1], average_rating = 9.0M, times_rated = 3 }; workout_rating rating3 = new workout_rating { workout_id = 3, workout = workouts[2], average_rating = 10.0M, times_rated = 2 }; var workoutRating = new List<workout_rating> { rating1, rating2, rating3 }; return workoutRating; }