예제 #1
0
    def test_q_attribute_selection(self):
        # Combinations of attribute lookups, __getitem__ and calling.
        q = Q.value
        self.assertEqual(get_query_result(q, self.obj), 'value')

        q = Q['attr']
        self.assertEqual(get_query_result(q, self.obj), 'item attr')

        q = Q.action()
        self.assertEqual(get_query_result(q, self.obj), 'action-result')

        q = Q.nested_obj.action()
        self.assertEqual(get_query_result(q, self.obj), 'action-result')

        q = Q.nested_obj.action()
        self.assertEqual(get_query_result(q, self.obj), 'action-result')

        q = Q.nested_obj.nested_obj['attr']
        self.assertEqual(get_query_result(q, self.obj), 'item attr')

        # Add some operators
        q = Q.nested_obj.nested_obj.value + '-' + Q.value
        self.assertEqual(get_query_result(q, self.obj), 'value-value')

        q = ~ Q.true()
        self.assertEqual(get_query_result(q, self.obj), False)

        q = Q.true() & Q.nested_obj.true()
        self.assertEqual(get_query_result(q, self.obj), True)

        q = Q.true() | Q.nested_obj.false()
        self.assertEqual(get_query_result(q, self.obj), True)
    def test_q_attribute_selection(self):
        # Combinations of attribute lookups, __getitem__ and calling.
        q = Q.value
        self.assertEqual(get_query_result(q, self.obj), 'value')

        q = Q['attr']
        self.assertEqual(get_query_result(q, self.obj), 'item attr')

        q = Q.action()
        self.assertEqual(get_query_result(q, self.obj), 'action-result')

        q = Q.nested_obj.action()
        self.assertEqual(get_query_result(q, self.obj), 'action-result')

        q = Q.nested_obj.action()
        self.assertEqual(get_query_result(q, self.obj), 'action-result')

        q = Q.nested_obj.nested_obj['attr']
        self.assertEqual(get_query_result(q, self.obj), 'item attr')

        # Add some operators
        q = Q.nested_obj.nested_obj.value + '-' + Q.value
        self.assertEqual(get_query_result(q, self.obj), 'value-value')

        q = ~Q.true()
        self.assertEqual(get_query_result(q, self.obj), False)

        q = Q.true() & Q.nested_obj.true()
        self.assertEqual(get_query_result(q, self.obj), True)

        q = Q.true() | Q.nested_obj.false()
        self.assertEqual(get_query_result(q, self.obj), True)