예제 #1
0
        public void TestCreateResumeFile()
        {
            var candidateId = Guid.NewGuid();

            _candidatesCommand.CreateCandidate(new Candidate {
                Id = candidateId
            });

            var file = _filesCommand.CreateTestFile(FileType.Resume);
            var resumeFileReference = new ResumeFileReference {
                FileReferenceId = file.Id
            };

            _candidateResumeFilesCommand.CreateResumeFile(candidateId, resumeFileReference);

            Assert.AreNotEqual(Guid.Empty, resumeFileReference.Id);
            Assert.AreNotEqual(DateTime.MinValue, resumeFileReference.UploadedTime);
            Assert.AreNotEqual(DateTime.MinValue, resumeFileReference.LastUsedTime);

            AssertResumeFile(resumeFileReference, _candidateResumeFilesQuery.GetResumeFile(candidateId, file.Id));
            var resumeFileReferences = _candidateResumeFilesQuery.GetResumeFiles(candidateId);

            Assert.AreEqual(1, resumeFileReferences.Count);
            AssertResumeFile(resumeFileReference, resumeFileReferences[0]);
            AssertResumeFile(resumeFileReference, _candidateResumeFilesQuery.GetLastUsedResumeFile(candidateId));
        }
예제 #2
0
        public ActionResult DownloadResume(Guid fileReferenceId)
        {
            try
            {
                var member = CurrentMember;

                // Make sure the file is on of the member's resume files.

                var resumeFileReference = _candidateResumeFilesQuery.GetResumeFile(member.Id, fileReferenceId);
                if (resumeFileReference == null)
                {
                    return(HttpNotFound());
                }

                var fileReference = _filesQuery.GetFileReference(fileReferenceId);
                if (fileReference == null)
                {
                    return(HttpNotFound());
                }

                return(File(_filesQuery.OpenFile(fileReference), fileReference.MediaType, fileReference.FileName));
            }
            catch (UserException ex)
            {
                ModelState.AddModelError(ex, new StandardErrorHandler());
            }

            return(View("Error"));
        }
예제 #3
0
        private ResumeFileReference CreateResumeFileReference(Guid candidateId, Guid fileReferenceId)
        {
            // Look for an existing one.

            var resumeFileReference = _candidateResumeFilesQuery.GetResumeFile(candidateId, fileReferenceId);

            if (resumeFileReference != null)
            {
                // Update it to reflect it has been used again.

                _candidateResumeFilesCommand.UpdateLastUsedTime(resumeFileReference);
                return(resumeFileReference);
            }

            // Create a new one.

            var now = DateTime.Now;

            resumeFileReference = new ResumeFileReference
            {
                FileReferenceId = fileReferenceId,
                LastUsedTime    = now,
                UploadedTime    = now
            };
            _candidateResumeFilesCommand.CreateResumeFile(candidateId, resumeFileReference);
            return(resumeFileReference);
        }
예제 #4
0
        private Guid GetResumeFileId(Guid memberId, Guid fileReferenceId, bool useForProfile)
        {
            // Make sure the id is valid.

            var fileReference = _filesQuery.GetFileReference(fileReferenceId);

            if (fileReference == null)
            {
                throw new NoResumeFileException();
            }

            // Create or update the resume file reference.

            var resumeFileReference = _candidateResumeFilesQuery.GetResumeFile(memberId, fileReference.Id);

            if (resumeFileReference != null)
            {
                _candidateResumeFilesCommand.UpdateLastUsedTime(resumeFileReference);
            }
            else
            {
                resumeFileReference = new ResumeFileReference {
                    FileReferenceId = fileReference.Id
                };
                _candidateResumeFilesCommand.CreateResumeFile(memberId, resumeFileReference);
            }

            if (useForProfile)
            {
                CreateResume(memberId, fileReference);
            }

            return(fileReferenceId);
        }
예제 #5
0
        private void AssertResume(ICandidate candidate, IResume resume, FileReference fileReference)
        {
            Assert.IsNotNull(resume);
            var resumeFile = _candidateResumeFilesQuery.GetResumeFile(candidate.Id, fileReference.Id);

            Assert.AreEqual(fileReference.Id, resumeFile.FileReferenceId);
        }
예제 #6
0
        private void AssertCandidateResume(string emailAddress, string expectedFileName, Guid?fileReferenceId, Guid?parsedResumeId)
        {
            var memberId  = _loginCredentialsQuery.GetUserId(emailAddress);
            var candidate = _candidatesQuery.GetCandidate(memberId.Value);
            var resume    = _resumesQuery.GetResume(candidate.ResumeId.Value);

            // FileReference should always be created.

            Assert.IsNotNull(fileReferenceId);
            AssertFileReference(expectedFileName, fileReferenceId.Value);

            // Even if the resume was not parsed the file should still be saved against the member.

            var resumeFile1 = _candidateResumeFilesQuery.GetResumeFile(memberId.Value, fileReferenceId.Value);

            AssertResumeFileReference(fileReferenceId.Value, resumeFile1);

            if (parsedResumeId != null)
            {
                // Parsed with no errors so the resume should be associated with the file reference.

                var resumeFile2 = _candidateResumeFilesQuery.GetResumeFile(resume.Id);
                Assert.AreEqual(resumeFile1.Id, resumeFile2.Id);
                AssertResumeFileReference(fileReferenceId.Value, resumeFile2);
            }
            else
            {
                // There was a problem parsing the resume so the file references should be there, but the resume itself should not be associated with the file.

                Assert.IsNull(_candidateResumeFilesQuery.GetResumeFile(resume.Id));
            }

            // Check all resume files for the member.

            var resumeFiles = _candidateResumeFilesQuery.GetResumeFiles(memberId.Value);

            Assert.AreEqual(1, resumeFiles.Count);
            Assert.AreEqual(resumeFile1.Id, resumeFiles[0].Id);
            AssertResumeFileReference(fileReferenceId.Value, resumeFiles[0]);
        }
