public void Updating_overwrites_previous_cf_cache_and_updates_cf_data() { var ctx = new Context(); // Load initial CfCache just to test that it gets replaced var testCfObj = new CustomFormatCache { TrashIdMappings = new List <TrashIdMapping> { new("", "") { CustomFormatId = 5 } } }; ctx.ServiceCache.Load <CustomFormatCache>().Returns(testCfObj); ctx.Persister.Load(); // Update with new cached items var results = new CustomFormatTransactionData(); results.NewCustomFormats.Add(QuickMakeCf("cfname", "trashid", 10)); var customFormatData = new List <ProcessedCustomFormatData> { new("", "trashid", new JObject()) { CacheEntry = new TrashIdMapping("trashid", "cfname", 10) } }; ctx.Persister.Update(customFormatData); ctx.Persister.CfCache.Should().BeEquivalentTo(new CustomFormatCache { TrashIdMappings = new List <TrashIdMapping> { customFormatData[0].CacheEntry ! } });
private ProcessedCustomFormatData QuickMakeCf(string cfName, string trashId, int cfId) { return(new(cfName, trashId, new JObject()) { CacheEntry = new TrashIdMapping(trashId, cfName) { CustomFormatId = cfId } }); }
public void Combination_of_create_update_and_unchanged_and_verify_proper_json_merging() { const string radarrCfData = @"[{ 'id': 1, 'name': 'user_defined', 'specifications': [{ 'name': 'spec1', 'negate': false, 'fields': [{ 'name': 'value', 'value': 'value1' }] }] }, { 'id': 2, 'name': 'updated', 'specifications': [{ 'name': 'spec2', 'negate': false, 'fields': [{ 'name': 'value', 'untouchable': 'field', 'value': 'value1' }] }] }, { 'id': 3, 'name': 'no_change', 'specifications': [{ 'name': 'spec4', 'negate': false, 'fields': [{ 'name': 'value', 'value': 'value1' }] }] }]"; var guideCfData = JsonConvert.DeserializeObject <List <JObject> >(@"[{ 'name': 'created', 'specifications': [{ 'name': 'spec5', 'fields': { 'value': 'value2' } }] }, { 'name': 'updated_different_name', 'specifications': [{ 'name': 'spec2', 'negate': true, 'new_spec_field': 'new_spec_value', 'fields': { 'value': 'value2', 'new_field': 'new_value' } }, { 'name': 'new_spec', 'fields': { 'value': 'value3' } }] }, { 'name': 'no_change', 'specifications': [{ 'name': 'spec4', 'negate': false, 'fields': { 'value': 'value1' } }] }]"); var radarrCfs = JsonConvert.DeserializeObject <List <JObject> >(radarrCfData); var guideCfs = new List <ProcessedCustomFormatData> { new("created", "", guideCfData[0]), new("updated_different_name", "", guideCfData[1]) { CacheEntry = new TrashIdMapping("", "", 2) },