diff --git a/src/fides/api/models/sql_models.py b/src/fides/api/models/sql_models.py index c89e90c526..ff45fd8b7a 100644 --- a/src/fides/api/models/sql_models.py +++ b/src/fides/api/models/sql_models.py @@ -416,6 +416,7 @@ class System(Base, FidesBase): cascade="all, delete", back_populates="system", lazy="selectin", + order_by="PrivacyDeclaration.name", ) data_stewards = relationship( diff --git a/tests/ctl/models/test_sql_models.py b/tests/ctl/models/test_sql_models.py new file mode 100644 index 0000000000..707c5f51f4 --- /dev/null +++ b/tests/ctl/models/test_sql_models.py @@ -0,0 +1,34 @@ +from fides.api.db.system import get_system +from fides.api.models.sql_models import PrivacyDeclaration + + +def test_system_privacy_declarations_in_alphabetical_order(db, system): + """ + Ensure that the system privacy declarations are in alphabetical order by name + """ + # Add more privacy declarations to the system + new_privacy_declarations = [ + { + "data_use": "marketing.advertising.profiling", + "name": "Declaration Name", + "system_id": system.id, + }, + { + "data_use": "essential", + "name": "Another Declaration Name", + "system_id": system.id, + }, + ] + for data in new_privacy_declarations: + PrivacyDeclaration.create(db=db, data=data) + db.commit() + + db.refresh(system) + updated_system = get_system(db, system.fides_key) + + privacy_declarations = updated_system.privacy_declarations + sorted_privacy_declarations = sorted(privacy_declarations, key=lambda x: x.name) + + assert ( + privacy_declarations == sorted_privacy_declarations + ), "Privacy declarations are not in alphabetical order by name"