121 lines
6.4 KiB
C#
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,
|
|
});
|
|
}
|
|
}
|