コード例 #1
0
        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)));
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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);
        }