public void GivenTypeIsPrivateHealthField_AndUserDoesntHaveAccessToAllFields_WhenIGenerateMapFieldsViewModel_ThenAPopulatedUploadWizardViewModelIsReturnedWithOnlyExpectedPrivateHealthFields()
        {
            var expectedPublicFields = Data.CustomFields.OrderBy(c => c.Name).OfType<PrivateHealthField>().ToList();
            expectedPublicFields.Insert(0,
                new PrivateHealthField
                {
                    Id = 0,
                    Name = "Student Id"
                }
            );
            var viewModel = new UploadWizardFileViewModel
            {
                NumberOfFields = 1,
                File = MockRepository.GenerateMock<HttpPostedFileBase>()
            };
            viewModel.File.Expect(f => f.InputStream).Return(new MemoryStream());
            IPermission permission = MockRepository.GenerateMock<IPermission>();
            permission.Expect(p => p.GrantAccess(User)).Throw(new EntityAccessUnauthorizedException());
            PermissionFactory.Current.Expect(m => m.Create("UploadCustomFieldData", Data.CustomFields.Last())).Return(permission);

            var model = Target.GenerateMapFieldsViewModel(viewModel, typeof(PrivateHealthField), User) as UploadWizardModel;

            Assert.IsNotNull(model);
            Assert.AreEqual(expectedPublicFields.Count - 1, model.CustomFields[0].CustomFields.Count());
        }
        public void GivenModelStateErrors_WhenUploadWizardConfirmed_ThenViewResultWithTheFirstModelReturned()
        {
            UploadWizardFileViewModel model = new UploadWizardFileViewModel();
            Target.ModelState.AddModelError("blah", "blerg");

            var result = Target.UploadWizardConfirmed(new UploadWizardFileViewModel()) as ViewResult;

            result.AssertGetViewModel<UploadWizardFileViewModel>();
        }
        public void GivenNoModelStateErrors_WhenUploadWizardConfirmed_ThenAViewResultIsReturned()
        {
            UploadWizardFileViewModel model = new UploadWizardFileViewModel();
            MockLogicManager.Expect(m => m.GenerateMapFieldsViewModel(model, typeof(PrivateHealthField), User)).Return(new UploadWizardModel());

            var result = Target.UploadWizardConfirmed(model) as ViewResult;

            Assert.IsNotNull(result);
            result.AssertGetViewModel<UploadWizardModel>();
        }
 public UploadWizardModel GenerateMapFieldsViewModel(UploadWizardFileViewModel model, Type t, EducationSecurityPrincipal user)
 {
     if (model == null)
     {
         throw new ArgumentNullException("model");
     }
     var blobAddress = DateTime.Now.Ticks + model.File.FileName;
     UploadFileToBlobStorage(blobAddress, model.File.InputStream);
     model.BlobAddress = blobAddress;
     model.CustomFields = CreateCustomFieldSelectViewModelsToMap(model.NumberOfFields, t, user);
     return model;
 }
        public void GivenTypeIsPublicField_WhenIGenerateMapFieldsViewModel_ThenAPopulatedUploadWizardViewModelIsReturnedWithOnlyPublicFields()
        {
            var expectedPublicFields = Data.CustomFields.OrderBy(c => c.Name).OfType<PublicField>().ToList();
            expectedPublicFields.Insert(0,
                new PublicField
                {
                    Id = 0,
                    Name = "Student Id"
                }
            );
            var viewModel = new UploadWizardFileViewModel
            {
                NumberOfFields = 1,
                File = MockRepository.GenerateMock<HttpPostedFileBase>()
            };
            viewModel.File.Expect(f => f.InputStream).Return(new MemoryStream());
            foreach (var field in Data.CustomFields.OfType<PublicField>())
            {
                PermissionFactory.Current.Expect(m => m.Create("UploadCustomFieldData", field)).Return(MockRepository.GenerateMock<IPermission>());
            }
            var model = Target.GenerateMapFieldsViewModel(viewModel, typeof(PublicField), User) as UploadWizardModel;

            Assert.IsNotNull(model);
            Assert.AreEqual(expectedPublicFields.Count, model.CustomFields[0].CustomFields.Count());
        }