def test_set_explicit(self):
        from gcloud.datastore import _implicit_environ

        self.assertEqual(_implicit_environ.get_default_connection(), None)
        fake_cnxn = object()
        self._callFUT(connection=fake_cnxn)
        self.assertEqual(_implicit_environ.get_default_connection(), fake_cnxn)
    def test_set_explicit(self):
        from gcloud.datastore import _implicit_environ

        self.assertEqual(_implicit_environ.get_default_connection(), None)
        fake_cnxn = object()
        self._callFUT(connection=fake_cnxn)
        self.assertEqual(_implicit_environ.get_default_connection(), fake_cnxn)
    def test_set_implicit(self):
        from gcloud._testing import _Monkey
        from gcloud.datastore import _implicit_environ

        self.assertEqual(_implicit_environ.get_default_connection(), None)

        fake_cnxn = object()
        with _Monkey(_implicit_environ, get_connection=lambda: fake_cnxn):
            self._callFUT()

        self.assertEqual(_implicit_environ.get_default_connection(), fake_cnxn)
    def test_set_implicit(self):
        from gcloud._testing import _Monkey
        from gcloud.datastore import _implicit_environ

        self.assertEqual(_implicit_environ.get_default_connection(), None)

        fake_cnxn = object()
        with _Monkey(_implicit_environ, get_connection=lambda: fake_cnxn):
            self._callFUT()

        self.assertEqual(_implicit_environ.get_default_connection(), fake_cnxn)
Esempio n. 5
0
    def test_no_dataset_id(self):
        from gcloud.datastore import _implicit_environ
        from gcloud.datastore.test_batch import _Connection
        from gcloud.datastore.test_batch import _Entity
        from gcloud.datastore.test_batch import _Key

        # Build basic mocks needed to delete.
        _DATASET = 'DATASET'
        connection = _Connection()
        entity = _Entity(foo=u'bar')
        entity.key = _Key(_DATASET)

        self.assertEqual(_implicit_environ.get_default_connection(), None)
        result = self._callFUT([entity], connection=connection)

        self.assertEqual(result, None)
        self.assertEqual(len(connection._committed), 1)
        dataset_id, mutation, transaction_id = connection._committed[0]
        self.assertEqual(dataset_id, _DATASET)
        upserts = list(mutation.upsert)
        self.assertEqual(len(upserts), 1)
        self.assertEqual(upserts[0].key, entity.key.to_protobuf())
        properties = list(upserts[0].property)
        self.assertEqual(properties[0].name, 'foo')
        self.assertEqual(properties[0].value.string_value, u'bar')
        self.assertTrue(transaction_id is None)
Esempio n. 6
0
    def test_no_dataset_id(self):
        from gcloud.datastore import _implicit_environ
        from gcloud.datastore.test_batch import _Connection
        from gcloud.datastore.test_batch import _Entity
        from gcloud.datastore.test_batch import _Key

        # Build basic mocks needed to delete.
        _DATASET = 'DATASET'
        connection = _Connection()
        entity = _Entity(foo=u'bar')
        entity.key = _Key(_DATASET)

        self.assertEqual(_implicit_environ.get_default_connection(), None)
        result = self._callFUT([entity], connection=connection)

        self.assertEqual(result, None)
        self.assertEqual(len(connection._committed), 1)
        dataset_id, mutation = connection._committed[0]
        self.assertEqual(dataset_id, _DATASET)
        upserts = list(mutation.upsert)
        self.assertEqual(len(upserts), 1)
        self.assertEqual(upserts[0].key, entity.key.to_protobuf())
        properties = list(upserts[0].property)
        self.assertEqual(properties[0].name, 'foo')
        self.assertEqual(properties[0].value.string_value, u'bar')
Esempio n. 7
0
    def test_no_connection(self):
        from gcloud.datastore import _implicit_environ
        from gcloud.datastore.test_batch import _Key

        # Build basic mocks needed to delete.
        _DATASET = 'DATASET'
        key = _Key(_DATASET)

        self.assertEqual(_implicit_environ.get_default_connection(), None)
        with self.assertRaises(EnvironmentError):
            self._callFUT([key], dataset_id=_DATASET)
