|
| 1 | +import json |
| 2 | +from pathlib import Path |
| 3 | +from gendiff.find_diff import generate_diff |
| 4 | + |
| 5 | + |
| 6 | +def read_file(filepath): |
| 7 | + return Path(filepath).read_text() |
| 8 | + |
| 9 | + |
| 10 | +def test_json_diff(): |
| 11 | + data1_path = 'tests/test_data/data1.json' |
| 12 | + data2_path = 'tests/test_data/data2.json' |
| 13 | + expected_path = 'tests/test_data/result.txt' |
| 14 | + |
| 15 | + data1 = json.loads(read_file(data1_path)) |
| 16 | + data2 = json.loads(read_file(data2_path)) |
| 17 | + expected = read_file(expected_path).strip() |
| 18 | + |
| 19 | + result = generate_diff(data1, data2).strip() |
| 20 | + |
| 21 | + assert result == expected |
| 22 | + |
| 23 | +def test_key_only_in_first(): |
| 24 | + data1 = {'key1': 'value1'} |
| 25 | + data2 = {} |
| 26 | + expected = "{\n - key1: value1\n}" |
| 27 | + assert generate_diff(data1, data2) == expected |
| 28 | + |
| 29 | +def test_key_only_in_second(): |
| 30 | + data1 = {} |
| 31 | + data2 = {'key1': 'value1'} |
| 32 | + expected = "{\n + key1: value1\n}" |
| 33 | + assert generate_diff(data1, data2) == expected |
| 34 | + |
| 35 | +def test_identical_keys(): |
| 36 | + data1 = {'key1': 'value1'} |
| 37 | + data2 = {'key1': 'value1'} |
| 38 | + expected = "{\n key1: value1\n}" |
| 39 | + assert generate_diff(data1, data2) == expected |
0 commit comments