public void RecieveApplicant_ThrowsInvalidOperationException_WhenApplicantAlreadyExists()
        {
            //Arrange

            var skill = new Skill()
            {
                Name = "C#", Id = Guid.NewGuid().ToString()
            };

            var person = new Person()
            {
                FirstName = "Pepe", LastName = "Lopez", IdentityCard = "123"
            };

            person.SetAbility(new Ability(skill, 5));

            var jobOffer = new JobOffer();

            jobOffer.AddSkillRequired(new SkillRequired(skill, 3, true));

            jobOffer.AddJobApplicationRequested(person);

            //Act
            try
            {
                jobOffer.AddJobApplicationRequested(person);

                Assert.Fail("Job offer shoud throw exeption when a person tries to apply more than one time");
            }
            catch (InvalidOperationException ex)
            {
                Assert.AreEqual(ex.Message, DomainErrorMessages.APPLICANT_ALREADY_REQUESTED_JOB_OFFER);
            }
        }
        public void RecieveApplicant_CreatesJobApplication_WhenItIsTheFirstAttemptToApply()
        {
            //Arrange

            var skill = new Skill()
            {
                Name = "C#", Id = Guid.NewGuid().ToString()
            };

            var person = new Person()
            {
                FirstName = "Pepe", LastName = "Lopez", IdentityCard = "123"
            };

            person.SetAbility(new Ability(skill, 5));

            var jobOffer = new JobOffer();

            jobOffer.AddSkillRequired(new SkillRequired(skill, 3, true));


            //Act
            jobOffer.AddJobApplicationRequested(person);

            var jobApplication = jobOffer.Applications.Where(a => a.ApplicantId == person.Id).SingleOrDefault();


            //Assert
            Assert.IsNotNull(jobApplication);
        }