예제 #1
0
        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 !
                }
            });
예제 #2
0
 private ProcessedCustomFormatData QuickMakeCf(string cfName, string trashId, int cfId)
 {
     return(new(cfName, trashId, new JObject())
     {
         CacheEntry = new TrashIdMapping(trashId, cfName)
         {
             CustomFormatId = cfId
         }
     });
 }
예제 #3
0
        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)
                },