Esempio n. 8
0
    def test_no_connection(self):
        from gcloud.datastore import _implicit_environ
        from gcloud.datastore.test_batch import _Key

        # Build basic mocks needed to delete.
        _DATASET = 'DATASET'
        key = _Key(_DATASET)

        self.assertEqual(_implicit_environ.get_default_connection(), None)
        with self.assertRaises(EnvironmentError):
            self._callFUT([key], dataset_id=_DATASET)
Esempio n. 9
0
    def __init__(self, dataset_id=None, connection=None):
        self._connection = (connection or
                            _implicit_environ.get_default_connection())
        self._dataset_id = (dataset_id or
                            _implicit_environ.get_default_dataset_id())

        if self._connection is None or self._dataset_id is None:
            raise ValueError('A batch must have a connection and '
                             'a dataset ID set.')

        self._mutation = datastore_pb.Mutation()
        self._auto_id_entities = []
Esempio n. 10
0
    def fetch(self,
              limit=None,
              offset=0,
              start_cursor=None,
              end_cursor=None,
              connection=None):
        """Execute the Query; return an iterator for the matching entities.

        For example::

          >>> from gcloud import datastore
          >>> query = datastore.Query('Person')
          >>> query.add_filter('name', '=', 'Sally')
          >>> list(query.fetch())
          [<Entity object>, <Entity object>, ...]
          >>> list(query.fetch(1))
          [<Entity object>]

        :type limit: integer or None
        :param limit: An optional limit passed through to the iterator.

        :type offset: integer
        :param offset: An optional offset passed through to the iterator.

        :type start_cursor: bytes
        :param start_cursor: An optional cursor passed through to the iterator.

        :type end_cursor: bytes
        :param end_cursor: An optional cursor passed through to the iterator.

        :type connection: :class:`gcloud.datastore.connection.Connection`
        :param connection: An optional cursor passed through to the iterator.
                           If not supplied, uses the implicit default.

        :rtype: :class:`Iterator`
        :raises: ValueError if ``connection`` is not passed and no implicit
                 default has been set.
        """
        if connection is None:
            connection = _implicit_environ.get_default_connection()

        if connection is None:
            raise ValueError("No connection passed, and no default set")

        return Iterator(self, connection, limit, offset, start_cursor,
                        end_cursor)
Esempio n. 11
0
    def test_no_dataset_id(self):
        from gcloud.datastore import _implicit_environ
        from gcloud.datastore.test_batch import _Connection
        from gcloud.datastore.test_batch import _Key

        # Build basic mocks needed to delete.
        _DATASET = 'DATASET'
        connection = _Connection()
        key = _Key(_DATASET)

        self.assertEqual(_implicit_environ.get_default_connection(), None)

        result = self._callFUT([key], connection=connection)

        self.assertEqual(result, None)
        self.assertEqual(len(connection._committed), 1)
        dataset_id, mutation = connection._committed[0]
        self.assertEqual(dataset_id, _DATASET)
        self.assertEqual(list(mutation.delete), [key.to_protobuf()])
Esempio n. 12
0
    def test_no_dataset_id(self):
        from gcloud.datastore import _implicit_environ
        from gcloud.datastore.test_batch import _Connection
        from gcloud.datastore.test_batch import _Key

        # Build basic mocks needed to delete.
        _DATASET = 'DATASET'
        connection = _Connection()
        key = _Key(_DATASET)

        self.assertEqual(_implicit_environ.get_default_connection(), None)

        result = self._callFUT([key], connection=connection)

        self.assertEqual(result, None)
        self.assertEqual(len(connection._committed), 1)
        dataset_id, mutation = connection._committed[0]
        self.assertEqual(dataset_id, _DATASET)
        self.assertEqual(list(mutation.delete), [key.to_protobuf()])
Esempio n. 13
0
    def fetch(self, limit=None, offset=0, start_cursor=None, end_cursor=None,
              connection=None):
        """Execute the Query; return an iterator for the matching entities.

        For example::

          >>> from gcloud import datastore
          >>> query = datastore.Query('Person')
          >>> query.add_filter('name', '=', 'Sally')
          >>> list(query.fetch())
          [<Entity object>, <Entity object>, ...]
          >>> list(query.fetch(1))
          [<Entity object>]

        :type limit: integer or None
        :param limit: An optional limit passed through to the iterator.

        :type offset: integer
        :param offset: An optional offset passed through to the iterator.

        :type start_cursor: bytes
        :param start_cursor: An optional cursor passed through to the iterator.

        :type end_cursor: bytes
        :param end_cursor: An optional cursor passed through to the iterator.

        :type connection: :class:`gcloud.datastore.connection.Connection`
        :param connection: An optional cursor passed through to the iterator.
                           If not supplied, uses the implicit default.

        :rtype: :class:`Iterator`
        :raises: ValueError if ``connection`` is not passed and no implicit
                 default has been set.
        """
        if connection is None:
            connection = _implicit_environ.get_default_connection()

        if connection is None:
            raise ValueError("No connection passed, and no default set")

        return Iterator(
            self, connection, limit, offset, start_cursor, end_cursor)
