Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 0 additions & 14 deletions api/core/workflows_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@
from django.db import transaction
from django.utils import timezone

from environments.tasks import rebuild_environment_document
from features.versioning.models import EnvironmentFeatureVersion
from features.versioning.signals import environment_feature_version_published
from features.versioning.tasks import trigger_update_version_webhooks
from features.workflows.core.exceptions import ChangeRequestNotApprovedError

if TYPE_CHECKING:
Expand Down Expand Up @@ -86,18 +84,6 @@ def _publish_environment_feature_versions(
)

for environment_feature_version in environment_feature_versions:
trigger_update_version_webhooks.delay(
kwargs={
"environment_feature_version_uuid": str(
environment_feature_version.uuid
)
},
delay_until=environment_feature_version.live_from,
)
rebuild_environment_document.delay(
kwargs={"environment_id": self.change_request.environment_id},
delay_until=environment_feature_version.live_from,
)
environment_feature_version_published.send(
EnvironmentFeatureVersion, instance=environment_feature_version
)
Expand Down
5 changes: 4 additions & 1 deletion api/features/versioning/receivers.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,10 @@ def cache_fields(instance: EnvironmentFeatureVersion, **kwargs): # type: ignore


@receiver(environment_feature_version_published, sender=EnvironmentFeatureVersion)
def update_environment_document(instance: EnvironmentFeatureVersion, **kwargs): # type: ignore[no-untyped-def]
def update_environment_document(instance: EnvironmentFeatureVersion, **kwargs) -> None: # type: ignore[no-untyped-def]
now = timezone.now()
if not instance.live_from or instance.live_from <= now:
return
rebuild_environment_document.delay(
kwargs={"environment_id": instance.environment_id},
delay_until=instance.live_from,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
from datetime import timedelta
from unittest import mock

from django.utils import timezone

from features.versioning.receivers import update_environment_document


def test_update_environment_document__immediate_publish__does_not_schedule_rebuild() -> (
None
):
# Given
mock_instance = mock.MagicMock()
mock_instance.live_from = timezone.now() - timedelta(seconds=1)
mock_instance.environment_id = 1

# When
with mock.patch(
"features.versioning.receivers.rebuild_environment_document"
) as mock_rebuild:
update_environment_document(instance=mock_instance)

# Then
mock_rebuild.delay.assert_not_called()


def test_update_environment_document__scheduled_publish__schedules_rebuild_at_live_from() -> (
None
):
# Given
future = timezone.now() + timedelta(hours=1)
mock_instance = mock.MagicMock()
mock_instance.live_from = future
mock_instance.environment_id = 1

# When
with mock.patch(
"features.versioning.receivers.rebuild_environment_document"
) as mock_rebuild:
update_environment_document(instance=mock_instance)

# Then
mock_rebuild.delay.assert_called_once_with(
kwargs={"environment_id": 1},
delay_until=future,
)
Original file line number Diff line number Diff line change
Expand Up @@ -699,11 +699,8 @@ def test_change_request_commit__v2_versioning__publishes_environment_feature_ver

change_request.environment_feature_versions.add(environment_feature_version)

mock_rebuild_environment_document_task = mocker.patch(
"core.workflows_services.rebuild_environment_document"
)
mock_trigger_update_version_webhooks = mocker.patch(
"core.workflows_services.trigger_update_version_webhooks"
mock_signal = mocker.patch(
"core.workflows_services.environment_feature_version_published"
)

# When
Expand All @@ -715,15 +712,8 @@ def test_change_request_commit__v2_versioning__publishes_environment_feature_ver
assert environment_feature_version.published_by == admin_user
assert environment_feature_version.live_from == now

mock_rebuild_environment_document_task.delay.assert_called_once_with(
kwargs={"environment_id": environment.id},
delay_until=environment_feature_version.live_from,
)
mock_trigger_update_version_webhooks.delay.assert_called_once_with(
kwargs={
"environment_feature_version_uuid": str(environment_feature_version.uuid)
},
delay_until=environment_feature_version.live_from,
mock_signal.send.assert_called_once_with(
EnvironmentFeatureVersion, instance=environment_feature_version
)


Expand Down
Loading
Loading