Skip to content

Commit

Permalink
fix(versioning): ensure get_previous_version returns previous version…
Browse files Browse the repository at this point in the history
…, not latest version (#4083)
  • Loading branch information
matthewelwell authored Jun 3, 2024
1 parent 044a49d commit 22d371b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
2 changes: 1 addition & 1 deletion api/features/versioning/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ def get_previous_version(self) -> typing.Optional["EnvironmentFeatureVersion"]:
self.__class__.objects.filter(
environment=self.environment,
feature=self.feature,
live_from__lt=timezone.now(),
live_from__lt=self.live_from or timezone.now(),
published_at__isnull=False,
)
.order_by("-live_from")
Expand Down
30 changes: 30 additions & 0 deletions api/tests/unit/features/versioning/test_unit_versioning_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,36 @@ def test_get_previous_version_ignores_unpublished_version(
assert version_3.get_previous_version() == version_1


def test_get_previous_version_returns_previous_version_if_there_is_a_more_recent_previous_version(
feature: "Feature",
environment_v2_versioning: Environment,
admin_user: "FFAdminUser",
) -> None:
# Given
# The initial version created when enabling versioning_v2
version_0 = EnvironmentFeatureVersion.objects.get(
environment=environment_v2_versioning, feature=feature
)

# Now, let's create (and publish) 2 new versions
version_1 = EnvironmentFeatureVersion.objects.create(
environment=environment_v2_versioning, feature=feature
)
version_1.publish(admin_user)
version_2 = EnvironmentFeatureVersion.objects.create(
environment=environment_v2_versioning, feature=feature
)
version_2.publish(admin_user)

# When
previous_version = version_1.get_previous_version()

# Then
# The previous version for the first version we created should be the
# original version created when enabling versioning_v2
assert previous_version == version_0


def test_publish(
feature: "Feature",
project: "Project",
Expand Down

0 comments on commit 22d371b

Please sign in to comment.