private async Task RunApplyLiveOnlyMerge(StandardTestYaml testYaml) { IResourcePatcher patcher = new ResourcePatcher(); var parameters = new CreatePatchParameters { ApplyResource = testYaml.Apply, LiveResource = testYaml.Live, }; if (testYaml.ResourceKind != null) { parameters.ResourceKind = await Manager.GetResourceKindAsync( testYaml.ResourceKind.ApiVersion, testYaml.ResourceKind.Kind); } var patch = patcher.CreateJsonPatch(parameters); var operations = new ResourceSerializers().Convert <List <PatchOperation> >(patch); var expected = testYaml.Patch.OrderBy(op => op.ToString()).ToList(); operations = operations.OrderBy(op => op.ToString()).ToList(); Assert.Equal(expected, operations); }
public Context(CreatePatchParameters context) { Path = string.Empty; Kind = context.ResourceKind ?? DefaultResourceKind.Unknown; Element = context.ResourceKind?.Schema ?? DefaultResourceKindElement.Unknown; ApplyToken = (JToken)context.ApplyResource; LastAppliedToken = (JToken)context.LastAppliedResource; LiveToken = (JToken)context.LiveResource; }
public JsonPatchDocument CreateJsonPatch(CreatePatchParameters parameters) { if (parameters is null) { throw new ArgumentNullException(nameof(parameters)); } var context = new Context(parameters); var patch = AccumulatePatch(new JsonPatchDocument(), context); return(patch); }