Skip to content

Commit fe633f0

Browse files
committed
ECER-5182: Automated tests to cover reference set scenarios
1 parent 7bfa70f commit fe633f0

File tree

2 files changed

+107
-0
lines changed

2 files changed

+107
-0
lines changed

src/ECER.Tests/Integration/RegistryApi/ReferenceTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,4 +260,55 @@ await Host.Scenario(_ =>
260260
_.StatusCodeShouldBeOk();
261261
});
262262
}
263+
264+
[Fact]
265+
public async Task SubmitICRAWorkExperienceReference_ShouldReturnOk()
266+
{
267+
var bus = Fixture.Services.GetRequiredService<IMediator>();
268+
var portalInvitation = Fixture.portalInvitationICRAWorkExperienceReferenceIdSubmit;
269+
var packingResponse = await bus.Send(new GenerateInviteLinkCommand(portalInvitation, 7), CancellationToken.None);
270+
packingResponse.ShouldNotBeNull();
271+
272+
var token = packingResponse.VerificationLink.Split('/')[2];
273+
var faker = new Faker("en_CA");
274+
var icraRequest = new ICRAWorkExperienceReferenceSubmissionRequest(
275+
token,
276+
faker.Random.Word())
277+
{
278+
FirstName = faker.Person.FirstName,
279+
LastName = faker.Person.LastName,
280+
EmailAddress = "[email protected]",
281+
PhoneNumber = faker.Phone.PhoneNumber(),
282+
EmployerName = faker.Company.CompanyName(),
283+
PositionTitle = faker.Name.JobTitle(),
284+
StartDate = faker.Date.Past(),
285+
EndDate = faker.Date.Soon(),
286+
WorkedWithChildren = faker.Random.Bool(),
287+
ChildcareAgeRanges = new List<ChildcareAgeRanges> { ChildcareAgeRanges._35years },
288+
ReferenceRelationship = ReferenceRelationship.Supervisor
289+
};
290+
291+
await Host.Scenario(_ =>
292+
{
293+
_.Post.Json(icraRequest).ToUrl($"/api/References/ICRAWorkExperience");
294+
_.StatusCodeShouldBeOk();
295+
});
296+
}
297+
298+
[Fact]
299+
public async Task OptOutICRAWorkExperienceReference_ShouldReturnOk()
300+
{
301+
var bus = Fixture.Services.GetRequiredService<IMediator>();
302+
var portalInvitation = Fixture.portalInvitationICRAWorkExperienceReferenceIdOptout;
303+
var packingResponse = await bus.Send(new GenerateInviteLinkCommand(portalInvitation, 7), CancellationToken.None);
304+
packingResponse.ShouldNotBeNull();
305+
306+
var token = packingResponse.VerificationLink.Split('/')[2];
307+
var optOutReferenceRequest = new OptOutReferenceRequest(token, UnabletoProvideReferenceReasons.Idonotknowthisperson, Faker.Random.Word());
308+
await Host.Scenario(_ =>
309+
{
310+
_.Post.Json(optOutReferenceRequest).ToUrl($"/api/References/OptOut");
311+
_.StatusCodeShouldBeOk();
312+
});
313+
}
263314
}

src/ECER.Tests/Integration/RegistryPortalWebAppScenarioBase.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public class RegistryPortalWebAppFixture : WebAppFixtureBase
5555
private ecer_PortalInvitation testPortalInvitationWorkExperienceReferenceOptout = null!;
5656
private ecer_PortalInvitation testPortalInvitationWorkExperienceReferenceCompleted = null!;
5757
private ecer_PortalInvitation testPortalInvitation400HoursTypeWorkExperienceReferenceSubmit = null!;
58+
private ecer_PortalInvitation testPortalInvitationICRAWorkExperienceReferenceSubmit = null!;
59+
private ecer_PortalInvitation testPortalInvitationICRAWorkExperienceReferenceOptout = null!;
5860

5961
private ecer_PreviousName previousName = null!;
6062

@@ -81,6 +83,8 @@ public class RegistryPortalWebAppFixture : WebAppFixtureBase
8183
public Guid portalInvitationWorkExperienceReferenceIdCompleted => testPortalInvitationWorkExperienceReferenceCompleted.ecer_PortalInvitationId ?? Guid.Empty;
8284

