Skip to content
Merged
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
1 change: 1 addition & 0 deletions api/core/workflows_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,5 +141,6 @@ def _publish_segments(self) -> None:
live_segment.name = draft_segment.name
live_segment.description = draft_segment.description
live_segment.feature = draft_segment.feature
live_segment.rules_data = draft_segment.rules_data
live_segment.save()
live_segment.copy_rules_and_conditions_from(draft_segment)
2 changes: 1 addition & 1 deletion api/segments/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class Segment(
)

rules_data: models.JSONField[
list[SegmentRuleType], list[SegmentRuleType] | None
list[SegmentRuleType] | None, list[SegmentRuleType] | None
] = models.JSONField(null=True)

version = models.IntegerField(default=1, null=True)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import json
from copy import deepcopy
from datetime import timedelta

import freezegun
Expand Down Expand Up @@ -44,6 +45,9 @@
from organisations.models import Organisation
from projects.models import Project
from segments.models import Condition, Segment, SegmentRule

# TODO: Delete alias as per https://github.com/Flagsmith/flagsmith/issues/7818
from segments.types import SegmentRule as SegmentRuleType
from users.models import FFAdminUser

now = timezone.now()
Expand Down Expand Up @@ -860,7 +864,46 @@ def test_change_request_live_from__with_change_set__sets_live_from_to_commit_tim
assert change_request.live_from == now


def test_change_request_commit__with_draft_segment__publishes_segment_rules(
def test_change_request_commit__with_draft_segment__publishes_draft(
segment: Segment,
segment_rules: list[SegmentRuleType],
change_request: ChangeRequest,
admin_user: FFAdminUser,
log: StructuredLogCapture,
) -> None:
# Given
draft_rules = deepcopy(segment_rules)
draft_rules[0]["conditions"][0]["value"] = "blue"
draft_segment = Segment.objects.create(
name="new-name",
description="new-description",
change_request=change_request,
project=segment.project,
version_of=segment,
rules_data=draft_rules,
)

# When
change_request.commit(admin_user)

# Then
segment.refresh_from_db()
assert segment.version == 2
assert segment.name == "new-name"
assert segment.description == "new-description"
assert segment.rules_data == draft_rules
revision = segment.versioned_segments.exclude(
id__in=[segment.id, draft_segment.id]
).get()
assert revision.version == 1
assert revision.rules_data == segment_rules
assert log.has(
"segment-revision-created", segment_id=segment.id, revision_id=revision.id
)


# TODO: Delete as per https://github.com/Flagsmith/flagsmith/issues/7818
def test_change_request_commit__with_draft_segment__publishes_segment_rules_x_replaced_above(
Comment thread
matthewelwell marked this conversation as resolved.
segment: Segment,
change_request: ChangeRequest,
admin_user: FFAdminUser,
Expand Down
Loading