Esempio n. 1
0
    def test_latest_matching_collection_version_is_returned(self):
        collection_key = ndb.Key(Library, 'collection/1')
        collection_v1 = Version(id='v1.0.0',
                                sha='x',
                                status=Status.ready,
                                parent=collection_key).put()
        collection_v2 = Version(id='v2.0.0',
                                sha='x',
                                status=Status.ready,
                                parent=collection_key).put()
        collection_v3 = Version(id='v3.0.0',
                                sha='x',
                                status=Status.ready,
                                parent=collection_key).put()

        element_key = ndb.Key(Library, 'ele/ment')
        element_v1 = Version(id='v1.0.0',
                             sha='x',
                             status=Status.ready,
                             parent=element_key).put()

        CollectionReference.ensure(element_key, collection_v1, '^1.0.0')
        CollectionReference.ensure(element_key, collection_v2, '^1.0.0')
        CollectionReference.ensure(element_key, collection_v3, '^2.0.0')

        collections = yield Version.collections_for_key_async(element_v1)
        collection_keys = [collection.key for collection in collections]

        # Only latest matching version of the collection should be present.
        self.assertEqual(collection_keys, [
            collection_v2,
        ])
Esempio n. 2
0
  def get(self, owner, repo, version=None):
    self.response.headers['Access-Control-Allow-Origin'] = '*'
    self.response.headers['Content-Type'] = 'application/json'

    library_key = ndb.Key(Library, Library.id(owner, repo))

    if version is None:
      version = yield Library.default_version_for_key_async(library_key)
      if version is None:
        self.response.set_status(404)
        return

    version_key = ndb.Key(Library, library_key.id(), Version, version)

    collection_versions = yield Version.collections_for_key_async(version_key)
    collection_futures = []
    for collection_version in collection_versions:
      collection_futures.append(LibraryMetadata.brief_async(collection_version.key.parent(), collection_version.key.id()))
    collections = []
    for future in collection_futures:
      collection_result = yield future
      if collection_result is not None:
        collections.append(collection_result)

    result = {
        'results': collections,
        'count': len(collections),
    }
    self.response.write(json.dumps(result))
Esempio n. 3
0
  def test_stale_ref_is_removed(self):
    # Stale since the collection version doesn't actually exist.
    collection_v0 = ndb.Key(Library, 'collection/1', Version, 'v0.5.0')

    element_key = ndb.Key(Library, 'ele/ment')
    element_v1 = Version(id='v1.0.0', sha='x', status=Status.ready, parent=element_key).put()

    ref0 = CollectionReference.ensure(element_key, collection_v0, '^1.0.0')
    collections = yield Version.collections_for_key_async(element_v1)
    collection_keys = [collection.key for collection in collections]

    self.assertIsNone(ref0.get())
    self.assertEqual(collection_keys, [])
Esempio n. 4
0
    def test_stale_ref_is_removed(self):
        # Stale since the collection version doesn't actually exist.
        collection_v0 = ndb.Key(Library, 'collection/1', Version, 'v0.5.0')

        element_key = ndb.Key(Library, 'ele/ment')
        element_v1 = Version(id='v1.0.0',
                             sha='x',
                             status=Status.ready,
                             parent=element_key).put()

        ref0 = CollectionReference.ensure(element_key, collection_v0, '^1.0.0')
        collections = yield Version.collections_for_key_async(element_v1)
        collection_keys = [collection.key for collection in collections]

        self.assertIsNone(ref0.get())
        self.assertEqual(collection_keys, [])
Esempio n. 5
0
  def test_latest_matching_collection_version_is_returned(self):
    collection_key = ndb.Key(Library, 'collection/1')
    collection_v1 = Version(id='v1.0.0', sha='x', status=Status.ready, parent=collection_key).put()
    collection_v2 = Version(id='v2.0.0', sha='x', status=Status.ready, parent=collection_key).put()
    collection_v3 = Version(id='v3.0.0', sha='x', status=Status.ready, parent=collection_key).put()

    element_key = ndb.Key(Library, 'ele/ment')
    element_v1 = Version(id='v1.0.0', sha='x', status=Status.ready, parent=element_key).put()

    CollectionReference.ensure(element_key, collection_v1, '^1.0.0')
    CollectionReference.ensure(element_key, collection_v2, '^1.0.0')
    CollectionReference.ensure(element_key, collection_v3, '^2.0.0')

    collections = yield Version.collections_for_key_async(element_v1)
    collection_keys = [collection.key for collection in collections]

    # Only latest matching version of the collection should be present.
    self.assertEqual(collection_keys, [
        collection_v2,
    ])