Skip to content

Commit bd667aa

Browse files
kurtmckeemichaelmior
authored andcommitted
Refactor tests/test_jsonpath.py
1 parent 2ba1c21 commit bd667aa

File tree

1 file changed

+36
-62
lines changed

1 file changed

+36
-62
lines changed

tests/test_jsonpath.py

Lines changed: 36 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,47 @@
11
import unittest
22

3-
from jsonpath_ng import jsonpath # For setting the global auto_id_field flag
3+
import pytest
44

5+
from jsonpath_ng import jsonpath
56
from jsonpath_ng.parser import parse
67
from jsonpath_ng.jsonpath import *
78
from jsonpath_ng.lexer import JsonPathLexerError
89

9-
class TestDatumInContext(unittest.TestCase):
10-
"""
11-
Tests of properties of the DatumInContext and AutoIdForDatum objects
12-
"""
13-
14-
@classmethod
15-
def setup_class(cls):
16-
logging.basicConfig()
17-
18-
def test_DatumInContext_init(self):
19-
20-
test_datum1 = DatumInContext(3)
21-
self.assertEqual(test_datum1.path, This())
22-
self.assertEqual(test_datum1.full_path, This())
23-
24-
test_datum2 = DatumInContext(3, path=Root())
25-
self.assertEqual(test_datum2.path, Root())
26-
self.assertEqual(test_datum2.full_path, Root())
27-
28-
test_datum3 = DatumInContext(3, path=Fields('foo'), context='does not matter')
29-
self.assertEqual(test_datum3.path, Fields('foo'))
30-
self.assertEqual(test_datum3.full_path, Fields('foo'))
31-
32-
test_datum3 = DatumInContext(3, path=Fields('foo'), context=DatumInContext('does not matter', path=Fields('baz'), context='does not matter'))
33-
self.assertEqual(test_datum3.path, Fields('foo'))
34-
self.assertEqual(test_datum3.full_path, Fields('baz').child(Fields('foo')))
35-
36-
def test_DatumInContext_in_context(self):
37-
38-
self.assertEqual(DatumInContext(3).in_context(path=Fields('foo'), context=DatumInContext('whatever')),
39-
DatumInContext(3, path=Fields('foo'), context=DatumInContext('whatever')))
40-
41-
self.assertEqual(DatumInContext(3).in_context(path=Fields('foo'), context='whatever').in_context(path=Fields('baz'), context='whatever'),
42-
DatumInContext(3).in_context(path=Fields('foo'), context=DatumInContext('whatever').in_context(path=Fields('baz'), context='whatever')))
43-
44-
# def test_AutoIdForDatum_pseudopath(self):
45-
# assert AutoIdForDatum(DatumInContext(value=3, path=Fields('foo')), id_field='id').pseudopath == Fields('foo')
46-
# assert AutoIdForDatum(DatumInContext(value={'id': 'bizzle'}, path=Fields('foo')), id_field='id').pseudopath == Fields('bizzle')
47-
48-
# assert AutoIdForDatum(DatumInContext(value={'id': 'bizzle'}, path=Fields('foo')),
49-
# id_field='id',
50-
# context=DatumInContext(value=3, path=This())).pseudopath == Fields('bizzle')
51-
52-
# assert (AutoIdForDatum(DatumInContext(value=3, path=Fields('foo')),
53-
# id_field='id').in_context(DatumInContext(value={'id': 'bizzle'}, path=This()))
54-
# ==
55-
# AutoIdForDatum(DatumInContext(value=3, path=Fields('foo')),
56-
# id_field='id',
57-
# context=DatumInContext(value={'id': 'bizzle'}, path=This())))
58-
59-
# assert (AutoIdForDatum(DatumInContext(value=3, path=Fields('foo')),
60-
# id_field='id',
61-
# context=DatumInContext(value={"id": 'bizzle'},
62-
# path=Fields('maggle'))).in_context(DatumInContext(value='whatever', path=Fields('miggle')))
63-
# ==
64-
# AutoIdForDatum(DatumInContext(value=3, path=Fields('foo')),
65-
# id_field='id',
66-
# context=DatumInContext(value={'id': 'bizzle'}, path=Fields('miggle').child(Fields('maggle')))))
6710

68-
# assert AutoIdForDatum(DatumInContext(value=3, path=Fields('foo')),
69-
# id_field='id',
70-
# context=DatumInContext(value={'id': 'bizzle'}, path=This())).pseudopath == Fields('bizzle').child(Fields('foo'))
11+
@pytest.mark.parametrize(
12+
"path_arg, context_arg, expected_path, expected_full_path",
13+
(
14+
(None, None, This(), This()),
15+
(Root(), None, Root(), Root()),
16+
(Fields('foo'), 'unimportant', Fields('foo'), Fields('foo')),
17+
(
18+
Fields('foo'),
19+
DatumInContext('unimportant', path=Fields('baz'), context='unimportant'),
20+
Fields('foo'),
21+
Fields('baz').child(Fields('foo')),
22+
),
23+
)
24+
)
25+
def test_datumincontext_init(path_arg, context_arg, expected_path, expected_full_path):
26+
datum = DatumInContext(3, path=path_arg, context=context_arg)
27+
assert datum.path == expected_path
28+
assert datum.full_path == expected_full_path
29+
30+
31+
def test_datumincontext_in_context():
32+
d1 = DatumInContext(3, path=Fields('foo'), context=DatumInContext('bar'))
33+
d2 = DatumInContext(3).in_context(path=Fields('foo'), context=DatumInContext('bar'))
34+
assert d1 == d2
35+
36+
37+
def test_datumincontext_in_context_nested():
38+
sequential_calls = DatumInContext(3).in_context(path=Fields('foo'), context='whatever').in_context(path=Fields('baz'), context='whatever')
39+
nested_calls = DatumInContext(3).in_context(
40+
path=Fields('foo'),
41+
context=DatumInContext('whatever').in_context(
42+
path=Fields('baz'), context='whatever')
43+
)
44+
assert sequential_calls == nested_calls
7145

7246

7347
class TestJsonPath(unittest.TestCase):

0 commit comments

Comments
 (0)