summaryrefslogtreecommitdiffstats
path: root/robotframework-onap/ONAPLibrary
diff options
context:
space:
mode:
Diffstat (limited to 'robotframework-onap/ONAPLibrary')
-rw-r--r--robotframework-onap/ONAPLibrary/JSONKeywords.py29
1 files changed, 22 insertions, 7 deletions
diff --git a/robotframework-onap/ONAPLibrary/JSONKeywords.py b/robotframework-onap/ONAPLibrary/JSONKeywords.py
index 5b9e24e..70fa2c0 100644
--- a/robotframework-onap/ONAPLibrary/JSONKeywords.py
+++ b/robotframework-onap/ONAPLibrary/JSONKeywords.py
@@ -25,10 +25,8 @@ class JSONKeywords(object):
def __init__(self):
super(JSONKeywords, self).__init__()
- @keyword
- def json_equals(self, left, right):
- """JSON Equals takes in two strings or json objects, converts them into json if needed and then compares them,
- returning if they are equal or not."""
+ def _json_compare(self, left, right, cmp):
+ """_json_compare takes two strings or JSON objects and checks their DeepDiff using cmp function."""
if isinstance(left, string_types):
left_json = json.loads(left)
else:
@@ -39,11 +37,28 @@ class JSONKeywords(object):
right_json = right
ddiff = DeepDiff(left_json, right_json, ignore_order=True)
- if ddiff == {}:
- return True
- else:
+ return cmp(ddiff)
+
+ @keyword
+ def json_equals(self, left, right):
+ """JSON Equals takes in two strings or json objects, converts them into json if needed and then compares them,
+ returning if they are equal or not."""
+ return self._json_compare(left, right, lambda ddiff: ddiff == {})
+
+ @keyword
+ def json_should_contain_sub_json(self, left, right):
+ """JSON Should Contain Sub JSON fails unless all items in right are found in left."""
+
+ # following could have been really long lambda but readability counts
+ def _is_subset(ddiff):
+ if ddiff == {}:
+ return True
+ if len(ddiff.keys()) == 1 and 'dictionary_item_removed' in ddiff.keys():
+ return True
return False
+ return self._json_compare(left, right, _is_subset)
+
@keyword
def make_list_into_dict(self, dict_list, key):
""" Converts a list of dicts that contains a field that has a unique key into a dict of dicts """