private void Validate(DataImportParametersViewModel viewModel)
        {
            if (viewModel.File == null)
            {
                ModelState.AddModelError("file", "You must select a file");
            }

            var fileContentType = viewModel.SelectedImportType.GetFileExtensionType();

            if (viewModel.File?.ContentType != fileContentType)
            {
                ModelState.AddModelError("file", fileContentType.GetFileExtensionErrorMessage());
            }
        }
Example #2
0
        public When_Data_Import_Controller_Index_Is_Submitted_With_No_File()
        {
            _dataUploadDto = new DataUploadDto();

            var mapper = Substitute.For <IMapper>();

            _dataBlobUploadService = Substitute.For <IDataBlobUploadService>();
            _dataImportController  = new DataImportController(mapper, _dataBlobUploadService);

            var viewModel = new DataImportParametersViewModel
            {
                SelectedImportType = DataImportType.LearningAimReference
            };

            _result = _dataImportController.Index(viewModel).Result;
        }
        public async Task <IActionResult> Index(DataImportParametersViewModel viewModel)
        {
            Validate(viewModel);

            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            var dto = _mapper.Map <DataUploadDto>(viewModel);

            dto.UserName = HttpContext.User.GetUserName();

            await _dataBlobUploadService.UploadAsync(dto);

            viewModel.IsImportSuccessful = true;

            return(View(viewModel));
        }
        public When_Data_Import_Controller_Index_Is_Submitted_Successfully()
        {
            _dataUploadDto = new DataUploadDto();
            var formFile = Substitute.For <IFormFile>();

            var viewModel = new DataImportParametersViewModel
            {
                SelectedImportType = DataImportType.LearningAimReference,
                File = formFile
            };
            var mapper = Substitute.For <IMapper>();

            mapper.Map <DataUploadDto>(viewModel).Returns(_dataUploadDto);

            _dataBlobUploadService = Substitute.For <IDataBlobUploadService>();
            formFile.ContentType.Returns("application/vnd.ms-excel");

            var dataImportController = new DataImportController(mapper, _dataBlobUploadService);
            var controllerWithClaims = new ClaimsBuilder <DataImportController>(dataImportController)
                                       .AddUserName("username")
                                       .Build();

            _result = controllerWithClaims.Index(viewModel).Result;
        }
Example #5
0
        public When_DataImportViewModelMapper_Maps_ViewModel()
        {
            _data = new byte[] { 0x48, 0x45, 0x4C, 0x4C, 0x4F };

            var formFile = Substitute.For <IFormFile>();

            formFile.FileName.Returns(FileName);
            formFile.ContentType.Returns(FileContentType);

            formFile.CopyTo(Arg.Do <MemoryStream>(ms =>
            {
                ms.Write(_data);
                ms.Seek(0, SeekOrigin.Begin);
            }));

            var dateTimeProvider = Substitute.For <IDateTimeProvider>();

            dateTimeProvider.UtcNowString(Arg.Any <string>()).Returns(FormattedDateTimeNowUtc);

            var viewModel = new DataImportParametersViewModel
            {
                File = formFile,
                IsImportSuccessful = true,
                SelectedImportType = DataImportType.LearningAimReference
            };

            var config = new MapperConfiguration(c =>
            {
                c.AddProfile <DataImportViewModelMapper>();
                c.ConstructServicesUsing(d => new FileNameResolver(dateTimeProvider));
            });

            IMapper mapper = new Mapper(config);

            _result = mapper.Map <DataUploadDto>(viewModel);
        }