Example #1
0
    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))
Example #2
0
    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)
Example #3
0
    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))
Example #4
0
    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))
Example #5
0
    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))
Example #6
0
    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))
Example #7
0
    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)
Example #8
0
    def test_will_get_param_object_from_binding_param(self):
        v = 'v'
        p = Pypher()
        param = p.bind_param(v)

        self.assertIsInstance(param, Param)