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
4 changes: 2 additions & 2 deletions api/environments/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@
from projects.models import Project
from segments.models import Segment
from util.mappers import (
map_environment_to_environment_document,
map_environment_to_sdk_document,
)
from webhooks.models import AbstractBaseExportableWebhookModel
Expand Down Expand Up @@ -361,7 +360,8 @@ def write_environment_documents(
):
environment_document_cache.set_many(
{
e.api_key: map_environment_to_environment_document(e)
# Use the SDK mapper so the cache perfectly matches the DB fallback
e.api_key: map_environment_to_sdk_document(e)
for e in environments
}
)
Expand Down
24 changes: 23 additions & 1 deletion api/tests/unit/environments/test_unit_environments_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from audit.related_object_type import RelatedObjectType
from core.constants import STRING
from core.request_origin import RequestOrigin
from environments.enums import EnvironmentDocumentCacheMode
from environments.identities.models import Identity
from environments.metrics import CACHE_HIT, CACHE_MISS
from environments.models import (
Expand All @@ -41,7 +42,10 @@
from segments.models import Segment
from tests.types import EnableFeaturesFixture
from users.models import FFAdminUser
from util.mappers import map_environment_to_environment_document
from util.mappers import (
map_environment_to_environment_document,
map_environment_to_sdk_document,
)

if typing.TYPE_CHECKING:
from django.db.models import Model
Expand Down Expand Up @@ -1280,3 +1284,21 @@ def test_environment_clone_from_non_versioned_environment_with_use_v2_feature_ve
latest_feature_states = get_environment_flags_queryset(new_environment)
assert latest_feature_states.count() == 2
assert {fs.environment_feature_version for fs in latest_feature_states} == {efv}


@mock.patch("environments.models.environment_document_cache")
def test_write_environment_documents__persistent_caching_enabled__caches_sdk_document(
mock_document_cache: MagicMock, environment: Environment, settings: typing.Any
) -> None:
# Given
settings.CACHE_ENVIRONMENT_DOCUMENT_MODE = EnvironmentDocumentCacheMode.PERSISTENT

# When
Environment.write_environment_documents(environment_id=environment.id)

# Then
cache_payload = mock_document_cache.set_many.call_args[0][0]
cached_document = cache_payload[environment.api_key]
expected_document = map_environment_to_sdk_document(environment)

assert cached_document == expected_document