mirror of
https://github.com/boostorg/website-v2.git
synced 2026-01-19 04:42:17 +00:00
168 lines
4.6 KiB
Python
168 lines
4.6 KiB
Python
import datetime
|
|
import pytest
|
|
|
|
from model_bakery import baker
|
|
|
|
|
|
def test_version_creation(version):
|
|
today = datetime.date.today()
|
|
assert version.release_date < today
|
|
|
|
|
|
def test_version_slug(version):
|
|
version.name = "New Name"
|
|
version.slug = None
|
|
version.save()
|
|
version.refresh_from_db()
|
|
assert version.slug is not None
|
|
assert version.slug == "new-name"
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"name, expected_slug",
|
|
[
|
|
("boost-1.71.0", "boost-1-71-0"),
|
|
("boost-1.71.0.beta1", "boost-1-71-0"),
|
|
("boost-1.71.0.beta2", "boost-1-71-0"),
|
|
("boost-1.71.0.beta", "boost-1-71-0"),
|
|
("develop", "develop"),
|
|
],
|
|
)
|
|
def test_non_beta_slug(name, expected_slug):
|
|
version = baker.make("versions.Version", name=name)
|
|
assert version.non_beta_slug == expected_slug
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"name, expected_slug",
|
|
[
|
|
("boost-1.71.0", "boost_1_71_0"),
|
|
("boost-1-71-0", "boost_1_71_0"),
|
|
("develop", "develop"),
|
|
],
|
|
)
|
|
def test_boost_url_slug(name, expected_slug):
|
|
version = baker.make("versions.Version", name=name)
|
|
assert version.boost_url_slug == expected_slug
|
|
|
|
|
|
def test_version_get_slug(db):
|
|
version = baker.prepare("versions.Version", name="Sample Library")
|
|
assert version.get_slug() == "sample-library"
|
|
|
|
|
|
def test_version_display_name(version):
|
|
version.name = "boost-1.81.0"
|
|
version.save()
|
|
assert version.display_name == "1.81.0"
|
|
|
|
version.name = "1.79.0"
|
|
version.save()
|
|
del version.display_name
|
|
assert version.display_name == "1.79.0"
|
|
|
|
|
|
def test_version_documentation_url(version):
|
|
version.slug = "boost-1.81.0"
|
|
version.save()
|
|
assert version.documentation_url == "/doc/libs/1_81_0"
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"name,expected_cleaned_parts",
|
|
[
|
|
("boost-1.80.0", ["1", "80", "0"]),
|
|
("boost-1.79.0.beta1", ["1", "79", "0"]),
|
|
("Boost 1.80.9.beta", ["1", "80", "9"]),
|
|
("Version 1.82.0.beta1", ["1", "82", "0"]),
|
|
],
|
|
)
|
|
def test_cleaned_version_parts(name, expected_cleaned_parts, version):
|
|
"""Test the cleaned_version_parts property method"""
|
|
version.name = name
|
|
version.save()
|
|
|
|
assert version.cleaned_version_parts == expected_cleaned_parts
|
|
|
|
|
|
def test_release_notes_cache_key(version):
|
|
"""Test the release_notes_cache_key property method"""
|
|
expected = f"release_notes_{version.slug}"
|
|
assert version.release_notes_cache_key == expected
|
|
|
|
|
|
def test_version_file_creation(full_version_one):
|
|
assert full_version_one.downloads.count() == 3
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"slug, expected",
|
|
[
|
|
("boost-1.75.0", "1_75_0"),
|
|
("develop", "develop"),
|
|
("boost_2.0.1", "2_0_1"),
|
|
],
|
|
)
|
|
def test_stripped_boost_url_slug(slug, expected, version):
|
|
version.slug = slug
|
|
version.save()
|
|
version.refresh_from_db()
|
|
assert version.stripped_boost_url_slug == expected
|
|
|
|
|
|
def test_get_absolute_url(version):
|
|
expected_url = f"/releases/{version.slug.replace('boost-', '').replace('-', '.')}/"
|
|
assert version.get_absolute_url() == expected_url
|
|
|
|
|
|
def test_review_results():
|
|
review = baker.make("versions.Review")
|
|
pending_result = baker.make(
|
|
"versions.ReviewResult", review=review, short_description="Pending"
|
|
)
|
|
assert pending_result.is_most_recent
|
|
|
|
accepted_result = baker.make(
|
|
"versions.ReviewResult", review=review, short_description="Accepted"
|
|
)
|
|
assert accepted_result.is_most_recent
|
|
|
|
pending_result.refresh_from_db()
|
|
assert not pending_result.is_most_recent
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"version_name",
|
|
[
|
|
"boost-1.75.0",
|
|
"boost-1.81.0",
|
|
"boost-1.82.0.beta1",
|
|
"boost_1.75.0",
|
|
"boost_1_75_0",
|
|
"develop",
|
|
"master",
|
|
"1.75.0",
|
|
],
|
|
)
|
|
def test_report_configuration_slug_matches_version_slug_format(version_name):
|
|
"""
|
|
Test that ReportConfiguration.get_slug() produces the same format as
|
|
Version.get_slug() for the same version name.
|
|
|
|
This ensures consistency between the two models' slug generation.
|
|
"""
|
|
# Create a Version with the version name
|
|
version = baker.prepare("versions.Version", name=version_name, slug=None)
|
|
version_slug = version.get_slug()
|
|
|
|
# Create a ReportConfiguration with the same version name
|
|
report_config = baker.prepare("versions.ReportConfiguration", version=version_name)
|
|
report_config_slug = report_config.get_slug()
|
|
|
|
# Assert that both slugs match
|
|
assert version_slug == report_config_slug, (
|
|
f"Slug mismatch for version name '{version_name}': "
|
|
f"Version.get_slug() = '{version_slug}', "
|
|
f"ReportConfiguration.get_slug() = '{report_config_slug}'"
|
|
)
|