8385
public Guid portalInvitation400HoursTypeWorkExperienceReferenceIdSubmit => testPortalInvitation400HoursTypeWorkExperienceReferenceSubmit.ecer_PortalInvitationId ?? Guid.Empty;
86+
public Guid portalInvitationICRAWorkExperienceReferenceIdSubmit => testPortalInvitationICRAWorkExperienceReferenceSubmit.ecer_PortalInvitationId ?? Guid.Empty;
87+
public Guid portalInvitationICRAWorkExperienceReferenceIdOptout => testPortalInvitationICRAWorkExperienceReferenceOptout.ecer_PortalInvitationId ?? Guid.Empty;
8488
public UserIdentity AuthenticatedBcscUserIdentity2 => AuthenticatedBcscUser2.ecer_contact_ecer_authentication_455.Select(a => new UserIdentity(a.ecer_ExternalID, a.ecer_IdentityProvider)).First();
8589
public string AuthenticatedBcscUserId2 => AuthenticatedBcscUser2.Id.ToString();
8690
private ecer_Application inProgressTestApplication2 = null!;
@@ -175,6 +179,8 @@ private async Task InitializeDataverseTestData(EcerContext context)
175179
testPortalInvitationWorkExperienceReferenceOptout = GetOrAddPortalInvitation_WorkExperienceReference(context, AuthenticatedBcscUser, "name5");
176180
testPortalInvitationWorkExperienceReferenceCompleted = GetOrAddPortalInvitation_WorkExperienceReference(context, AuthenticatedBcscUser, "name6");
177181
testPortalInvitation400HoursTypeWorkExperienceReferenceSubmit = GetOrAddPortalInvitation_400HoursTypeWorkExperienceReference(context, AuthenticatedBcscUser, "name7");
182+
testPortalInvitationICRAWorkExperienceReferenceSubmit = GetOrAddPortalInvitation_ICRAWorkExperienceReference(context, AuthenticatedBcscUser, "icra_name1");
183+
testPortalInvitationICRAWorkExperienceReferenceOptout = GetOrAddPortalInvitation_ICRAWorkExperienceReference(context, AuthenticatedBcscUser, "icra_name2");
178184

179185
context.SaveChanges();
180186
MarkCertificateAsInactive(context, testInactiveCertification.Id);
@@ -651,4 +657,54 @@ on p.ecer_WorkExperienceReferenceId.Id equals w.ecer_WorkExperienceRefId
651657
}
652658
return portalInvitation;
653659
}
660+
661+
private ecer_PortalInvitation GetOrAddPortalInvitation_ICRAWorkExperienceReference(EcerContext context, Contact registrant, string name)
662+
{
663+
var uniqueName = $"{name}_{TestRunId}";
664+
var portalInvitation = context.ecer_PortalInvitationSet.FirstOrDefault(p => p.ecer_Name == uniqueName && p.ecer_Type == ecer_PortalInvitationTypes.WorkExperienceReferenceforICRA);
665+
if (portalInvitation == null)
666+
{
667+
var existingInvitations = context.ecer_PortalInvitationSet.Where(p => p.ecer_Name == uniqueName && p.ecer_Type == ecer_PortalInvitationTypes.WorkExperienceReferenceforICRA).ToList();
668+
foreach (var inv in existingInvitations)
669+
{
670+
context.DeleteObject(inv);
671+
}
672+
var wpGuid = Guid.NewGuid();
673+
var workRefName = $"icra_workref_{uniqueName}";
674+
var existingWorkRefs = context.ecer_WorkExperienceRefSet.Where(w => w.ecer_Name == workRefName).ToList();
675+
foreach (var wr in existingWorkRefs)
676+
{
677+
context.DeleteObject(wr);
678+
}
679+
context.SaveChanges();
680+
var workexperienceReference = new ecer_WorkExperienceRef
681+
{
682+
Id = wpGuid,
683+
ecer_WorkExperienceRefId = wpGuid,
684+
ecer_Name = workRefName,
685+
ecer_FirstName = "autotest_icra_workref_first",
686+
ecer_LastName = "autotest_icra_workref_last",
687+
ecer_EmailAddress = "[email protected]",
688+
};
689+
690+
var guid = Guid.NewGuid();
691+
portalInvitation = new ecer_PortalInvitation
692+
{
693+
Id = guid,
694+
ecer_PortalInvitationId = guid,
695+
ecer_Name = uniqueName,
696+
ecer_FirstName = "autotest_icra_workref_first",
697+
ecer_LastName = "autotest_icra_workref_last",
698+
ecer_EmailAddress = "[email protected]",
699+
StatusCode = ecer_PortalInvitation_StatusCode.Sent,
700+
ecer_Type = ecer_PortalInvitationTypes.WorkExperienceReferenceforICRA
701+
};
702+
context.AddObject(workexperienceReference);
703+
context.AddObject(portalInvitation);
704+
var trackedRegistrant = context.ContactSet.First(c => c.ContactId == registrant.ContactId);
705+
context.AddLink(portalInvitation, ecer_PortalInvitation.Fields.ecer_portalinvitation_ApplicantId, trackedRegistrant);
706+
context.AddLink(portalInvitation, ecer_PortalInvitation.Fields.ecer_portalinvitation_WorkExperienceRefId, workexperienceReference);
707+
}
708+
return portalInvitation;
709+
}
654710
}

0 commit comments

Comments
 (0)