From e382eb421006edf52ec06eb37877fe944d69097b Mon Sep 17 00:00:00 2001 From: Matthew Balvanz Date: Sun, 16 Jul 2017 08:36:58 -0500 Subject: [PATCH] Add tests for #36 SomethingLike not supporting Terms --- e2e/app.py | 6 ++++-- e2e/contracts/test_e2e.py | 10 ++++++++-- pact/test/test_matchers.py | 20 +++++++++++++++++++- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/e2e/app.py b/e2e/app.py index d01a4e4d9..b1dc08964 100644 --- a/e2e/app.py +++ b/e2e/app.py @@ -29,8 +29,10 @@ status=200, headers={'Content-Type': 'application/json'}, response=json.dumps({'results': [ - {'username': 'bob', 'id': 101, 'groups': [234, 123]}, - {'username': 'sue', 'id': 102, 'groups': [345, 123]}]})), + {'username': 'bob', 'id': 101, 'groups': [234, 123], + 'meta': {'name': 'favorite-color', 'value': 'blue'}}, + {'username': 'sue', 'id': 102, 'groups': [345, 123], + 'meta': {'name': 'supervisor', 'value': 'mary'}}]})), 'no users exist': Response( status=200, headers={'Content-Type': 'application/json'}, diff --git a/e2e/contracts/test_e2e.py b/e2e/contracts/test_e2e.py index 13fdbc929..4d149096a 100644 --- a/e2e/contracts/test_e2e.py +++ b/e2e/contracts/test_e2e.py @@ -112,6 +112,10 @@ def test_nested(self): 'username': Term('\w+', 'bob'), 'id': SomethingLike(123), 'groups': EachLike(123), + 'meta': SomethingLike({ + 'name': Term('.+', 'sample'), + 'value': Term('.+', 'data') + }) }, minimum=2)})) with pact: @@ -120,8 +124,10 @@ def test_nested(self): self.assertEqual(results.json(), { 'results': [ - {'username': 'bob', 'id': 123, 'groups': [123]}, - {'username': 'bob', 'id': 123, 'groups': [123]}]}) + {'username': 'bob', 'id': 123, 'groups': [123], + 'meta': {'name': 'sample', 'value': 'data'}}, + {'username': 'bob', 'id': 123, 'groups': [123], + 'meta': {'name': 'sample', 'value': 'data'}}]}) def test_falsey_bodies(self): (pact diff --git a/pact/test/test_matchers.py b/pact/test/test_matchers.py index 930908bb4..4d3b1eead 100644 --- a/pact/test/test_matchers.py +++ b/pact/test/test_matchers.py @@ -69,13 +69,31 @@ def test_invalid_types(self): self.assertIn('matcher must be one of ', str(e.exception)) - def test_call(self): + def test_basic_type(self): generate = SomethingLike(123).generate() self.assertEqual( generate, {'json_class': 'Pact::SomethingLike', 'contents': 123}) + def test_complex_type(self): + generate = SomethingLike({'name': Term('.+', 'admin')}).generate() + + self.assertEqual( + generate, + {'json_class': 'Pact::SomethingLike', + 'contents': {'name': { + 'json_class': 'Pact::Term', + 'data': { + 'matcher': { + 'json_class': 'Regexp', + 's': '.+', + 'o': 0 + }, + 'generate': 'admin' + } + }}}) + class TermTestCase(TestCase): def test_regex(self):