Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
    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);
    }