public UserRoleModel GenerateCreateViewModel(int id)
 {
     var user = UserRepository.Items.SingleOrDefault(u => u.Id == id);
     if (user == null)
     {
         throw new EntityNotFoundException("User does not exist.");
     }
     UserRoleModel viewModel = new UserRoleModel();
     viewModel.CopyFrom(user);
     PopulateViewModel(viewModel);
     return viewModel;
 }
 public UserRoleModel GenerateEditViewModel(int id)
 {
     var user = UserRepository.Items
                                    .Include("UserRoles.Role")
                                    .Include("UserRoles.Schools")
                                    .Include("UserRoles.Providers")
                                    .SingleOrDefault(u => u.Id == id);
     if (user == null)
     {
         throw new EntityNotFoundException("User does not exist.");
     }
     UserRoleModel viewModel = new UserRoleModel();
     viewModel.CopyFrom(user);
     viewModel.UserRoleIds = user.UserRoles.Select(u => u.Id);
     viewModel.SelectedRoles = user.UserRoles.Select(u => u.Role);
     PopulateViewModel(viewModel);
     return viewModel;
 }
        public void WhenGenerateEditViewModel_ThenAPartialViewIsReturned()
        {
            var user = Users.Where(u => u.Id == 1).SingleOrDefault();
            UserRoleModel expectedViewModel = new UserRoleModel();
            expectedViewModel.CopyFrom(user);
            expectedViewModel.UserRoleIds = user.UserRoles.Select(u => u.Id);
            expectedViewModel.AvailableRoles = Repositories.MockRoleRepository.Items;
            expectedViewModel.SelectedRoles = user.UserRoles.Select(u => u.Role);
            AddAdditionalUsers();

            UserRoleModel actual = Target.GenerateEditViewModel(1);

            Assert.IsNotNull(actual);
            CollectionAssert.AreEqual(expectedViewModel.AvailableRoles.ToList(), actual.AvailableRoles.ToList());
            Assert.AreEqual(expectedViewModel.Comments, actual.Comments);
            Assert.AreEqual(expectedViewModel.PostedRoles, actual.PostedRoles);
            CollectionAssert.AreEqual(expectedViewModel.SelectedRoles.ToList(), actual.SelectedRoles.ToList());
            CollectionAssert.AreEqual(expectedViewModel.SelectedSchoolIds.ToList(), actual.SelectedSchoolIds.ToList());
            Assert.AreEqual(expectedViewModel.UserId, actual.UserId);
            CollectionAssert.AreEqual(expectedViewModel.UserRoleIds.ToList(), actual.UserRoleIds.ToList());
        }