From 90d75e70708654eca85399c49c5899cba63d9cf3 Mon Sep 17 00:00:00 2001 From: Yuvraj Patil Date: Mon, 19 Jun 2023 23:30:46 +0100 Subject: [PATCH 1/4] CSP-662 Implemented View,Controller,TC --- ...heckYourAnswersControllerAttributeTests.cs | 18 +++ .../AndSessionModelIsNotPopulated.cs | 54 ++++++++ .../AndSessionModelIsPopulated.cs | 101 ++++++++++++++ .../RegionsControllerGetTests.cs | 20 ++- .../Onboarding/CheckYourAnswersController.cs | 29 ++++ .../PreviousEngagementController.cs | 1 - .../Onboarding/RegionsController.cs | 2 +- .../Onboarding/CheckYourAnswersViewModel.cs | 28 ++++ .../Onboarding/OnboardingSessionModel.cs | 1 + .../Views/Onboarding/CheckYourAnswers.cshtml | 130 ++++++++++++++++++ 10 files changed, 381 insertions(+), 3 deletions(-) create mode 100644 src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/CheckYourAnswersControllerAttributeTests.cs create mode 100644 src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/WhenGetIsInvoked/AndSessionModelIsNotPopulated.cs create mode 100644 src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/WhenGetIsInvoked/AndSessionModelIsPopulated.cs create mode 100644 src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/CheckYourAnswersController.cs create mode 100644 src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/CheckYourAnswersViewModel.cs create mode 100644 src/SFA.DAS.Employer.Aan.Web/Views/Onboarding/CheckYourAnswers.cshtml diff --git a/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/CheckYourAnswersControllerAttributeTests.cs b/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/CheckYourAnswersControllerAttributeTests.cs new file mode 100644 index 00000000..446c0ab9 --- /dev/null +++ b/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/CheckYourAnswersControllerAttributeTests.cs @@ -0,0 +1,18 @@ +using FluentAssertions; +using Microsoft.AspNetCore.Mvc; +using SFA.DAS.Employer.Aan.Web.Controllers.Onboarding; +using SFA.DAS.Employer.Aan.Web.Infrastructure; + +namespace SFA.DAS.Employer.Aan.Web.UnitTests.Controllers.Onboarding.CheckYourAnswersControllerTests; + +[TestFixture] +public class CheckYourAnswersControllerAttributeTests +{ + [Test] + public void Controller_HasCorrectRouteAttribute() + { + typeof(CheckYourAnswersController).Should().BeDecoratedWith(); + typeof(CheckYourAnswersController).Should().BeDecoratedWith().Subject.Template.Should().Be("onboarding/check-your-answers"); + typeof(CheckYourAnswersController).Should().BeDecoratedWith().Subject.Name.Should().Be(RouteNames.Onboarding.CheckYourAnswers); + } +} diff --git a/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/WhenGetIsInvoked/AndSessionModelIsNotPopulated.cs b/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/WhenGetIsInvoked/AndSessionModelIsNotPopulated.cs new file mode 100644 index 00000000..cd45a308 --- /dev/null +++ b/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/WhenGetIsInvoked/AndSessionModelIsNotPopulated.cs @@ -0,0 +1,54 @@ +using FluentAssertions; +using Microsoft.AspNetCore.Mvc; +using Moq; +using SFA.DAS.Employer.Aan.Domain.Interfaces; +using SFA.DAS.Employer.Aan.Web.Controllers.Onboarding; +using SFA.DAS.Employer.Aan.Web.Models.Onboarding; +using SFA.DAS.Employer.Aan.Web.UnitTests.TestHelpers; + +namespace SFA.DAS.Employer.Aan.Web.UnitTests.Controllers.Onboarding.CheckYourAnswersControllerTests.WhenGetIsInvoked; + +public class AndSessionModelIsNotPopulated +{ + ViewResult getResult; + CheckYourAnswersViewModel viewModel; + CheckYourAnswersController sut; + OnboardingSessionModel sessionModel; + + [SetUp] + public void Init() + { + sessionModel = new(); + Mock sessionServiceMock = new(); + sessionServiceMock.Setup(s => s.Get()).Returns(sessionModel); + sut = new(sessionServiceMock.Object); + + sut.AddUrlHelperMock(); + + sessionModel.Regions = new(); + + getResult = sut.Get().As(); + viewModel = getResult.Model.As(); + } + + [Test] + public void ThenReturnsViewResults() + { + getResult.Should().NotBeNull(); + getResult.ViewName.Should().Be(CheckYourAnswersController.ViewPath); + } + + [Test] + public void ThenSetsRegionToNullInViewModel() + { + viewModel.Region.Should().BeEmpty(); + } + + [TearDown] + public void Dispose() + { + sut = null!; + getResult = null!; + viewModel = null!; + } +} diff --git a/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/WhenGetIsInvoked/AndSessionModelIsPopulated.cs b/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/WhenGetIsInvoked/AndSessionModelIsPopulated.cs new file mode 100644 index 00000000..fdecccfe --- /dev/null +++ b/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/CheckYourAnswersControllerTests/WhenGetIsInvoked/AndSessionModelIsPopulated.cs @@ -0,0 +1,101 @@ +using FluentAssertions; +using Microsoft.AspNetCore.Mvc; +using Moq; +using SFA.DAS.Employer.Aan.Domain.Interfaces; +using SFA.DAS.Employer.Aan.Web.Controllers.Onboarding; +using SFA.DAS.Employer.Aan.Web.Infrastructure; +using SFA.DAS.Employer.Aan.Web.Models; +using SFA.DAS.Employer.Aan.Web.Models.Onboarding; +using SFA.DAS.Employer.Aan.Web.UnitTests.TestHelpers; + +namespace SFA.DAS.Employer.Aan.Web.UnitTests.Controllers.Onboarding.CheckYourAnswersControllerTests.WhenGetIsInvoked; + +public class AndSessionModelIsPopulated +{ + OnboardingSessionModel sessionModel; + CheckYourAnswersController sut; + ViewResult getResult; + CheckYourAnswersViewModel viewModel; + + static readonly string RegionUrl = Guid.NewGuid().ToString(); + static readonly string LocallyPreferredRegion = Guid.NewGuid().ToString(); + static readonly List MultipleRegionsSelected = new() + { + new RegionModel() { Area = LocallyPreferredRegion, IsSelected = true, IsConfirmed = true}, + new RegionModel() { Area = Guid.NewGuid().ToString(), IsSelected = true, IsConfirmed = false}, + new RegionModel() { Area = Guid.NewGuid().ToString(), IsSelected = true, IsConfirmed = false}, + new RegionModel() { Area = Guid.NewGuid().ToString(), IsSelected = true, IsConfirmed = false} + }; + + static readonly List SingleRegionSelected = new() + { + new RegionModel() { Area = Guid.NewGuid().ToString(), IsSelected = true, IsConfirmed = false}, + new RegionModel() { Area = Guid.NewGuid().ToString(), IsSelected = true, IsConfirmed = false}, + new RegionModel() { Area = Guid.NewGuid().ToString(), IsSelected = true, IsConfirmed = false}, + new RegionModel() { Area = Guid.NewGuid().ToString(), IsSelected = true, IsConfirmed = false} + }; + + [SetUp] + public void Init() + { + sessionModel = new(); + Mock sessionServiceMock = new(); + sessionServiceMock.Setup(s => s.Get()).Returns(sessionModel); + sut = new(sessionServiceMock.Object); + + sut.AddUrlHelperMock() + .AddUrlForRoute(RouteNames.Onboarding.Regions, RegionUrl); + + sessionModel.Regions = MultipleRegionsSelected; + InvokeControllerGet(); + } + + private void InvokeControllerGet() + { + getResult = sut.Get().As(); + viewModel = getResult.Model.As(); + } + + [Test] + public void ThenReturnsViewResults() + { + InvokeControllerGet(); + getResult.Should().NotBeNull(); + getResult.ViewName.Should().Be(CheckYourAnswersController.ViewPath); + } + + [Test] + public void ThenSetsRegionChangeLinkInViewModel() + { + InvokeControllerGet(); + viewModel.RegionChangeLink.Should().Be(RegionUrl); + } + + [Test] + public void ThenSetsSingleRegionInViewModel() + { + sessionModel.Regions = SingleRegionSelected; + InvokeControllerGet(); + viewModel.Region.Should().Equal(SingleRegionSelected.Where(x => x.IsSelected).Select(x => x.Area).ToList()); + } + + [Test] + public void ThenSetsLocallyPreferredRegionInViewModel() + { + sessionModel.Regions = MultipleRegionsSelected; + InvokeControllerGet(); + var result = MultipleRegionsSelected.Where(x => x.IsSelected).Select(x => x.Area).ToList(); + result.Add($"Locally prefers {LocallyPreferredRegion}"); + + viewModel.Region.Should().Equal(result); + } + + [TearDown] + public void Dispose() + { + sessionModel = null!; + sut = null!; + getResult = null!; + viewModel = null!; + } +} diff --git a/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/RegionsControllerTests/RegionsControllerGetTests.cs b/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/RegionsControllerTests/RegionsControllerGetTests.cs index 0bed3817..138962e2 100644 --- a/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/RegionsControllerTests/RegionsControllerGetTests.cs +++ b/src/SFA.DAS.Employer.Aan.Web.UnitTests/Controllers/Onboarding/RegionsControllerTests/RegionsControllerGetTests.cs @@ -38,7 +38,7 @@ public async Task Get_ViewResult_HasCorrectViewPath( } [Test, MoqAutoData] - public async Task Get_ViewModelHasBackLinkToTermsAndConditions( + public async Task Get_ViewModelHasSeenPreviewIsFalse_BackLinkSetsToTermsAndConditions( [Frozen] Mock sessionServiceMock, [Greedy] RegionsController sut, OnboardingSessionModel sessionModel, @@ -46,6 +46,7 @@ public async Task Get_ViewModelHasBackLinkToTermsAndConditions( CancellationToken cancellationToken) { sut.AddUrlHelperMock().AddUrlForRoute(RouteNames.Onboarding.TermsAndConditions, termsAndConditionsUrl); + sessionModel.HasSeenPreview = false; sessionServiceMock.Setup(s => s.Get()).Returns(sessionModel); var result = await sut.Get(cancellationToken); @@ -70,4 +71,21 @@ public async Task Get_ViewModel_HasSessionData( var result = await sut.Get(cancellationToken); result.As().Model.As().Regions.Should().Equal(sessionModel.Regions); } + + [MoqAutoData] + public async Task Get_ViewModelHasSeenPreviewIsTrue_BackLinkSetsToCheckYourAnswers( + [Frozen] Mock sessionServiceMock, + [Greedy] RegionsController sut, + OnboardingSessionModel sessionModel, + string checkYourAnswersUrl, + CancellationToken cancellationToken) + { + sut.AddUrlHelperMock().AddUrlForRoute(RouteNames.Onboarding.CheckYourAnswers, checkYourAnswersUrl); + sessionModel.HasSeenPreview = true; + sessionServiceMock.Setup(s => s.Get()).Returns(sessionModel); + + var result = await sut.Get(cancellationToken); + + result.As().Model.As().BackLink.Should().Be(checkYourAnswersUrl); + } } \ No newline at end of file diff --git a/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/CheckYourAnswersController.cs b/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/CheckYourAnswersController.cs new file mode 100644 index 00000000..d53983ae --- /dev/null +++ b/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/CheckYourAnswersController.cs @@ -0,0 +1,29 @@ +using Microsoft.AspNetCore.Mvc; +using SFA.DAS.Employer.Aan.Domain.Interfaces; +using SFA.DAS.Employer.Aan.Web.Infrastructure; +using SFA.DAS.Employer.Aan.Web.Models.Onboarding; + +namespace SFA.DAS.Employer.Aan.Web.Controllers.Onboarding; + +[Route("onboarding/check-your-answers", Name = RouteNames.Onboarding.CheckYourAnswers)] +public class CheckYourAnswersController : Controller +{ + public const string ViewPath = "~/Views/Onboarding/CheckYourAnswers.cshtml"; + private readonly ISessionService _sessionService; + + public CheckYourAnswersController(ISessionService sessionService) + { + _sessionService = sessionService; + } + + [HttpGet] + public IActionResult Get() + { + var sessionModel = _sessionService.Get(); + sessionModel.HasSeenPreview = true; + _sessionService.Set(sessionModel); + + CheckYourAnswersViewModel model = new(Url, sessionModel); + return View(ViewPath, model); + } +} diff --git a/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/PreviousEngagementController.cs b/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/PreviousEngagementController.cs index 5b4c291a..b3236a65 100644 --- a/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/PreviousEngagementController.cs +++ b/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/PreviousEngagementController.cs @@ -10,7 +10,6 @@ namespace SFA.DAS.Employer.Aan.Web.Controllers.Onboarding; [Route("onboarding/previous-engagement", Name = RouteNames.Onboarding.PreviousEngagement)] -[Route("onboarding/checkyouranswers", Name = RouteNames.Onboarding.CheckYourAnswers)] public class PreviousEngagementController : Controller { public const string ViewPath = "~/Views/Onboarding/PreviousEngagement.cshtml"; diff --git a/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/RegionsController.cs b/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/RegionsController.cs index c4c92a25..04c28696 100644 --- a/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/RegionsController.cs +++ b/src/SFA.DAS.Employer.Aan.Web/Controllers/Onboarding/RegionsController.cs @@ -75,7 +75,7 @@ private async Task GetViewModel(CancellationToken cancellation return new RegionsViewModel { - BackLink = Url.RouteUrl(@RouteNames.Onboarding.TermsAndConditions)!, + BackLink = sessionModel.HasSeenPreview ? Url.RouteUrl(@RouteNames.Onboarding.CheckYourAnswers)! : Url.RouteUrl(@RouteNames.Onboarding.TermsAndConditions)!, Regions = sessionModel.Regions }; } diff --git a/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/CheckYourAnswersViewModel.cs b/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/CheckYourAnswersViewModel.cs new file mode 100644 index 00000000..b715d086 --- /dev/null +++ b/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/CheckYourAnswersViewModel.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Mvc; +using SFA.DAS.Employer.Aan.Web.Infrastructure; + +namespace SFA.DAS.Employer.Aan.Web.Models.Onboarding; + +public class CheckYourAnswersViewModel +{ + public string RegionChangeLink { get; } + public List? Region { get; } + + public CheckYourAnswersViewModel(IUrlHelper url, OnboardingSessionModel sessionModel) + { + RegionChangeLink = url.RouteUrl(@RouteNames.Onboarding.Regions)!; + Region = GetRegions(sessionModel); + } + + private List? GetRegions(OnboardingSessionModel sessionModel) + { + var locallyPreferredRegion = sessionModel.Regions.Find(x => x.IsConfirmed); + var regions = sessionModel.Regions.Where(x => x.IsSelected).Select(x => x.Area).ToList()!; + + if (locallyPreferredRegion != null && sessionModel.Regions.Count(x => x.IsSelected) > 1) + { + regions.Add($"Locally prefers {locallyPreferredRegion.Area}"); + } + return regions!; + } +} diff --git a/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/OnboardingSessionModel.cs b/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/OnboardingSessionModel.cs index e413f015..a194880c 100644 --- a/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/OnboardingSessionModel.cs +++ b/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/OnboardingSessionModel.cs @@ -2,6 +2,7 @@ public class OnboardingSessionModel { + public bool HasSeenPreview { get; set; } public List ProfileData { get; set; } = new List(); public bool HasAcceptedTerms { get; set; } = false; public bool IsValid => HasAcceptedTerms && ProfileData.Count > 0; diff --git a/src/SFA.DAS.Employer.Aan.Web/Views/Onboarding/CheckYourAnswers.cshtml b/src/SFA.DAS.Employer.Aan.Web/Views/Onboarding/CheckYourAnswers.cshtml new file mode 100644 index 00000000..c4972bc7 --- /dev/null +++ b/src/SFA.DAS.Employer.Aan.Web/Views/Onboarding/CheckYourAnswers.cshtml @@ -0,0 +1,130 @@ +@using SFA.DAS.Employer.Aan.Web.Infrastructure +@using SFA.DAS.Employer.Aan.Web.Models.Onboarding +@model CheckYourAnswersViewModel +@{ + ViewData["Title"] = "Check your answers"; +} + +
+
+

Check the information you have provided before submitting your application

+
+ Here are the details you have provided. +
+
+
+
+ Region location and preferences +
+
+
    + @{ + foreach (var region in Model.Region!) + { +
  • @region
  • + } + } +
+
+
+ Change +
+
+
+
Reasons for applying
+
+
+ Change +
+
+
+
Support needed
+
+
+ Change +
+
+
+
Previous engagement with network ambassadors
+
+
+ Change +
+
+
+
+

+ Here are your existing details from your account. +

+
+ This information will be included in your application and shared with your regional chair so they can welcome you into network. +
+
+
+
+ Full name +
+
+ +
+
+
+
+ Email +
+
+ +
+
+
+
+ Organisation Name +
+
+ +
+
+
+

+ Here are existing details we hold about your organisation. +

+
+
+
+ Number of active apprentices +
+
+ +
+
+
+
+ Date your organisation began their apprenticeship programme +
+
+ +
+
+
+
+ Apprenticeship's sector +
+
+ +
+
+
+

+ Now send your application +

+
+ By submitting this application you are confirming that all the details you are providing are correct. +
+
+ +
+
+
+
\ No newline at end of file From 4105492bd15bc64957b2be2743281f4a04be1eae Mon Sep 17 00:00:00 2001 From: Yuvraj Patil Date: Tue, 20 Jun 2023 14:32:59 +0100 Subject: [PATCH 2/4] CSP-662 Resolved codesmell --- .../Models/Onboarding/CheckYourAnswersViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/CheckYourAnswersViewModel.cs b/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/CheckYourAnswersViewModel.cs index b715d086..b2142dee 100644 --- a/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/CheckYourAnswersViewModel.cs +++ b/src/SFA.DAS.Employer.Aan.Web/Models/Onboarding/CheckYourAnswersViewModel.cs @@ -14,7 +14,7 @@ public CheckYourAnswersViewModel(IUrlHelper url, OnboardingSessionModel sessionM Region = GetRegions(sessionModel); } - private List? GetRegions(OnboardingSessionModel sessionModel) + private static List? GetRegions(OnboardingSessionModel sessionModel) { var locallyPreferredRegion = sessionModel.Regions.Find(x => x.IsConfirmed); var regions = sessionModel.Regions.Where(x => x.IsSelected).Select(x => x.Area).ToList()!; From b7633542677a3695a1d3351b920b5a228c6e7006 Mon Sep 17 00:00:00 2001 From: Yuvraj Patil Date: Tue, 20 Jun 2023 15:32:23 +0100 Subject: [PATCH 3/4] CSP-662 Removed System.Security.Cryptography.Pkcs reference from Test prj --- .../SFA.DAS.Employer.Aan.Application.UnitTests.csproj | 1 - .../SFA.DAS.Employer.Aan.Web.UnitTests.csproj | 1 - 2 files changed, 2 deletions(-) diff --git a/src/SFA.DAS.Employer.Aan.Application.UnitTests/SFA.DAS.Employer.Aan.Application.UnitTests.csproj b/src/SFA.DAS.Employer.Aan.Application.UnitTests/SFA.DAS.Employer.Aan.Application.UnitTests.csproj index 63af043b..89c702ec 100644 --- a/src/SFA.DAS.Employer.Aan.Application.UnitTests/SFA.DAS.Employer.Aan.Application.UnitTests.csproj +++ b/src/SFA.DAS.Employer.Aan.Application.UnitTests/SFA.DAS.Employer.Aan.Application.UnitTests.csproj @@ -26,7 +26,6 @@ runtime; build; native; contentfiles; analyzers; buildtransitive - diff --git a/src/SFA.DAS.Employer.Aan.Web.UnitTests/SFA.DAS.Employer.Aan.Web.UnitTests.csproj b/src/SFA.DAS.Employer.Aan.Web.UnitTests/SFA.DAS.Employer.Aan.Web.UnitTests.csproj index 1b9c39c8..79885c36 100644 --- a/src/SFA.DAS.Employer.Aan.Web.UnitTests/SFA.DAS.Employer.Aan.Web.UnitTests.csproj +++ b/src/SFA.DAS.Employer.Aan.Web.UnitTests/SFA.DAS.Employer.Aan.Web.UnitTests.csproj @@ -27,7 +27,6 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - From 9da2c33735bdf39fbd014833cb13ee86182d3bea Mon Sep 17 00:00:00 2001 From: Yuvraj Patil Date: Tue, 20 Jun 2023 16:03:15 +0100 Subject: [PATCH 4/4] Revert "CSP-662 Removed System.Security.Cryptography.Pkcs reference from Test prj" This reverts commit 0d0c30c47c77346818aa4618ddbc97b5e1f66aee. --- .../SFA.DAS.Employer.Aan.Application.UnitTests.csproj | 1 + .../SFA.DAS.Employer.Aan.Web.UnitTests.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/src/SFA.DAS.Employer.Aan.Application.UnitTests/SFA.DAS.Employer.Aan.Application.UnitTests.csproj b/src/SFA.DAS.Employer.Aan.Application.UnitTests/SFA.DAS.Employer.Aan.Application.UnitTests.csproj index 89c702ec..63af043b 100644 --- a/src/SFA.DAS.Employer.Aan.Application.UnitTests/SFA.DAS.Employer.Aan.Application.UnitTests.csproj +++ b/src/SFA.DAS.Employer.Aan.Application.UnitTests/SFA.DAS.Employer.Aan.Application.UnitTests.csproj @@ -26,6 +26,7 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/src/SFA.DAS.Employer.Aan.Web.UnitTests/SFA.DAS.Employer.Aan.Web.UnitTests.csproj b/src/SFA.DAS.Employer.Aan.Web.UnitTests/SFA.DAS.Employer.Aan.Web.UnitTests.csproj index 79885c36..1b9c39c8 100644 --- a/src/SFA.DAS.Employer.Aan.Web.UnitTests/SFA.DAS.Employer.Aan.Web.UnitTests.csproj +++ b/src/SFA.DAS.Employer.Aan.Web.UnitTests/SFA.DAS.Employer.Aan.Web.UnitTests.csproj @@ -27,6 +27,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive +