From 085884569e3e67a3559cc49750e7c0c56e5ef384 Mon Sep 17 00:00:00 2001 From: Arthur Deierlein Date: Mon, 21 Aug 2023 15:11:21 +0200 Subject: [PATCH] chore(api/tests): added tests for project view ordering by eol --- api/outdated/outdated/factories.py | 40 +++++-------------------- api/outdated/outdated/tests/test_api.py | 32 ++++++++++++++++++++ 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/api/outdated/outdated/factories.py b/api/outdated/outdated/factories.py index 3bd362fe..71df78f3 100644 --- a/api/outdated/outdated/factories.py +++ b/api/outdated/outdated/factories.py @@ -7,53 +7,27 @@ from ..user.factories import UserFactory from . import models -DEPENDENCIES = [ - ("django", "PIP"), - ("djangorestframework", "PIP"), - ("djangorestframework-jsonapi", "PIP"), - ("django-filter", "PIP"), - ("django-cors-headers", "PIP"), - ("django-extensions", "PIP"), - ("django-debug-toolbar", "PIP"), - ("django-environ", "PIP"), - ("flake8", "PIP"), - ("flake8-bugbear", "PIP"), - ("flake8-tuple", "PIP"), - ("flake8-isort", "PIP"), - ("flake8-debugger", "PIP"), - ("pytest", "PIP"), - ("pytest-django", "PIP"), - ("pytest-cov", "PIP"), - ("pytest-vcr", "PIP"), - ("pytest-factoryboy", "PIP"), - ("python-dateutil", "PIP"), - ("ember-source", "NPM"), - ("ember-cli", "NPM"), - ("ember-data", "NPM"), - ("ember-cli-htmlbars", "NPM"), - ("ember-cli-htmlbars-inline-precompile", "NPM"), - ("ember-cli-babel", "NPM"), - ("ember-cli-qunit", "NPM"), - ("@glimmer/component", "NPM"), - ("@glimmer/tracking", "NPM"), -] +PROVIDERS = ["PIP", "NPM"] class DependencyFactory(DjangoModelFactory): - name, provider = random.choice(DEPENDENCIES) + name = Sequence(lambda n: "ember-%s" % n) + provider = random.choice(PROVIDERS) class Meta: model = models.Dependency + django_get_or_create = ("name", "provider") class ReleaseVersionFactory(DjangoModelFactory): class Meta: model = models.ReleaseVersion + django_get_or_create = ("dependency", "major_version", "minor_version") dependency = SubFactory(DependencyFactory) end_of_life = Faker("date_this_year") major_version = random.randint(0, 10) - minor_version = random.randint(0, 10) + minor_version = Sequence(lambda n: n) class Params: undefined = Trait(end_of_life=None) @@ -68,7 +42,7 @@ class Params: class VersionFactory(DjangoModelFactory): release_version = SubFactory(ReleaseVersionFactory) - patch_version = random.randint(0, 28) + patch_version = Sequence(lambda n: n) release_date = Faker("date_this_year") class Meta: diff --git a/api/outdated/outdated/tests/test_api.py b/api/outdated/outdated/tests/test_api.py index de6b4d3d..0306d631 100644 --- a/api/outdated/outdated/tests/test_api.py +++ b/api/outdated/outdated/tests/test_api.py @@ -158,6 +158,38 @@ def test_project(client, project_factory, version_factory, defined): assert generated_project.status == "UNDEFINED" +def test_project_ordered_by_eol( + client, project_factory, release_version_factory, version_factory +): + outdated_version = version_factory( + release_version=release_version_factory(outdated=True) + ) + warning_version = version_factory( + release_version=release_version_factory(warning=True) + ) + up_to_date_version = version_factory( + release_version=release_version_factory(up_to_date=True) + ) + + project_last = project_factory( + name="A project", versioned_dependencies=[up_to_date_version] + ) + project_middle = project_factory( + name="B project", versioned_dependencies=[warning_version] + ) + project_first = project_factory( + name="C project", versioned_dependencies=[outdated_version] + ) + + url = reverse("project-list") + resp = client.get(url) + json = resp.json() + + assert json["data"][0]["id"] == str(project_first.pk) + assert json["data"][1]["id"] == str(project_middle.pk) + assert json["data"][2]["id"] == str(project_last.pk) + + def test_maintainer(client, maintainer): assert Maintainer.objects.count() == 1