Skip to content

Commit 1c5aed2

Browse files
committed
snapshot tests
1 parent 5943ecb commit 1c5aed2

File tree

10 files changed

+9554
-10
lines changed

10 files changed

+9554
-10
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ OutputDirectory
5252

5353
# User Settings
5454
local.settings.json
55+
appsettings.json
5556

5657
# Docker
5758
.env

application/CohortManager/src/Functions/Shared/Common/Extensions/ConfigurationExtension.cs

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,58 @@ namespace Common;
1010

1111
public static class ConfigurationExtension
1212
{
13+
private static List<string> _emptyList = new List<string>();
14+
1315
public static IHostBuilder AddConfiguration<T>(this IHostBuilder hostBuilder, string? keyVaultUrl = null) where T: class
1416
{
1517
var configuration = CreateConfiguration(keyVaultUrl);
1618
return BuildIOptionsDependency<T>(hostBuilder,configuration);
1719
}
20+
/// <summary>
21+
/// Create
22+
/// </summary>
23+
/// <typeparam name="T"></typeparam>
24+
/// <param name="hostBuilder"></param>
25+
/// <param name="config"></param>
26+
/// <param name="keyVaultUrl"></param>
27+
/// <returns></returns>
1828
public static IHostBuilder AddConfiguration<T>(this IHostBuilder hostBuilder, out T config, string? keyVaultUrl = null) where T: class
1929
{
2030
var configuration = CreateConfiguration(keyVaultUrl);
2131

2232
config = configuration.Get<T>();
2333
return BuildIOptionsDependency<T>(hostBuilder,configuration);
2434
}
35+
/// <summary>
36+
/// Creates and bind configuration that is not registered to IOptions
37+
/// </summary>
38+
/// <typeparam name="T"></typeparam>
39+
/// <param name="keyVaultUrl"></param>
40+
/// <param name="configFilePaths"></param>
41+
/// <returns></returns>
42+
public static T GetConfiguration<T>(string? keyVaultUrl = null, List<string>? configFilePaths = null) where T: class
43+
{
44+
var configuration = CreateConfiguration(keyVaultUrl, configFilePaths);
45+
return configuration.Get<T>();
46+
47+
}
2548

26-
private static IConfiguration CreateConfiguration(string? keyVaultUrl = null)
49+
50+
51+
52+
private static IConfiguration CreateConfiguration(string? keyVaultUrl = null, List<string>? configFilePaths = null)
2753
{
2854

2955
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
3056
var logger = loggerFactory.CreateLogger(nameof(ConfigurationExtension));
57+
3158
logger.LogInformation("Building Configuration");
3259
ConfigurationBuilder configBuilder = new ConfigurationBuilder();
60+
3361
keyVaultUrl ??= Environment.GetEnvironmentVariable("KeyVaultConnectionString");
34-
if(keyVaultUrl != null){
62+
63+
if(keyVaultUrl != null)
64+
{
3565
try
3666
{
3767
configBuilder.AddAzureKeyVault(new Uri(keyVaultUrl), new DefaultAzureCredential(), new AzureKeyVaultConfigurationOptions());
@@ -41,6 +71,13 @@ private static IConfiguration CreateConfiguration(string? keyVaultUrl = null)
4171
logger.LogError(ex, "Unable to add Azure KeyVault");
4272
}
4373
}
74+
if(configFilePaths != null)
75+
{
76+
foreach(var configFile in configFilePaths)
77+
{
78+
configBuilder.AddJsonFile(configFile);
79+
}
80+
}
4481
configBuilder.AddEnvironmentVariables();
4582
return configBuilder.Build();
4683
}

application/CohortManager/src/Functions/Shared/DataServices.Database/DataServicesContext.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ public class DataServicesContext : DbContext
1010
DbSet<LanguageCode> languageCodes { get; set; }
1111
DbSet<CurrentPosting> currentPostings { get; set; }
1212
DbSet<ExcludedSMULookup> excludedSMULookups { get; set; }
13-
public DbSet<ExceptionManagement> exceptionManagements { get; set; }
13+
public DbSet<ExceptionManagement> ExceptionManagements { get; set; }
1414
DbSet<GPPractice> gPPractices { get; set; }
1515
DbSet<BsSelectRequestAudit> bsSelectRequestAudits {get;set;}
16-
16+
public DbSet<ParticipantManagement> ParticipantManagements {get;set;}
17+
public DbSet<CohortDistribution> CohortDistributions {get;set;}
1718
public DataServicesContext(DbContextOptions<DataServicesContext> options) : base(options)
1819
{ }
1920

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,51 @@
1-
namespace NHS.CohortManager.Tests.SnapShotTests;
1+
namespace NHS.CohortManager.Tests.SnapshotTests;
22

33
using System.Threading.Tasks;
4+
using Common;
45
using DataServices.Database;
6+
using DiffEngine;
57
using Microsoft.EntityFrameworkCore;
8+
using Model;
69
using VerifyMSTest;
710

811

912
[TestClass]
1013
public class AddFileTests : VerifyBase
1114
{
1215
private DataServicesContext _dbContext;
13-
[TestInitialize]
14-
public void Setup()
16+
private readonly VerifySettings verifySettings;
17+
public AddFileTests()
1518
{
19+
verifySettings = new VerifySettings();
20+
verifySettings.UseDirectory("AddStep1");
21+
verifySettings.DontScrubDateTimes();
22+
verifySettings.IgnoreMembers<ExceptionManagement>(i => i.ExceptionDate,i => i.ErrorRecord,i => i.DateCreated,i => i.ExceptionId );
23+
verifySettings.IgnoreMembers<ParticipantManagement>(i => i.ParticipantId, i => i.RecordInsertDateTime, i => i.RecordInsertDateTime);
24+
verifySettings.IgnoreMembers<CohortDistribution>(i => i.CohortDistributionId, i => i.ParticipantId,i => i.RecordInsertDateTime, i => i.RecordUpdateDateTime, i => i.RequestId);
1625

17-
var options = new DbContextOptionsBuilder<DataServicesContext>().UseSqlServer("").Options;
26+
List<string> configFiles = ["appsettings.json"];
27+
var config = ConfigurationExtension.GetConfiguration<SnapshotTestsConfig>(null,configFiles);
28+
29+
var options = new DbContextOptionsBuilder<DataServicesContext>().UseSqlServer(config.ConnectionString).Options;
1830
_dbContext = new DataServicesContext(options);
31+
1932
}
2033
[TestMethod]
2134
public async Task ValidateExceptionTable()
2235
{
23-
var Exceptions = await _dbContext.exceptionManagements.ToListAsync();
24-
await Verify(Exceptions);
36+
var Exceptions = await _dbContext.ExceptionManagements.OrderBy(i => i.NhsNumber).ThenBy(i => i.RuleId).ToListAsync();
37+
await Verify(Exceptions,verifySettings);
38+
}
39+
[TestMethod]
40+
public async Task ValidateParticipantManagementTable()
41+
{
42+
var Participants = await _dbContext.ParticipantManagements.OrderBy(i => i.NHSNumber).ToListAsync();
43+
await Verify(Participants,verifySettings);
44+
}
45+
[TestMethod]
46+
public async Task ValidateCohortDistributionTable()
47+
{
48+
var Participants = await _dbContext.CohortDistributions.OrderBy(i => i.NHSNumber).ToListAsync();
49+
await Verify(Participants,verifySettings);
2550
}
2651
}

0 commit comments

Comments
 (0)