Esempio n. 14
0
def _require_connection(connection=None):
    """Infer a connection from the environment, if not passed explicitly.

    :type connection: :class:`gcloud.datastore.connection.Connection`
    :param connection: Optional.

    :rtype: :class:`gcloud.datastore.connection.Connection`
    :returns: A connection based on the current environment.
    :raises: :class:`EnvironmentError` if ``connection`` is ``None``, and
             cannot be inferred from the environment.
    """
    if connection is None:
        top = Batch.current()
        if top is not None:
            connection = top.connection
        else:
            connection = _implicit_environ.get_default_connection()
            if connection is None:
                raise EnvironmentError('Connection could not be inferred.')
    return connection
Esempio n. 15
0
def _require_connection(connection=None):
    """Infer a connection from the environment, if not passed explicitly.

    :type connection: :class:`gcloud.datastore.connection.Connection`
    :param connection: Optional.

    :rtype: :class:`gcloud.datastore.connection.Connection`
    :returns: A connection based on the current environment.
    :raises: :class:`EnvironmentError` if ``connection`` is ``None``, and
             cannot be inferred from the environment.
    """
    if connection is None:
        top = Batch.current()
        if top is not None:
            connection = top.connection
        else:
            connection = _implicit_environ.get_default_connection()
            if connection is None:
                raise EnvironmentError('Connection could not be inferred.')
    return connection
Esempio n. 16
0
    def __init__(self, dataset_id=None, connection=None):
        """Construct a batch.

        :type dataset_id: :class:`str`.
        :param dataset_id: The ID of the dataset.

        :type connection: :class:`gcloud.datastore.connection.Connection`
        :param connection: The connection used to connect to datastore.

        :raises: :class:`ValueError` if either a connection or dataset ID
                 are not set.
        """
        self._connection = (connection
                            or _implicit_environ.get_default_connection())
        self._dataset_id = (dataset_id
                            or _implicit_environ.get_default_dataset_id())

        if self._connection is None or self._dataset_id is None:
            raise ValueError('A batch must have a connection and '
                             'a dataset ID set.')

        self._mutation = datastore_pb.Mutation()
        self._auto_id_entities = []
Esempio n. 17
0
    def __init__(self, dataset_id=None, connection=None):
        """Construct a batch.

        :type dataset_id: :class:`str`.
        :param dataset_id: The ID of the dataset.

        :type connection: :class:`gcloud.datastore.connection.Connection`
        :param connection: The connection used to connect to datastore.

        :raises: :class:`ValueError` if either a connection or dataset ID
                 are not set.
        """
        self._connection = (connection or
                            _implicit_environ.get_default_connection())
        self._dataset_id = (dataset_id or
                            _implicit_environ.get_default_dataset_id())

        if self._connection is None or self._dataset_id is None:
            raise ValueError('A batch must have a connection and '
                             'a dataset ID set.')

        self._mutation = datastore_pb.Mutation()
        self._auto_id_entities = []
Esempio n. 18
0
    def test_no_keys(self):
        from gcloud.datastore import _implicit_environ

        self.assertEqual(_implicit_environ.get_default_connection(), None)
        result = self._callFUT([])
        self.assertEqual(result, None)
 def _callFUT(self):
     from gcloud.datastore._implicit_environ import get_default_connection
     return get_default_connection()
Esempio n. 20
0
    def test_no_keys(self):
        from gcloud.datastore import _implicit_environ

        self.assertEqual(_implicit_environ.get_default_connection(), None)
        result = self._callFUT([])
        self.assertEqual(result, None)
 def _callFUT(self):
     from gcloud.datastore._implicit_environ import get_default_connection
     return get_default_connection()