|
6 | 6 | from django.core.exceptions import ValidationError |
7 | 7 | from django.db.utils import IntegrityError |
8 | 8 | from django.utils import timezone |
| 9 | +from pytest_lazyfixture import lazy_fixture # type: ignore[import-untyped] |
9 | 10 | from pytest_mock import MockerFixture |
10 | 11 |
|
11 | 12 | from environments.identities.models import Identity |
@@ -453,6 +454,53 @@ def test_feature_state_gt_operator_throws_value_error_if_different_identities( |
453 | 454 | feature_state_identity_1 > feature_state_identity_2 |
454 | 455 |
|
455 | 456 |
|
| 457 | +def test_feature_state_gt_operator__environment_default__returns_expected( |
| 458 | + environment: Environment, |
| 459 | + feature: Feature, |
| 460 | + identity: Identity, |
| 461 | + feature_segment: FeatureSegment, |
| 462 | +) -> None: |
| 463 | + # When |
| 464 | + feature_state = FeatureState.objects.get(feature=feature, environment=environment) |
| 465 | + feature_state_identity = FeatureState.objects.create( |
| 466 | + feature=feature, environment=environment, identity=identity |
| 467 | + ) |
| 468 | + feature_state_segment = FeatureState.objects.create( |
| 469 | + feature=feature, |
| 470 | + environment=environment, |
| 471 | + feature_segment=feature_segment, |
| 472 | + ) |
| 473 | + |
| 474 | + # Then |
| 475 | + assert not feature_state > feature_state_identity |
| 476 | + assert not feature_state > feature_state_segment |
| 477 | + |
| 478 | + |
| 479 | +@pytest.mark.parametrize( |
| 480 | + "feature_identity, expected_result", |
| 481 | + [ |
| 482 | + ( |
| 483 | + lazy_fixture("identity"), |
| 484 | + "Identity test_identity - Project Test Project - Environment Test Environment - Feature Test Feature1 - Enabled: False", |
| 485 | + ), |
| 486 | + ( |
| 487 | + None, |
| 488 | + "Project Test Project - Environment Test Environment - Feature Test Feature1 - Enabled: False", |
| 489 | + ), |
| 490 | + ], |
| 491 | +) |
| 492 | +def test_feature_state_str__returns_expected( |
| 493 | + feature_state: FeatureState, |
| 494 | + feature_identity: Identity | None, |
| 495 | + expected_result: str, |
| 496 | +) -> None: |
| 497 | + # Given |
| 498 | + feature_state.identity = feature_identity |
| 499 | + |
| 500 | + # When & Then |
| 501 | + assert str(feature_state) == expected_result |
| 502 | + |
| 503 | + |
456 | 504 | @mock.patch("features.signals.trigger_feature_state_change_webhooks") |
457 | 505 | def test_feature_state_save_calls_trigger_webhooks( |
458 | 506 | mock_trigger_webhooks: mock.MagicMock, |
|
0 commit comments