예제 #7
0
 protected void AssertNoResumeFile(Guid memberId, Guid resumeId)
 {
     Assert.IsNull(_candidateResumeFilesQuery.GetResumeFile(resumeId));
 }
예제 #8
0
        public void TestOverrideParse()
        {
            var member    = CreateMember(0);
            var candidate = _candidatesQuery.GetCandidate(member.Id);

            _candidateResumesCommand.AddTestResume(candidate);

            // Confirm resume.

            candidate = _candidatesQuery.GetCandidate(member.Id);
            Assert.IsNotNull(candidate.ResumeId);
            var resume1 = _resumesQuery.GetResume(candidate.ResumeId.Value);

            Assert.IsNotNull(resume1);

            Assert.AreEqual(0, _candidateResumeFilesQuery.GetResumeFiles(member.Id).Count);
            Assert.IsNull(_candidateResumeFilesQuery.GetResumeFile(resume1.Id));

            LogIn(member);

            // Upload and parse.

            var fileReferenceId1 = Upload(TestResume.Complete, "Resume.doc");

            AssertJsonSuccess(Parse(fileReferenceId1));

            // Confirm resume.

            candidate = _candidatesQuery.GetCandidate(member.Id);
            Assert.IsNotNull(candidate.ResumeId);
            var resume2 = _resumesQuery.GetResume(candidate.ResumeId.Value);

            Assert.IsNotNull(resume2);
            Assert.AreEqual(resume1.Id, resume2.Id);

            // Show that the resume is associated with the uploaded file.

            var references = _candidateResumeFilesQuery.GetResumeFiles(member.Id);

            Assert.AreEqual(1, references.Count);
            var resumeFileReference1 = references[0];
            var resumeFileReference2 = _candidateResumeFilesQuery.GetResumeFile(member.Id, fileReferenceId1);
            var resumeFileReference3 = _candidateResumeFilesQuery.GetResumeFile(resume2.Id);

            Assert.AreEqual(fileReferenceId1, resumeFileReference1.FileReferenceId);
            Assert.AreEqual(fileReferenceId1, resumeFileReference2.FileReferenceId);
            Assert.AreEqual(fileReferenceId1, resumeFileReference3.FileReferenceId);
            Assert.AreEqual(resumeFileReference1.Id, resumeFileReference2.Id);
            Assert.AreEqual(resumeFileReference1.Id, resumeFileReference3.Id);

            // Upload and parse another resume.

            var fileReferenceId2 = Upload(TestResume.NoPhoneNumber, "Resume.doc");

            AssertJsonSuccess(Parse(fileReferenceId2));

            // Confirm resume.

            candidate = _candidatesQuery.GetCandidate(member.Id);
            Assert.IsNotNull(candidate.ResumeId);
            var resume3 = _resumesQuery.GetResume(candidate.ResumeId.Value);

            Assert.IsNotNull(resume3);
            Assert.AreEqual(resume1.Id, resume2.Id);
            Assert.AreEqual(resume1.Id, resume3.Id);

            // Show that the resume is associated with the new uploaded file.

            references = _candidateResumeFilesQuery.GetResumeFiles(member.Id);
            Assert.AreEqual(2, references.Count);
            resumeFileReference1 = (from r in references where r.FileReferenceId == fileReferenceId1 select r).Single();
            resumeFileReference2 = (from r in references where r.FileReferenceId == fileReferenceId2 select r).Single();

            resumeFileReference3 = _candidateResumeFilesQuery.GetResumeFile(member.Id, fileReferenceId1);
            var resumeFileReference4 = _candidateResumeFilesQuery.GetResumeFile(member.Id, fileReferenceId2);

            var resumeFileReference5 = _candidateResumeFilesQuery.GetResumeFile(resume3.Id);

            Assert.AreEqual(fileReferenceId1, resumeFileReference1.FileReferenceId);
            Assert.AreEqual(fileReferenceId2, resumeFileReference2.FileReferenceId);
            Assert.AreEqual(fileReferenceId1, resumeFileReference3.FileReferenceId);
            Assert.AreEqual(fileReferenceId2, resumeFileReference4.FileReferenceId);
            Assert.AreEqual(fileReferenceId2, resumeFileReference5.FileReferenceId);

            Assert.AreEqual(resumeFileReference1.Id, resumeFileReference3.Id);
            Assert.AreEqual(resumeFileReference2.Id, resumeFileReference4.Id);
            Assert.AreEqual(resumeFileReference2.Id, resumeFileReference5.Id);
        }