11from collections .abc import Callable
22from typing import Any
3- from unittest .mock import PropertyMock
43
54import pytest
65from django .core .exceptions import ValidationError
@@ -29,7 +28,15 @@ def test_Condition_str__returns_readable_representation_of_condition(
2928 assert result == "Condition for ALL rule for Segment - segment: foo EQUAL bar"
3029
3130
32- def test_Condition_get_skip_create_audit_log__returns_true (
31+ @pytest .mark .parametrize (
32+ "delete" ,
33+ [
34+ lambda rule : rule .delete (),
35+ lambda rule : rule .hard_delete (),
36+ ],
37+ )
38+ def test_Condition_get_skip_create_audit_log__rule_deleted__returns_true (
39+ delete : Callable [[SegmentRule ], None ],
3340 segment_rule : SegmentRule ,
3441) -> None :
3542 # Given
@@ -38,16 +45,45 @@ def test_Condition_get_skip_create_audit_log__returns_true(
3845 property = "foo" ,
3946 operator = EQUAL ,
4047 value = "bar" ,
48+ created_with_segment = False ,
4149 )
4250
4351 # When
44- result = condition . get_skip_create_audit_log ( )
52+ delete ( segment_rule )
4553
4654 # Then
47- assert result is True
55+ assert condition . get_skip_create_audit_log () is True
4856
4957
50- def test_manager_returns_only_highest_version_of_segments (
58+ @pytest .mark .parametrize (
59+ "delete" ,
60+ [
61+ lambda segment : segment .delete (),
62+ lambda segment : segment .hard_delete (),
63+ ],
64+ )
65+ def test_Condition_get_skip_create_audit_log__segment_deleted__returns_true (
66+ delete : Callable [[Segment ], None ],
67+ segment : Segment ,
68+ segment_rule : SegmentRule ,
69+ ) -> None :
70+ # Given
71+ condition = Condition .objects .create (
72+ rule = segment_rule ,
73+ property = "foo" ,
74+ operator = EQUAL ,
75+ value = "bar" ,
76+ created_with_segment = False ,
77+ )
78+
79+ # When
80+ delete (segment )
81+
82+ # Then
83+ assert condition .get_skip_create_audit_log () is True
84+
85+
86+ def test_LiveSegmentManager__returns_only_highest_version_of_segments (
5187 segment : Segment ,
5288) -> None :
5389 # Given
@@ -108,24 +144,7 @@ def test_SegmentRule_get_skip_create_audit_log__returns_true(
108144 assert result is True
109145
110146
111- def test_segment_get_skip_create_audit_log_when_exception (
112- mocker : MockerFixture ,
113- segment : Segment ,
114- ) -> None :
115- # Given
116- patched_segment = mocker .patch .object (
117- Segment , "version_of_id" , new_callable = PropertyMock
118- )
119- patched_segment .side_effect = Segment .DoesNotExist ("Segment missing" )
120-
121- # When
122- result = segment .get_skip_create_audit_log ()
123-
124- # Then
125- assert result is True
126-
127-
128- def test_delete_segment_only_schedules_one_task_for_audit_log_creation (
147+ def test_Segment_delete__multiple_rules_conditions__schedules_audit_log_task_once (
129148 mocker : MockerFixture , segment : Segment
130149) -> None :
131150 # Given
@@ -143,11 +162,11 @@ def test_delete_segment_only_schedules_one_task_for_audit_log_creation(
143162 )
144163
145164 # When
146- mocked_tasks = mocker .patch ("core.signals.tasks" )
165+ task = mocker .patch ("core.signals.tasks.create_audit_log_from_historical_record " )
147166 segment .delete ()
148167
149168 # Then
150- assert len ( mocked_tasks . mock_calls ) == 1
169+ assert task . delay . call_count == 1
151170
152171
153172def test_Segment_clone__can_create_standalone_segment_clone (
@@ -264,7 +283,9 @@ def test_Segment_clone__segment_with_rules__returns_new_segment_with_copied_rule
264283 ]
265284
266285
267- def test_system_segment_get_skip_create_audit_log (system_segment : Segment ) -> None :
286+ def test_Segment_get_skip_create_audit_log__system_segment__returns_true (
287+ system_segment : Segment ,
288+ ) -> None :
268289 # When
269290 result = system_segment .get_skip_create_audit_log ()
270291
0 commit comments