public void AllTypesMethodIsWorking()
        {
            var model = new PhoneNumberEntriesViewModel { };
            var count = Enum.GetValues(new PhoneNumberTypes().GetType()).Length;
            Assert.AreEqual(model.AllTypes().Count, count);

        }
 public ActionResult Remove(PhoneNumberEntriesViewModel model, int index)
 {
     //look into the following
     ModelState.Clear();
     model.Entries.RemoveAt(index);
     return View("Form", model);
 }
 public ActionResult Saved()
 {
     var model = new PhoneNumberEntriesViewModel {};
     if(TempData["model"] != null)
     {
         model = TempData["model"] as PhoneNumberEntriesViewModel;
     }
     return View(model);
 }
 public void AvailableTypesIsWorking()
 {
     var model = new PhoneNumberEntriesViewModel();
     var count = model.AllTypes().Count;
     model.Entries.Add(new PhoneNumberEntry { PhoneNumberType = PhoneNumberTypes.Car });
     model.Entries.Add(new PhoneNumberEntry { PhoneNumberType = PhoneNumberTypes.Home });
     Assert.AreEqual(model.AvailableTypes().Count, count - 2);
     Assert.IsFalse(model.AvailableTypes().Contains(PhoneNumberTypes.Car));
     Assert.IsFalse(model.AvailableTypes().Contains(PhoneNumberTypes.Home));
 }
 public ActionResult Index(PhoneNumberEntriesViewModel model)
 {
     if(!ModelState.IsValid)
     {
         return View("Form", model);    
     }
     TempData["model"] = model;
     return RedirectToAction("Saved");
     
 }
        public void UsedTypesMethodIsReturningCorrectValues()
        {
            var model = new PhoneNumberEntriesViewModel { };
            var totalCount = model.AllTypes().Count;
            Assert.AreEqual(model.UsedTypes().Count, 0);
            var car = new PhoneNumberEntry { PhoneNumberType = PhoneNumberTypes.Car };
            model.Entries.Add(car);

            Assert.AreEqual(model.UsedTypes().Count, 1);
            Assert.IsTrue(model.UsedTypes().Contains(car.PhoneNumberType));
        }
 public void SelectListItemsArePopulatedCorrectly()
 {
     var model = new PhoneNumberEntriesViewModel();
     var car = new PhoneNumberEntry {PhoneNumberType = PhoneNumberTypes.Car};
     var home = new PhoneNumberEntry {PhoneNumberType = PhoneNumberTypes.Home};
     model.Entries.Add(car);
     model.Entries.Add(home);
     var count = model.AvailableTypes().Count;
     Assert.AreEqual(model.SelectListItems(car).Count(), count + 1);
     Assert.IsTrue(model.SelectListItems(car).Where(item=> item.Selected).Single().Value == car.PhoneNumberType.ToString());
 }
 public void AvailableTypesForAPhoneEntryWorks()
 {
     var model = new PhoneNumberEntriesViewModel();
     var car = new PhoneNumberEntry {PhoneNumberType = PhoneNumberTypes.Car};
     var cell = new PhoneNumberEntry {PhoneNumberType = PhoneNumberTypes.Cell};
     model.Entries.Add(car);
     model.Entries.Add(cell);
     var count = model.AvailableTypes().Count;
     Assert.AreEqual(model.AvailableTypes(car).Count, count + 1);
     Assert.IsTrue(model.AvailableTypes(car).Contains(car.PhoneNumberType));
 }
 public void ModelIsNotNull()
 {
     var model = new PhoneNumberEntriesViewModel { };
     Assert.IsNotNull(model);
 }
 public ActionResult Change(PhoneNumberEntriesViewModel model)
 {
     return View("Form", model);
 }
        public ActionResult Add(PhoneNumberEntriesViewModel model)
        {
            model.Entries.Add(new PhoneNumberEntry{PhoneNumberType = model.AvailableTypes().First()});

            return View("Form", model);
        }
        //
        // GET: /PhoneNumberEntries/

        public ActionResult Index()
        {
            var model = new PhoneNumberEntriesViewModel {};
            model.Entries.Add(new PhoneNumberEntry{PhoneNumberType = PhoneNumberTypes.Cell});
            return View(model);
        }