From 631ed438ce7d53ffbfd088e7e215f797c14cb4c6 Mon Sep 17 00:00:00 2001 From: Rijul Poudel Date: Wed, 15 Jul 2026 14:18:43 -0500 Subject: [PATCH] [test]: Reproduce Record Set query scoping bug --- .../tests/test_execution/test_recordset.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 specifyweb/backend/stored_queries/tests/test_execution/test_recordset.py diff --git a/specifyweb/backend/stored_queries/tests/test_execution/test_recordset.py b/specifyweb/backend/stored_queries/tests/test_execution/test_recordset.py new file mode 100644 index 00000000000..b1c49290ce0 --- /dev/null +++ b/specifyweb/backend/stored_queries/tests/test_execution/test_recordset.py @@ -0,0 +1,53 @@ +from unittest import TestCase +from unittest.mock import Mock, patch + +from specifyweb.backend.stored_queries.execution import BuildQueryProps, recordset + +class TestRecordSet(TestCase): + @patch("specifyweb.backend.stored_queries.execution.insert") + @patch("specifyweb.backend.stored_queries.execution.build_query") + @patch("specifyweb.backend.stored_queries.execution.fields_from_json") + @patch("specifyweb.backend.stored_queries.execution.models.session_context") + @patch("specifyweb.backend.stored_queries.execution.models.RecordSet") + def test_query_is_scoped_to_source_recordset( + self, + recordset_model, + session_context, + fields_from_json, + build_query, + _insert, + ): + collection = Mock(id=1) + user = Mock(id=2) + user_agent = Mock(id=3) + source_recordset_id = 4 + field_specs = [Mock()] + query = Mock() + + session = session_context.return_value.__enter__.return_value + recordset_model.return_value.recordSetId = 5 + fields_from_json.return_value = field_specs + build_query.return_value = (query, Mock()) + + recordset( + collection, + user, + user_agent, + { + "name": "Filtered Record Set", + "fromquery": { + "contexttableid": 1, + "fields": [], + "recordsetid": source_recordset_id, + }, + }, + ) + + build_query.assert_called_once_with( + session, + collection, + user, + 1, + field_specs, + BuildQueryProps(recordsetid=source_recordset_id), + ) \ No newline at end of file