def test_one(self):
        if get_postgres_version() < (9, 4):
            raise unittest.SkipTest('Invalid Postgres version for test')

        metric_record = MetricRecord(data={
            'one': 1,
            'two': 'two',
        })
        metric_record.save()

        one_field = JsonField('data', key='one', alias='my_one_alias')
        two_field = JsonField('data', key='two', alias='my_two_alias')

        query = Query().from_table(
            MetricRecord,
            fields=[two_field]).where(**{two_field.get_where_key(): 'one'})
        self.assertEqual(query.get_sql(), (
            'SELECT querybuilder_tests_metricrecord.data->\'two\' AS "my_two_alias" FROM '
            'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'two\' = %(A0)s)'
        ))
        self.assertEqual(query.select(), [])

        query = Query().from_table(
            MetricRecord,
            fields=[two_field]).where(**{two_field.get_where_key(): 'two'})
        self.assertEqual(query.get_sql(), (
            'SELECT querybuilder_tests_metricrecord.data->\'two\' AS "my_two_alias" FROM '
            'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'two\' = %(A0)s)'
        ))

        # Django 3.1 changes the raw queryset behavior so querybuilder isn't going to change that behavior
        if VERSION[0] == 3 and VERSION[1] == 1:
            self.assertEqual(query.select(), [{'my_two_alias': '"two"'}])
        else:
            self.assertEqual(query.select(), [{'my_two_alias': 'two'}])

        query = Query().from_table(
            MetricRecord,
            fields=[one_field]).where(**{one_field.get_where_key(): '1'})
        self.assertEqual(query.get_sql(), (
            'SELECT querybuilder_tests_metricrecord.data->\'one\' AS "my_one_alias" FROM '
            'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'one\' = %(A0)s)'
        ))

        # Django 3.1 changes the raw queryset behavior so querybuilder isn't going to change that behavior
        if VERSION[0] == 3 and VERSION[1] == 1:
            self.assertEqual(query.select(), [{'my_one_alias': '1'}])
        else:
            self.assertEqual(query.select(), [{'my_one_alias': 1}])

        query = Query().from_table(
            MetricRecord,
            fields=[one_field]).where(**{one_field.get_where_key(): '2'})
        self.assertEqual(query.get_sql(), (
            'SELECT querybuilder_tests_metricrecord.data->\'one\' AS "my_one_alias" FROM '
            'querybuilder_tests_metricrecord WHERE (querybuilder_tests_metricrecord.data->>\'one\' = %(A0)s)'
        ))
        self.assertEqual(query.select(), [])
    def test_one(self):
        if get_postgres_version() < (9, 4):
            raise unittest.SkipTest('Invalid Postgres version for test')

        metric_record = MetricRecord(data={
            'one': 1,
            'two': 'two',
        })
        metric_record.save()

        one_field = JsonField('data', key='one', alias='my_one_alias')
        two_field = JsonField('data', key='two', alias='my_two_alias')

        query = Query().from_table(MetricRecord, fields=[two_field]).where(**{
            two_field.get_where_key(): 'one'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'two\' AS "my_two_alias" FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [])

        query = Query().from_table(MetricRecord, fields=[two_field]).where(**{
            two_field.get_where_key(): 'two'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'two\' AS "my_two_alias" FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [{'my_two_alias': 'two'}])

        query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
            one_field.get_where_key(): '1'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'one\' AS "my_one_alias" FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [{'my_one_alias': 1}])

        query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
            one_field.get_where_key(): '2'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'one\' AS "my_one_alias" FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [])
    def test_one(self):
        metric_record = MetricRecord(data={
            'one': 1,
            'two': 'two',
        })
        metric_record.save()

        one_field = JsonField('data', key='one', alias='my_one_alias')
        two_field = JsonField('data', key='two', alias='my_two_alias')

        query = Query().from_table(MetricRecord, fields=[two_field]).where(**{
            two_field.get_where_key(): 'one'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'two\' AS my_two_alias FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [])

        query = Query().from_table(MetricRecord, fields=[two_field]).where(**{
            two_field.get_where_key(): 'two'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'two\' AS my_two_alias FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [{'my_two_alias': 'two'}])

        query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
            one_field.get_where_key(): '1'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'one\' AS my_one_alias FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [{'my_one_alias': 1}])

        query = Query().from_table(MetricRecord, fields=[one_field]).where(**{
            one_field.get_where_key(): '2'
        })
        self.assertEqual(
            query.get_sql(),
            (
                'SELECT tests_metricrecord.data->\'one\' AS my_one_alias FROM tests_metricrecord '
                'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'
            )
        )
        self.assertEqual(query.select(), [])
Example #4
0
    def test_one(self):
        if get_postgres_version() < (9, 4):
            raise unittest.SkipTest('Invalid Postgres version for test')

        metric_record = MetricRecord(data={
            'one': 1,
            'two': 'two',
        })
        metric_record.save()

        one_field = JsonField('data', key='one', alias='my_one_alias')
        two_field = JsonField('data', key='two', alias='my_two_alias')

        query = Query().from_table(
            MetricRecord,
            fields=[two_field]).where(**{two_field.get_where_key(): 'one'})
        self.assertEqual(query.get_sql(), (
            'SELECT tests_metricrecord.data->\'two\' AS "my_two_alias" FROM tests_metricrecord '
            'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'))
        self.assertEqual(query.select(), [])

        query = Query().from_table(
            MetricRecord,
            fields=[two_field]).where(**{two_field.get_where_key(): 'two'})
        self.assertEqual(query.get_sql(), (
            'SELECT tests_metricrecord.data->\'two\' AS "my_two_alias" FROM tests_metricrecord '
            'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'))
        self.assertEqual(query.select(), [{'my_two_alias': 'two'}])

        query = Query().from_table(
            MetricRecord,
            fields=[one_field]).where(**{one_field.get_where_key(): '1'})
        self.assertEqual(query.get_sql(), (
            'SELECT tests_metricrecord.data->\'one\' AS "my_one_alias" FROM tests_metricrecord '
            'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'))
        self.assertEqual(query.select(), [{'my_one_alias': 1}])

        query = Query().from_table(
            MetricRecord,
            fields=[one_field]).where(**{one_field.get_where_key(): '2'})
        self.assertEqual(query.get_sql(), (
            'SELECT tests_metricrecord.data->\'one\' AS "my_one_alias" FROM tests_metricrecord '
            'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'))
        self.assertEqual(query.select(), [])
Example #5
0
    def test_one(self):
        metric_record = MetricRecord(data={
            'one': 1,
            'two': 'two',
        })
        metric_record.save()

        one_field = JsonField('data', key='one', alias='my_one_alias')
        two_field = JsonField('data', key='two', alias='my_two_alias')

        query = Query().from_table(
            MetricRecord,
            fields=[two_field]).where(**{two_field.get_where_key(): 'one'})
        self.assertEqual(query.get_sql(), (
            'SELECT tests_metricrecord.data->\'two\' AS my_two_alias FROM tests_metricrecord '
            'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'))
        self.assertEqual(query.select(), [])

        query = Query().from_table(
            MetricRecord,
            fields=[two_field]).where(**{two_field.get_where_key(): 'two'})
        self.assertEqual(query.get_sql(), (
            'SELECT tests_metricrecord.data->\'two\' AS my_two_alias FROM tests_metricrecord '
            'WHERE (tests_metricrecord.data->>\'two\' = %(A0)s)'))
        self.assertEqual(query.select(), [{'my_two_alias': 'two'}])

        query = Query().from_table(
            MetricRecord,
            fields=[one_field]).where(**{one_field.get_where_key(): '1'})
        self.assertEqual(query.get_sql(), (
            'SELECT tests_metricrecord.data->\'one\' AS my_one_alias FROM tests_metricrecord '
            'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'))
        self.assertEqual(query.select(), [{'my_one_alias': 1}])

        query = Query().from_table(
            MetricRecord,
            fields=[one_field]).where(**{one_field.get_where_key(): '2'})
        self.assertEqual(query.get_sql(), (
            'SELECT tests_metricrecord.data->\'one\' AS my_one_alias FROM tests_metricrecord '
            'WHERE (tests_metricrecord.data->>\'one\' = %(A0)s)'))
        self.assertEqual(query.select(), [])