Skip to content

Commit 2cae5d4

Browse files
committed
have builder use no selector
1 parent e151f86 commit 2cae5d4

File tree

4 files changed

+44
-10
lines changed

4 files changed

+44
-10
lines changed

ldclient/impl/datasourcev2/polling.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ def _poll(self, ss: SelectorStore) -> BasisResult:
220220

221221
basis = Basis(
222222
change_set=change_set,
223-
persist=change_set.selector is not None,
223+
persist=change_set.selector.is_defined(),
224224
environment_id=env_id,
225225
)
226226

ldclient/interfaces.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1393,7 +1393,7 @@ def no_changes() -> "ChangeSet":
13931393
require changes.
13941394
"""
13951395
return ChangeSet(
1396-
intent_code=IntentCode.TRANSFER_NONE, selector=None, changes=[]
1396+
intent_code=IntentCode.TRANSFER_NONE, selector=Selector.no_selector(), changes=[]
13971397
)
13981398

13991399
@staticmethod

ldclient/testing/impl/datasourcev2/test_polling_initializer.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
PollingDataSource,
88
PollingResult,
99
Selector,
10-
polling_payload_to_changeset
10+
polling_payload_to_changeset,
11+
fdv1_polling_payload_to_changeset
1112
)
1213
from ldclient.impl.util import UnsuccessfulResponseException, _Fail, _Success
1314
from ldclient.interfaces import ChangeSetBuilder, IntentCode
@@ -138,3 +139,33 @@ def test_handles_transfer_changes():
138139
assert result.value.change_set.intent_code == IntentCode.TRANSFER_CHANGES
139140
assert len(result.value.change_set.changes) == 1
140141
assert result.value.persist is True
142+
143+
144+
def test_handles_fdv1_payload():
145+
"""Test that FDv1 payloads have persist set to False."""
146+
fdv1_data = {
147+
"flags": {
148+
"test-flag": {
149+
"key": "test-flag",
150+
"version": 1,
151+
"on": True,
152+
"variations": [True, False]
153+
}
154+
},
155+
"segments": {}
156+
}
157+
change_set_result = fdv1_polling_payload_to_changeset(fdv1_data)
158+
assert isinstance(change_set_result, _Success)
159+
160+
mock_requester = MockPollingRequester(_Success(value=(change_set_result.value, {})))
161+
ds = PollingDataSource(poll_interval=1.0, requester=mock_requester)
162+
163+
result = ds.fetch(MockSelectorStore(Selector.no_selector()))
164+
165+
assert isinstance(result, _Success)
166+
assert result.value is not None
167+
168+
assert result.value.change_set.intent_code == IntentCode.TRANSFER_FULL
169+
assert len(result.value.change_set.changes) == 1
170+
# FDv1 payloads should not be persisted because they have no selector
171+
assert result.value.persist is False

ldclient/testing/impl/datasystem/test_fdv2_persistence.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,8 @@ def test_persistent_store_delete_operations():
370370
ChangeSet,
371371
ChangeType,
372372
IntentCode,
373-
ObjectKind
373+
ObjectKind,
374+
Selector
374375
)
375376

376377
# Pre-populate with a flag
@@ -410,7 +411,7 @@ def test_persistent_store_delete_operations():
410411
},
411412
)
412413
],
413-
selector=None,
414+
selector=Selector.no_selector(),
414415
)
415416
store.apply(init_changeset, True)
416417

@@ -428,7 +429,7 @@ def test_persistent_store_delete_operations():
428429
object=None,
429430
)
430431
],
431-
selector=None,
432+
selector=Selector.no_selector(),
432433
)
433434

434435
store.apply(delete_changeset, True)
@@ -671,7 +672,8 @@ def test_persistent_store_commit_encodes_data_correctly():
671672
ChangeSet,
672673
ChangeType,
673674
IntentCode,
674-
ObjectKind
675+
ObjectKind,
676+
Selector
675677
)
676678

677679
persistent_store = StubFeatureStore()
@@ -699,7 +701,7 @@ def test_persistent_store_commit_encodes_data_correctly():
699701
object=flag_data,
700702
)
701703
],
702-
selector=None,
704+
selector=Selector.no_selector(),
703705
)
704706
store.apply(changeset, True)
705707

@@ -746,7 +748,8 @@ def test_persistent_store_commit_handles_errors():
746748
ChangeSet,
747749
ChangeType,
748750
IntentCode,
749-
ObjectKind
751+
ObjectKind,
752+
Selector
750753
)
751754

752755
class FailingFeatureStore(StubFeatureStore):
@@ -770,7 +773,7 @@ def init(self, all_data):
770773
object={"key": "test-flag", "version": 1, "on": True},
771774
)
772775
],
773-
selector=None,
776+
selector=Selector.no_selector(),
774777
)
775778
store.apply(changeset, True)
776779

0 commit comments

Comments
 (0)