def test_wildcard_path_4(self):
     if self.db.provider.dialect == 'Oracle':
         raise unittest.SkipTest
     with raises_if(self, self.db.provider.dialect != 'MySQL',
                    TranslationError, '...does not support wildcards in JSON path...'):
         values = get(p.info[...][:][...][:] for p in self.Product)[:]
         self.assertSetEqual(set(values), {'16GB', '64GB'})
 def test_var_in_json(self):
     with raises_if(self, self.db.provider.dialect == 'Oracle',
                    TypeError, "For `key in JSON` operation Oracle supports literal key values only, "
                               "parameters are not allowed: key in p.info['colors']"):
         key = 'Gold'
         obj = get(p for p in self.Product if key in p.info['colors'])
         self.assertTrue(obj)
 def test_composite_param_in_condition(self):
     with raises_if(self, self.db.provider.dialect == 'Oracle',
                    TranslationError, "Oracle doesn't allow parameters in JSON paths"):
         key = 'models'
         index = 0
         p = get(p for p in self.Product if p.info[key][index]['name'] == 'Wi-Fi')
         self.assertIsNotNone(p)
 def test_ne_json_2(self):
     with raises_if(self, self.db.provider.dialect == 'Oracle', TranslationError,
                    "Oracle does not support comparison of json structures: p.info['os'] != Json({})"):
         p = get(p for p in self.Product if p.info['os'] != Json({}))
         self.assertTrue(p)
         p = get(p for p in self.Product if p.info['os'] != {'type': 'iOS', 'version': '8'})
         self.assertFalse(p)
 def test_len(self):
     with raises_if(self, self.db.provider.dialect == 'Oracle',
                    TranslationError, 'Oracle does not provide `length` function for JSON arrays'):
         val = select(len(p.tags) for p in self.Product).first()
         self.assertEqual(val, 3)
         val = select(len(p.info['colors']) for p in self.Product).first()
         self.assertEqual(val, 3)
 def test_composite_param(self):
     with raises_if(self, self.db.provider.dialect == 'Oracle',
                    TranslationError, "Oracle doesn't allow parameters in JSON paths"):
         key = 'models'
         index = 0
         val = get(p.info[key][index]['name'] for p in self.Product)
         self.assertEqual(val, 'Wi-Fi')
示例#7
0
 def test_ne_empty_list(self):
     with raises_if(
             self, self.db.provider.dialect == 'Oracle', TranslationError,
             "Oracle does not support comparison of json structures: p.info['colors'] != Json([])"
     ):
         p = get(p for p in self.Product if p.info['colors'] != Json([]))
         self.assertTrue(p)
示例#8
0
文件: test_json.py 项目: kociad/gym
 def test_equal_empty_list_2(self):
     with raises_if(
             self, db.provider.dialect == 'Oracle', TranslationError,
             "Oracle does not support comparison of json structures: p.info['colors'] == Json([])"
     ):
         p = get(p for p in Product if p.info['colors'] == Json([]))
         self.assertIsNone(p)
示例#9
0
文件: test_json.py 项目: kociad/gym
 def test_equal_list_4(self):
     colors = ['Gold', 'Silver', 'Space Gray']
     with raises_if(
             self, db.provider.dialect == 'Oracle', TranslationError,
             "Oracle does not support comparison of json structures: p.info['colors'] == Json(colors)"
     ):
         p = get(p for p in Product if p.info['colors'] == Json(colors))
         self.assertTrue(p)
 def test_wildcard_path_in_condition(self):
     errors = {
         'MySQL': 'Wildcards are not allowed in json_contains()',
         'SQLite': '...does not support wildcards in JSON path...',
         'PostgreSQL': '...does not support wildcards in JSON path...'
     }
     dialect = self.db.provider.dialect
     with raises_if(self, dialect in errors, TranslationError, errors.get(dialect)):
         p = get(p for p in self.Product if '16GB' in p.info['models'][:]['capacity'])
         self.assertTrue(p)
 def test_wildcard_path_with_params_as_string(self):
     if self.db.provider.dialect != 'Oracle':
         exc_msg = '...does not support wildcards in JSON path...'
     else:
         exc_msg = "Oracle doesn't allow parameters in JSON paths"
     with raises_if(self, self.db.provider.dialect != 'MySQL', TranslationError, exc_msg):
         key = 'models'
         index = 0
         values = get("p.info[key][:]['capacity'][index] for p in self.Product")
         self.assertListEqual(values, ['16GB', '16GB'])
示例#12
0
 def test_equal_json_1(self):
     with raises_if(
             self, self.db.provider.dialect == 'Oracle', TranslationError,
             "Oracle does not support comparison of json structures: "
             "p.info['os'] == {'type':'iOS', 'version':'8'}"):
         p = get(p for p in self.Product if p.info['os'] == {
             'type': 'iOS',
             'version': '8'
         })
         self.assertTrue(p)
 def test_wildcard_path_3(self):
     with raises_if(self, self.db.provider.dialect not in ('Oracle', 'MySQL'),
                    TranslationError, '...does not support wildcards in JSON path...'):
         names = get(p.info[...][0]['name'] for p in self.Product)
         self.assertSetEqual(set(names), {'Wi-Fi'})
 def test_wildcard_path_2(self):
     with raises_if(self, self.db.provider.dialect not in ('Oracle', 'MySQL'),
                    TranslationError, '...does not support wildcards in JSON path...'):
         values = get(p.info['os'][...] for p in self.Product)
         self.assertSetEqual(set(values), {'iOS', '8'})
示例#15
0
文件: test_json.py 项目: kociad/gym
 def test_wildcard_path_1(self):
     with raises_if(self, db.provider.dialect not in ('Oracle', 'MySQL'),
                    TranslationError,
                    '...does not support wildcards in JSON path...'):
         names = get(p.info['models'][:]['name'] for p in Product)
         self.assertSetEqual(set(names), {'Wi-Fi', 'Wi-Fi + Cellular'})