public static async Task <(IReadOnlyCollection <DiffItem> mismatches, JToken expected)> CompareAndRebaseAsync(this TestCase testCase, JToken actual, JToken @base, IEnumerable <DiffItem> actualDiffs, string resultName, ITokenSelectorProvider idProvider, bool rebaseline) { var expectedDiffs = await testCase.GetObjectFromJsonAsync <IEnumerable <DiffItem> >(resultName) ?? Enumerable.Empty <DiffItem>(); var expected = @base.DeepClone(); try { expected.ApplyPatch(expectedDiffs); } catch (Exception) { await testCase.RebaseContentOrStoreTmpAsync(resultName, actualDiffs.ToIndentedJson(), rebaseline); throw; } var mismatches = JsonPatchCreator.Compare(expected, actual, idProvider).ToList(); if (mismatches.Count > 0) { await testCase.RebaseContentOrStoreTmpAsync(resultName, actualDiffs.ToIndentedJson(), rebaseline); } await testCase.AddTmpItemAsync("full_" + resultName, actual.ToIndentedJson()); return(mismatches, expected); }
public static async Task AssertContentAsync(this TestCase testCase, string actualContent, string resultName, Action <string, string> failAction, bool rebase) { await testCase.AssertContentAsync(actualContent, resultName, async (actual, expected) => { await testCase.RebaseContentOrStoreTmpAsync(resultName, actualContent, rebase); failAction(actual, expected); }); }