public void Validate_CandidateIsInvalid_HasError() { var request = new TeachingEventAddAttendee { FirstName = null, }; var result = _validator.TestValidate(request); result.ShouldHaveValidationErrorFor("Candidate.FirstName"); }
public void Validate_ConsiderationJourneyStageIdIsNullWhenNotSigningUpToMailingList_HasNoError() { var request = new TeachingEventAddAttendee() { SubscribeToMailingList = false, ConsiderationJourneyStageId = null }; var result = _validator.TestValidate(request); result.ShouldNotHaveValidationErrorFor(request => request.ConsiderationJourneyStageId); }
public void Validate_DegreeStatusIdIsNullWhenSigningUpToMailingList_HasError() { var request = new TeachingEventAddAttendee() { SubscribeToMailingList = true, DegreeStatusId = null }; var result = _validator.TestValidate(request); result.ShouldHaveValidationErrorFor(request => request.DegreeStatusId); }
public void Validate_PreferredTeachingSubjectIdIsNullWhenNotSigningUpToMailingList_HasNoError() { var request = new TeachingEventAddAttendee() { SubscribeToMailingList = false, PreferredTeachingSubjectId = null }; var result = _validator.TestValidate(request); result.ShouldNotHaveValidationErrorFor(request => request.PreferredTeachingSubjectId); }
public void Candidate_MapsCorrectly() { var request = new TeachingEventAddAttendee() { EventId = Guid.NewGuid(), CandidateId = Guid.NewGuid(), QualificationId = Guid.NewGuid(), PreferredTeachingSubjectId = Guid.NewGuid(), AcceptedPolicyId = Guid.NewGuid(), DegreeStatusId = 1, ConsiderationJourneyStageId = 1, Email = "*****@*****.**", FirstName = "John", LastName = "Doe", Telephone = "1234567", AddressPostcode = "KY11 9YU", SubscribeToMailingList = true, }; var candidate = request.Candidate; candidate.Id.Should().Equals(request.CandidateId); candidate.ConsiderationJourneyStageId.Should().Be(request.ConsiderationJourneyStageId); candidate.PreferredTeachingSubjectId.Should().Be(request.PreferredTeachingSubjectId); candidate.Email.Should().Be(request.Email); candidate.FirstName.Should().Be(request.FirstName); candidate.LastName.Should().Be(request.LastName); candidate.AddressPostcode.Should().Be(request.AddressPostcode); candidate.Telephone.Should().Be(request.Telephone); candidate.ChannelId.Should().BeNull(); candidate.OptOutOfSms.Should().BeFalse(); candidate.DoNotBulkEmail.Should().BeFalse(); candidate.DoNotEmail.Should().BeFalse(); candidate.DoNotBulkPostalMail.Should().BeTrue(); candidate.DoNotPostalMail.Should().BeTrue(); candidate.DoNotSendMm.Should().BeFalse(); candidate.PrivacyPolicy.AcceptedPolicyId.Should().Be((Guid)request.AcceptedPolicyId); candidate.PrivacyPolicy.AcceptedAt.Should().BeCloseTo(DateTime.UtcNow); candidate.HasEventsSubscription.Should().BeTrue(); candidate.HasMailingListSubscription.Should().BeTrue(); candidate.TeachingEventRegistrations.First().EventId.Should().Equals(request.EventId); candidate.TeachingEventRegistrations.First().ChannelId.Should().Be((int)TeachingEventRegistration.Channel.Event); candidate.TeachingEventRegistrations.First().IsCancelled.Should().BeFalse(); candidate.TeachingEventRegistrations.First().RegistrationNotificationSeen.Should().BeFalse(); candidate.Qualifications.First().DegreeStatusId.Should().Be(request.DegreeStatusId); candidate.Qualifications.First().TypeId.Should().Be((int)CandidateQualification.DegreeType.Degree); candidate.Qualifications.First().Id.Should().Be(request.QualificationId); }
public IActionResult AddAttendee( [FromBody, SwaggerRequestBody("Attendee to add to the teaching event.", Required = true)] TeachingEventAddAttendee request) { if (!ModelState.IsValid) { return(BadRequest(this.ModelState)); } string json = request.Candidate.SerializeChangeTracked(); _jobClient.Enqueue <UpsertCandidateJob>((x) => x.Run(json, null)); return(NoContent()); }
public void AddAttendee_InvalidRequest_RespondsWithValidationErrors() { var request = new TeachingEventAddAttendee() { EventId = Guid.NewGuid(), FirstName = null }; _controller.ModelState.AddModelError("FirstName", "First name must be specified."); var response = _controller.AddAttendee(request); var badRequest = response.Should().BeOfType <BadRequestObjectResult>().Subject; var errors = badRequest.Value.Should().BeOfType <SerializableError>().Subject; errors.Should().ContainKey("FirstName").WhichValue.Should().BeOfType <string[]>().Which.Should().Contain("First name must be specified."); }
public IActionResult AddAttendee( [FromBody, SwaggerRequestBody("Attendee to add to the teaching event.", Required = true)] TeachingEventAddAttendee request) { if (!ModelState.IsValid) { return(BadRequest(this.ModelState)); } // This is the only way we can mock/freeze the current date/time // in contract tests (there's no other way to inject it into this class). request.DateTimeProvider = _dateTime; string json = request.Candidate.SerializeChangeTracked(); _jobClient.Enqueue <UpsertCandidateJob>((x) => x.Run(json, null)); return(NoContent()); }
public void AddAttendee_ValidRequest_EnqueuesJobRespondsWithNoContent() { var teachingEvent = new TeachingEvent() { Id = Guid.NewGuid() }; var request = new TeachingEventAddAttendee() { EventId = (Guid)teachingEvent.Id, Email = "*****@*****.**", FirstName = "John", LastName = "Doe" }; var response = _controller.AddAttendee(request); response.Should().BeOfType <NoContentResult>(); _mockJobClient.Verify(x => x.Create( It.Is <Job>(job => job.Type == typeof(UpsertCandidateJob) && job.Method.Name == "Run" && IsMatch(request.Candidate, (string)job.Args[0])), It.IsAny <EnqueuedState>())); }