def test_can_bind_named_primitive_to_pypher(self): v = 'value {}'.format(random()) n = 'some_param' p = Pypher() p.bind_param(v, n) str(p) params = p.bound_params self.assertIn(v, params.values()) self.assertIn(n, params) self.assertEqual(1, len(params))
def test_can_ensure_that_a_value_the_same_as_a_previously_bound_param_returns_previous_params_value( self): n = 'some_name' v = 'value {}'.format(random()) p = Pypher() param = p.bind_param(v, n) param2 = p.bind_param(n) str(p) params = p.bound_params self.assertEqual(1, len(params)) self.assertEqual(param.name, param2.name)
def test_can_bind_multiple_uniquie_primitives_to_pypher(self): v = 'value {}'.format(random()) v2 = 'value {}'.format(random()) p = Pypher() p.bind_param(v) p.bind_param(v2) str(p) params = p.bound_params self.assertIn(v, params.values()) self.assertIn(v2, params.values()) self.assertEqual(2, len(params))
def test_can_bind_params_and_clear_them_using_reset(self): p = Pypher() p.bind_param(1) p.bind_param(2) s = str(p) bp = p.bound_params p.reset() bp2 = p.bound_params self.assertEqual(2, len(bp)) self.assertEqual(0, len(bp2))
def test_can_bind_mixed_primitive_and_param_object_to_pypher(self): n = 'some name' v = 'value {}'.format(random()) v2 = 'value {}'.format(random()) v = Param(n, v) p = Pypher() param = p.bind_param(v) param2 = p.bind_param(v2) str(p) params = p.bound_params self.assertNotEqual(id(v), id(param)) self.assertIn(v.value, params.values()) self.assertIn(v2, params.values()) self.assertIn(n, params) self.assertEqual(2, len(params))
def test_can_bind_multiple_mixed_named_unamed_uniquie_primitives_to_nested_pypher_instances(self): v = 'value {}'.format(random()) v2 = 'value {}'.format(random()) n = 'some_name' p = Pypher() p2 = Pypher() p.bind_param(v) p2.bind_param(v2, n) p.func('testing', p2) str(p) params = p.bound_params self.assertIn(v, params.values()) self.assertIn(v2, params.values()) self.assertIn(n, params) self.assertEqual(2, len(params))
def test_will_allow_binding_of_pypher_instances_as_values(self): p = Pypher() p.bind_param(__.ID('x'), 'SOME_ID') str(p) params = p.bound_params self.assertIn('SOME_ID', params) self.assertEqual('id(x)', params['SOME_ID']) self.assertEqual(1, len(params)) # do it in a Pypher string p = Pypher() val = 'some value {}'.format(random()) name = 'name' p.MATCH.node('p', 'person', lastname=__.coalesce(name, val)) cy = str(p) params = p.bound_params name = get_dict_key(params, 'name') val = get_dict_key(params, val) exp = 'MATCH (p:`person` {{`lastname`: coalesce(${name}, ${val})}})'.format( name=name, val=val) self.assertEqual(3, len(params)) self.assertEqual(exp, cy) # manually use Param and pass it in p = Pypher() val = 'some value {}'.format(random()) name = 'name' ln = Param(name, __.coalesce(name, val)) p.MATCH.node('p', 'person', lastname=ln) cy = str(p) params = p.bound_params name = get_dict_key(params, 'name') val = get_dict_key(params, val) exp = 'MATCH (p:`person` {{`lastname`: coalesce(${name}, ${val})}})'.format( name=name, val=val) self.assertEqual(3, len(params)) self.assertEqual(exp, cy)
def test_will_get_param_object_from_binding_param(self): v = 'v' p = Pypher() param = p.bind_param(v) self.assertIsInstance(param, Param)