public void TestCreateWithPost() { var workshopRepositoryStub = MockRepository.GenerateStub<IWorkshopRepository>(); var membershipRepositoryStub = MockRepository.GenerateStub<IMembershipRepository>(); var controller = new WorkshopsController(membershipRepositoryStub, workshopRepositoryStub); membershipRepositoryStub.Stub(repository => repository.GetMemberships()) .Return(new Membership[] { new Membership() { IsConfirmed = true, Id = 1, IsOptional = false, UserName = "******" } }.AsQueryable()); var workshop = new Workshop(); workshop.Title = "Test"; workshop.Date = DateTime.Now; workshop.Description = "Test workshop"; var result = controller.Create(workshop) as RedirectToRouteResult; Assert.IsNotNull(result); // The workshop that gets saved in the database needs to have one reservation workshopRepositoryStub.AssertWasCalled(repository => repository.InsertOrUpdate( Arg<Workshop>.Matches(arg => arg.Reservations.Count == 1))); }
public ActionResult Create(Workshop workshop) { try { // Automatically create reservations for the members in the application // that are not marked as optional and are confirmed foreach (var membership in _membershipRepository.GetMemberships()) { Reservation reservation = new Reservation(); reservation.UserName = membership.UserName; workshop.Reservations.Add(reservation); } // Save the workshop to the database _workshopRepository.InsertOrUpdate(workshop); _workshopRepository.Save(); return RedirectToAction("Details", new { id = workshop.Id }); } catch (Exception) { return View(workshop); } }
public void TestUpdateWorkshop() { var workshop = new Workshop(); workshop.Date = DateTime.Now; workshop.Title = "Sample workshop"; workshop.Description = "Sample"; var reservation = new Reservation(); reservation.UserName = "******"; workshop.Reservations.Add(reservation); var repository = new WorkshopRepository(); repository.InsertOrUpdate(workshop); repository.Save(); var foundWorkshop = repository.Find(workshop.Id); foundWorkshop.Reservations.Add(new Reservation() { UserName = "******"}); repository.InsertOrUpdate(foundWorkshop); repository.Save(); var results = repository.Find(foundWorkshop.Id); Assert.AreEqual(2,results.Reservations.Count); }
public void InsertOrUpdate(Workshop workshop) { if (workshop.Id == default(int)) { NerdCookingContext.Current.Workshops.Add(workshop); // Add the reservations to the database as well foreach(var reservation in workshop.Reservations) { NerdCookingContext.Current.Reservations.Add(reservation); } } else { //NOTE: Reservations are not automatically updated. NerdCookingContext.Current.Entry(workshop).State = EntityState.Modified; } }
public void TestInsertWorkshopWithReservations() { var workshop = new Workshop(); workshop.Date = DateTime.Now; workshop.Title = "Sample workshop"; workshop.Description = "Sample"; var reservation = new Reservation(); reservation.UserName = "******"; workshop.Reservations.Add(reservation); var repository = new WorkshopRepository(); repository.InsertOrUpdate(workshop); repository.Save(); var results = repository.Find(workshop.Id); Assert.IsNotNull(results); Assert.AreEqual(1,results.Reservations.Count); }