public void Setup()
 {
     _submitter = new ApplicationSubmitter(new MemoryRepository<JobApplication>());
     _application = new JobApplication()
     {
         CV = new byte[0]
     };
 }
        public void DisallowedFileTypeReturnsInvalidExtension()
        {
            var application = new JobApplication()
            {
                FileName = "neroscv.pdf",
                CV = ResourceReader.GetResourceAsArray("Tests.neroscv.pdf")
            };

            var result = _submitter.Submit(application);
            Assert.That(result, Is.EqualTo(SubmissionErrors.InvalidExtension));
        }
        public void AllowedFileTypeReturnsNone()
        {
            var application = new JobApplication()
            {
                FileName = "neroscv.docx",
                CV = ResourceReader.GetResourceAsArray("Tests.neroscv.docx")
            };

            var result = _submitter.Submit(application);
            Assert.That(result, Is.EqualTo(SubmissionErrors.None));
        }
        public void AllowedFileTypeIncreasesSubmittedApplicationCountByOne()
        {
            var application = new JobApplication()
            {
                FileName = "neroscv.docx",
                CV = ResourceReader.GetResourceAsArray("Tests.neroscv.docx")
            };
            var originalCount = _submitter.Count();

            var result = _submitter.Submit(application);
            Assert.That(_submitter.Count(), Is.EqualTo(originalCount + 1));
        }
        public SubmissionErrors Submit(JobApplication cv)
        {
            if (cv.CV == null || cv.CV.Length == 0 || cv.FileName.Length == 0)
                return SubmissionErrors.MissingCV;

            foreach (var item in Settings.AllowedFileTypes)
            {
                var fi = item.GetType().GetField(item.ToString());
                var attribute = (FileAttribute) fi.GetCustomAttribute(typeof (FileAttribute), true);
                if (attribute.Extension.ToLowerInvariant() == Path.GetExtension(cv.FileName).Replace(".","").ToLowerInvariant())
                    break;
                return SubmissionErrors.InvalidExtension;
            }
            _repository.Add(cv);
            _repository.Commit();
            return SubmissionErrors.None;
        }
        public static JobApplication Map(JobApplicationModel model)
        {
            var result = new JobApplication()
            {
                Cover = model.Cover,
                Email = model.Email,
                Name = model.Name
            };
            if (model.CVFile != null)
            {
                result.FileName = model.CVFile.FileName;
                using (var ms = new MemoryStream())
                {
                    model.CVFile.InputStream.CopyTo(ms);
                    result.CV = ms.ToArray();
                }
            }

            return result;
        }