예제 #1
0
        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);
        }
예제 #2
0
 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);
     });
 }