Example #1
0
    def test_suites_have_packages_once(self, app):
        """A package can either belong to a suite or not; it cannot belong twice."""
        n1 = Namespace(name='Hello')
        p1 = Package(name='Dog Bog', namespace=n1)

        with pytest.raises(sqlalchemy.exc.IntegrityError):
            s = Suite(name='Everything', packages=[p1, p1])
            s.save()
Example #2
0
def route_create_suite(suite):
    suite_slug = slugify(suite)
    existing = Suite.get(suite_slug)

    if existing is not None:
        raise SuiteAlreadyExistsErrorResponse(suite)

    suite = Suite(name=suite).save()

    return suite_schema.jsonify(suite)
Example #3
0
    def test_suites_have_packages(self, app):
        n1 = Namespace(name='Hello')
        p1 = Package(name='Dog Bog', namespace=n1)

        n2 = Namespace(name='Bello')
        p2 = Package(name='Trog Mog', namespace=n2)
        s = Suite(name='Everything', packages=[p1, p2])
        s.save()

        assert set(s.packages) == set([p1, p2])
Example #4
0
    def test_delete_suite(self, app, client):
        n = Namespace(name='Hello')
        p = Package(name='Dog Bog', namespace=n)
        s = Suite(name="Suite", packages=[p])
        s.save()

        response = client.delete(f"/api/v1/suites/{s.slug}/")
        assert response.status_code == 200

        assert Suite.query.count() == 0
Example #5
0
    def test_get_single_suite(self, app, client):
        n = Namespace(name='Hello')
        p = Package(name='Dog Bog', namespace=n)
        s = Suite(name="Suite", packages=[p])
        s.save()

        response = client.get(f"/api/v1/suites/{s.slug}/")
        assert response.status_code == 200
        assert response.json['packages'] == packages_schema.dump([p]).data
        assert response.json['slug'] == s.slug
Example #6
0
    def test_query_packages_belonging_to_suite(self, app):
        n1 = Namespace(name='Hello')
        p1 = Package(name='Dog Bog', namespace=n1)

        n2 = Namespace(name='Bello')
        p2 = Package(name='Trog Mog', namespace=n2)
        s = Suite(name='Everything', packages=[p1, p2])
        s.save()

        packages = Package.query.filter(Package.suites.contains(s)).all()
        assert set(packages) == set([p1, p2])
Example #7
0
    def test_packages_have_suites(self, app):
        """Packages belong to suites through a backref."""
        n1 = Namespace(name='Hello')
        p1 = Package(name='Dog Bog', namespace=n1)

        n2 = Namespace(name='Bello')
        p2 = Package(name='Trog Mog', namespace=n2)
        s = Suite(name='Everything', packages=[p1, p2])
        s.save()

        assert p1.suites == [s]
        assert p2.suites == [s]
Example #8
0
    def test_update_suite_remove_packages(self, app, client):
        n = Namespace(name='Hello')
        p = Package(name='Dog Bog', namespace=n)
        s = Suite(name="Suite", packages=[p])
        s.save()

        assert s.packages == [p]

        response = client.put(f"/api/v1/suites/{s.slug}/packages", json=[])

        assert response.status_code == 200
        assert s.packages == []
Example #9
0
def get_suite(suite_slug):
    match = Suite.get(suite_slug)

    if match is None:
        raise SuiteNotFoundErrorResponse(suite_slug)

    return match
Example #10
0
    def test_update_suite_packages_packages_must_exist(self, app, client):
        s = Suite(name="Suite", packages=[])
        s.save()

        n = Namespace(name='Hello')
        p1 = Package(name='Dog Bog', namespace=n)
        p1.save()

        response = client.put(f"/api/v1/suites/{s.slug}/packages", json=["hello/dog-bog", "hello/mog"])

        assert response.status_code == 400
        assert s.packages == []

        response = client.put(f"/api/v1/suites/{s.slug}/packages", json=["hello/dog-bog"])

        assert response.status_code == 200
        assert s.packages == [p1]
Example #11
0
    def test_update_suite_packages(self, app, client):
        s = Suite(name="Suite", packages=[])
        s.save()

        n = Namespace(name='Hello')
        p1 = Package(name='Dog Bog', namespace=n)
        p2 = Package(name='Mog', namespace=n)
        app.db.session.add(p1)
        app.db.session.add(p2)
        app.db.session.add(n)
        app.db.session.commit()

        response = client.put(f"/api/v1/suites/{s.slug}/packages", json=["hello/dog-bog", "hello/mog"])

        assert response.status_code == 200
        assert response.json['packages'] == packages_schema.dump([p1, p2]).data

        assert p1.suites == [s]
        assert p2.suites == [s]
        assert set(s.packages) == set([p1, p2])
Example #12
0
    def test_append_package_after_creation(self, app):
        n1 = Namespace(name='Hello')
        p1 = Package(name='Dog Bog', namespace=n1)

        n2 = Namespace(name='Bello')
        p2 = Package(name='Trog Mog', namespace=n2)
        s = Suite(name='Everything', packages=[p1])
        s.save()

        assert s.packages == [p1]

        s.packages.append(p2)
        s.save()

        assert s.packages == [p1, p2]
Example #13
0
 def suite(self, namespace, package, app):
     suite = Suite(name='Package Suite', packages=[package])
     suite.save()
     return suite