Files
laatzen/LaaProductionWeb/LaaProduction.Data.Cordonel.UnitTests/Mock/SentinelTestContext.cs
T

121 lines
6.4 KiB
C#

namespace LaaProduction.Data.Cordonel.UnitTests.Mock
{
using LaaPackages.Features.Cordonel;
using LaaProduction.Data.Cordonel.Models;
using LaaProduction.Data.Cordonel.Sentinel;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
public class SentinelTestContext
{
private readonly CordonelAppVeriosnCrc[] appsVersionsCrcs;
private readonly CordonelAppsDictionary appsDictionary;
private readonly CordonelMetrologyValues metrologyValues;
private readonly CordonelRSSIValues rssiValues;
private readonly CordonelRegisterHistory[] registerHistory;
private readonly CordonelRequirements requirements;
private readonly EOLProgressModel eolProgressModel;
private readonly CordonelProductionData productionData;
private readonly CordonelAppsDictionary appsDictionaryDefaults;
public SentinelTestContext(string jsonFile)
{
var data = JsonConvert.DeserializeObject<Dictionary<string, object>>(
value: File.ReadAllText(jsonFile),
settings: new JsonSerializerSettings
{
Formatting = Formatting.Indented,
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple
});
this.appsVersionsCrcs = data.TryGetValue<CordonelAppVeriosnCrc[]>(nameof(Sentinel.TryGetCordonelAppsAndFWVersionValues));
this.appsDictionary = data.TryGetValue<CordonelAppsDictionary>(nameof(Sentinel.TryGetCordonelAppsAndRegisterValues));
this.metrologyValues = data.TryGetValue<CordonelMetrologyValues>(nameof(Sentinel.TryGetCordonelMetrologyValues));
this.rssiValues = data.TryGetValue<CordonelRSSIValues>(nameof(Sentinel.TryGetCordonelRadioDefaults));
this.registerHistory = data.TryGetValue<CordonelRegisterHistory[]>(nameof(CordonelDbContext.GetLatestRegistersWithValues));
this.requirements = data.TryGetValue<CordonelRequirements>(nameof(Sentinel.TryGetCordonelRequirements));
this.eolProgressModel = data.TryGetValue<EOLProgressModel>(nameof(Sentinel.TryGetEOLProgressModel));
this.productionData = data.TryGetValue<CordonelProductionData>(nameof(Sentinel.TryGetUniqueProductionData));
this.appsDictionaryDefaults = data.TryGetValue<CordonelAppsDictionary>(nameof(CordonelAppsDictionary));
this.Sentinel = new Sentinel(
httpClient: new SentinelMockHttpClient(this),
cordonelDbContext: new SentinelMockDbContext(this));
}
internal event Action<CordonelAppVeriosnCrc[]> AppsVersionsCrcsChanged;
internal event Action<CordonelRegisterHistory[]> RegisterHistoryChanged;
internal event Action<CordonelAppsDictionary> AppsDictionaryDefaultsChanged;
internal event Action<CordonelMetrologyValues> MetroloryValuesChanged;
internal event Action<CordonelRSSIValues> RSSIValuesChanged;
internal event Action<CordonelRequirements> RequirementsChanged;
internal event Action<EOLProgressModel> EOLProgressModelChanged;
internal event Action<CordonelProductionData[]> ProductionDataChanged;
public Sentinel Sentinel { get; }
internal void PrepareNullProductionData() => this.ProductionDataChanged?.Invoke(default(CordonelProductionData[]));
internal void PrepareEmptyProductionData() => this.ProductionDataChanged?.Invoke(new CordonelProductionData[0]);
internal void PrepareMultipleProductionData() => this.ProductionDataChanged?.Invoke(new CordonelProductionData[] { null, null });
internal void PrepareUniqueProductionData() => this.ProductionDataChanged?.Invoke(new CordonelProductionData[] { this.productionData });
internal void PrepareNullEOLProgressModel() => this.EOLProgressModelChanged?.Invoke(null);
internal void PrepareEmptyEOLProgressModel() => this.EOLProgressModelChanged?.Invoke(new EOLProgressModel());
internal void PrepareNullRequirements() => this.RequirementsChanged?.Invoke(null);
internal void PrepareEOLProgressModel() => this.EOLProgressModelChanged?.Invoke(this.eolProgressModel);
internal void PrepareRequiremnets() => this.RequirementsChanged?.Invoke(this.requirements);
internal void PrepareNullRegisterHistory() => this.RegisterHistoryChanged?.Invoke(null);
internal void PrepareEmptyRegisterHistory() => this.RegisterHistoryChanged?.Invoke(new CordonelRegisterHistory[0]);
internal void PrepareRegisterHistory() => this.RegisterHistoryChanged?.Invoke(this.registerHistory);
internal void PrepareNullAppsDictionary() => this.AppsDictionaryDefaultsChanged?.Invoke(null);
internal void PrepareDefaultAppsDictionary() => this.AppsDictionaryDefaultsChanged?.Invoke(this.appsDictionaryDefaults);
internal void PrepareNullAppsVersionsCrcs() => this.AppsVersionsCrcsChanged?.Invoke(null);
internal void PrepareAppsVersionsCrcs() => this.AppsVersionsCrcsChanged?.Invoke(this.appsVersionsCrcs);
internal void PrepareEmptyAppsVersionsCrcs() => this.AppsVersionsCrcsChanged?.Invoke(new CordonelAppVeriosnCrc[0]);
internal void PrepareNullMetrologyValues() => this.MetroloryValuesChanged?.Invoke(null);
internal void PrepareMetrologyValues() => this.MetroloryValuesChanged?.Invoke(this.metrologyValues);
internal void PrepareNullRSSIValues() => this.RSSIValuesChanged?.Invoke(null);
internal void PrepareRSSIValues() => this.RSSIValuesChanged?.Invoke(this.rssiValues);
internal Tuple<EOLProgressModel, CordonelRequirements> TryCompareRequirementsIdAndVersionTestCase(int v1, int v2, int v3, int v4, int v5, int v6, int v7, int v8)
=> new Tuple<EOLProgressModel, CordonelRequirements>(
item1: new EOLProgressModel
{
RequirementRequestChecked = EOLStatus.OK,
StandardRequirementId = v1,
StandardRequirementVersion = v2,
SpecialRequirementId = v3,
SpecialRequirementVersion = v4
},
item2: new CordonelRequirements
{
StandardId = v5,
StandardVersion = v6,
SpecialId = v7,
SpecialVersion = v8,
});
}
}