Exemplo n.º 1
0
    def test_make_mutation_from_value_object(key):
        value = Value(30, exclude_from_indexes=True)
        properties = {'value': value}

        results = Datastore.make_mutation(Operation.INSERT, key, properties)

        assert results['insert']['properties']['value'] == value.to_repr()
Exemplo n.º 2
0
    def test_to_repr(v, expected_json_key):
        value = Value(v)

        r = value.to_repr()

        assert len(r) == 2  # Value + excludeFromIndexes
        assert r['excludeFromIndexes'] is False
        assert r[str(expected_json_key)] == v
Exemplo n.º 3
0
    def test_to_repr_with_datetime_value():
        dt = datetime(year=2018, month=7, day=15, hour=11, minute=22,
                      second=33, microsecond=456789)
        value = Value(dt)

        r = value.to_repr()

        assert r['timestampValue'] == '2018-07-15T11:22:33.456789000Z'
Exemplo n.º 4
0
    def test_from_repr_could_not_find_supported_value_key():
        data = {
            'excludeFromIndexes': False,
        }

        with pytest.raises(NotImplementedError) as ex_info:
            Value.from_repr(data)

        assert 'excludeFromIndexes' in ex_info.value.args[0]
Exemplo n.º 5
0
    def test_to_repr_non_supported_type():
        class NonSupportedType:
            pass
        value = Value(NonSupportedType())

        with pytest.raises(Exception) as ex_info:
            value.to_repr()

        assert NonSupportedType.__name__ in ex_info.value.args[0]
Exemplo n.º 6
0
 def property_filters() -> List[PropertyFilter]:
     return [
         PropertyFilter(prop='prop1',
                        operator=PropertyFilterOperator.LESS_THAN,
                        value=Value('value1')),
         PropertyFilter(prop='prop2',
                        operator=PropertyFilterOperator.GREATER_THAN,
                        value=Value(1234))
     ]
Exemplo n.º 7
0
    def test_from_repr_with_null_value():
        data = {'excludeFromIndexes': False, 'nullValue': 'NULL_VALUE'}

        value = Value.from_repr(data)

        assert value.excludeFromIndexes is False
        assert value.value is None
Exemplo n.º 8
0
async def test_query(creds: str, kind: str, project: str) -> None:
    async with Session() as s:
        ds = Datastore(project=project, service_file=creds, session=s)

        property_filter = PropertyFilter(prop='value',
                                         operator=PropertyFilterOperator.EQUAL,
                                         value=Value(42))
        query = Query(kind=kind, query_filter=Filter(property_filter))

        before = await ds.runQuery(query, session=s)
        num_results = len(before.entity_results)

        transaction = await ds.beginTransaction(session=s)
        mutations = [
            ds.make_mutation(Operation.INSERT,
                             Key(project, [PathElement(kind)]),
                             properties={'value': 42}),
            ds.make_mutation(Operation.INSERT,
                             Key(project, [PathElement(kind)]),
                             properties={'value': 42}),
        ]
        await ds.commit(mutations, transaction=transaction, session=s)

        after = await ds.runQuery(query, session=s)
        assert len(after.entity_results) == num_results + 2
Exemplo n.º 9
0
    def test_from_repr(json_key, json_value):
        data = {'excludeFromIndexes': False, json_key: json_value}

        value = Value.from_repr(data)

        assert value.excludeFromIndexes is False
        assert value.value == json_value
Exemplo n.º 10
0
    def test_from_repr_with_blob_value():
        data = {
            'excludedFromIndexed': False,
            'blobValue': 'Zm9vYmFy'
        }

        value = Value.from_repr(data)
        assert value.value == b'foobar'
Exemplo n.º 11
0
    def test_from_repr_with_datetime_value(v, expected):
        data = {
            'excludeFromIndexes': False,
            'timestampValue': v
        }

        value = Value.from_repr(data)
        assert value.value == expected
Exemplo n.º 12
0
    def test_from_repr_with_key_value(key):
        data = {
            'excludeFromIndexes': False,
            'keyValue': key.to_repr()
        }

        value = Value.from_repr(data)

        assert value.value == key
Exemplo n.º 13
0
async def test_insert_value_object(creds: str, kind: str,
                                   project: str) -> None:
    key = Key(project, [PathElement(kind)])

    async with Session() as s:
        ds = Datastore(project=project, service_file=creds, session=s)
        properties = {'value': Value(30, exclude_from_indexes=True)}
        insert_result = await ds.insert(key, properties)
        assert len(insert_result['mutationResults']) == 1
Exemplo n.º 14
0
    def test_from_repr_with_geo_point_value(lat_lng):
        data = {
            'excludeFromIndexes': False,
            'geoPointValue': lat_lng.to_repr()
        }

        value = Value.from_repr(data)

        assert value.value == lat_lng
Exemplo n.º 15
0
    def test_from_repr_with_datetime_value():
        data = {
            'excludeFromIndexes': False,
            'timestampValue': '1998-07-12T11:22:33.456789000Z'
        }

        value = Value.from_repr(data)

        expected_value = datetime(year=1998, month=7, day=12, hour=11,
                                  minute=22, second=33, microsecond=456789)
        assert value.value == expected_value
Exemplo n.º 16
0
async def test_query_with_key_projection(creds: str, kind: str,
                                         project: str) -> None:
    async with Session() as s:
        ds = Datastore(project=project, service_file=creds, session=s)
        # setup test data
        await ds.insert(Key(project, [PathElement(kind)]), {'value': 30}, s)
        property_filter = PropertyFilter(
            prop='value', operator=PropertyFilterOperator.EQUAL,
            value=Value(30))
        projection = [Projection.from_repr({'property': {'name': '__key__'}})]

        query = Query(kind=kind, query_filter=Filter(property_filter), limit=1,
                      projection=projection)
        result = await ds.runQuery(query, session=s)
        assert result.entity_results[0].entity.properties == {}
        assert result.entity_result_type.value == 'KEY_ONLY'
        # clean up test data
        await ds.delete(result.entity_results[0].entity.key, s)
Exemplo n.º 17
0
    def test_to_repr_with_null_value():
        value = Value(None)

        r = value.to_repr()

        assert r['nullValue'] == 'NULL_VALUE'
Exemplo n.º 18
0
 def value() -> Value:
     return Value('value')
Exemplo n.º 19
0
 def query_filter() -> Filter:
     inner_filter = PropertyFilter(
         prop='property_name',
         operator=PropertyFilterOperator.EQUAL,
         value=Value(123))
     return Filter(inner_filter)
Exemplo n.º 20
0
    def test_to_repr_with_blob_value():
        value = Value(b'foobar')

        r = value.to_repr()
        assert r['blobValue'] == 'Zm9vYmFy'
Exemplo n.º 21
0
 def value() -> Value:
     return Value(value='foobar', exclude_from_indexes=False)
Exemplo n.º 22
0
    def test_to_repr_exclude_from_indexes():
        value = Value(123, exclude_from_indexes=True)

        r = value.to_repr()

        assert r['excludeFromIndexes']
Exemplo n.º 23
0
    def test_to_repr_with_geo_point_value(lat_lng):
        value = Value(lat_lng)

        r = value.to_repr()

        assert r['geoPointValue'] == lat_lng.to_repr()
Exemplo n.º 24
0
    def test_to_repr_with_key_value(key):
        value = Value(key)

        r = value.to_repr()

        assert r['keyValue'] == key.to_repr()