コード例 #1
0
def test_array_to_query_parameter_honors_given_type_errors_on_invalid():
    with pytest.raises(
            google.cloud.bigquery.dbapi.exceptions.ProgrammingError,
            match=
            "The given parameter type, INT, for foo is not a valid BigQuery scalar type.",
    ):
        _helpers.array_to_query_parameter((), "foo", "INT")
コード例 #2
0
def test_array_to_query_parameter_honors_given_type(alias, type_):
    from google.cloud import bigquery

    assert _helpers.array_to_query_parameter(
        [1.23], None,
        alias) == (bigquery.ArrayQueryParameter(None, type_, [1.23]))
    assert _helpers.array_to_query_parameter(
        (), "foo", alias) == (bigquery.ArrayQueryParameter("foo", type_, ()))
コード例 #3
0
    def test_array_to_query_parameter_valid_argument(self):
        expected_types = [
            ([True, False], "BOOL"),
            ([123, -456, 0], "INT64"),
            ([1.25, 2.50], "FLOAT64"),
            ([decimal.Decimal("1.25")], "NUMERIC"),
            ([b"foo", b"bar"], "BYTES"),
            ([u"foo", u"bar"], "STRING"),
            ([datetime.date(2017, 4, 1),
              datetime.date(2018, 4, 1)], "DATE"),
            ([datetime.time(12, 34, 56),
              datetime.time(10, 20, 30)], "TIME"),
            (
                [
                    datetime.datetime(2012, 3, 4, 5, 6, 7),
                    datetime.datetime(2013, 1, 1, 10, 20, 30),
                ],
                "DATETIME",
            ),
            (
                [
                    datetime.datetime(2012,
                                      3,
                                      4,
                                      5,
                                      6,
                                      7,
                                      tzinfo=google.cloud._helpers.UTC),
                    datetime.datetime(2013,
                                      1,
                                      1,
                                      10,
                                      20,
                                      30,
                                      tzinfo=google.cloud._helpers.UTC),
                ],
                "TIMESTAMP",
            ),
        ]

        if _BIGNUMERIC_SUPPORT:
            expected_types.append(
                ([decimal.Decimal("{d38}.{d38}".format(d38="9" * 38))],
                 "BIGNUMERIC"))

        for values, expected_type in expected_types:
            msg = "value: {} expected_type: {}".format(values, expected_type)
            parameter = _helpers.array_to_query_parameter(values)
            self.assertIsNone(parameter.name, msg=msg)
            self.assertEqual(parameter.array_type, expected_type, msg=msg)
            self.assertEqual(parameter.values, values, msg=msg)
            named_param = _helpers.array_to_query_parameter(values,
                                                            name="my_param")
            self.assertEqual(named_param.name, "my_param", msg=msg)
            self.assertEqual(named_param.array_type, expected_type, msg=msg)
            self.assertEqual(named_param.values, values, msg=msg)
コード例 #4
0
 def test_array_to_query_parameter_sequence_w_invalid_elements(self):
     with self.assertRaises(exceptions.ProgrammingError):
         _helpers.array_to_query_parameter([object(), 2, 7])
コード例 #5
0
 def test_array_to_query_parameter_unsupported_sequence(self):
     unsupported_iterables = [{10, 20, 30}, u"foo", b"bar",
                              bytearray([65, 75, 85])]
     for iterable in unsupported_iterables:
         with self.assertRaises(exceptions.ProgrammingError):
             _helpers.array_to_query_parameter(iterable)
コード例 #6
0
 def test_array_to_query_parameter_empty_argument(self):
     with self.assertRaises(exceptions.ProgrammingError):
         _helpers.array_to_query_parameter([])