77from django_mongodb_extensions .mql_panel .forms import MQLQueryForm
88
99
10- class ConvertDocumentsToTableTests (TestCase ):
10+ class MQLPanelFormTests (TestCase ):
1111 def setUp (self ):
1212 self .form = MQLQueryForm ()
1313
@@ -17,31 +17,6 @@ def test_empty_documents(self):
1717 self .assertEqual (rows , [])
1818 self .assertEqual (headers , [])
1919
20- def test_handle_operation_error_format (self ):
21- """Error return format matches convert_documents_to_table format."""
22- error = ValueError ("Test error" )
23- mql_string = "db.test.aggregate([])"
24- rows , headers = self .form ._handle_operation_error (
25- error , mql_string , "aggregate"
26- )
27-
28- # Should return one row with one cell
29- self .assertEqual (len (rows ), 1 )
30- self .assertEqual (len (rows [0 ]), 1 )
31-
32- # Cell should be a dict with 'value' and 'is_json' keys
33- cell = rows [0 ][0 ]
34- self .assertIsInstance (cell ["value" ], str )
35- self .assertIs (cell ["is_json" ], False )
36-
37- # Should have one header
38- self .assertEqual (headers [0 ], "Query Parsing Error" )
39-
40-
41- class FormatCellValueTests (TestCase ):
42- def setUp (self ):
43- self .form = MQLQueryForm ()
44-
4520 def test_simple_fields (self ):
4621 """Primitive field values like in model query output."""
4722 cases = [
@@ -71,19 +46,20 @@ def test_datetime(self):
7146 self .assertEqual (result ["value" ], str (json .loads (json_util .dumps (dt ))["$date" ]))
7247
7348 def test_embedded_document (self ):
74- """Nested dict with multiple keys (JSON formatting)."""
7549 embedded_doc = {
7650 "name" : "Alice" ,
7751 "age" : 30 ,
7852 "created" : datetime .datetime (2024 , 2 , 1 , 18 , 0 ),
7953 }
8054 result = self .form ._format_cell_value (embedded_doc )
55+ self .assertEqual (result ["type" ], "dict" )
8156 self .assertIs (result ["is_json" ], False )
82- parsed_back = json .loads (result ["value" ])
83- # Datetime will still be JSON date dict
84- self .assertEqual (parsed_back ["name" ], "Alice" )
85- self .assertEqual (parsed_back ["age" ], 30 )
86- self .assertIn ("$date" , parsed_back ["created" ])
57+ value_map = {item ["key" ]: item ["value" ] for item in result ["value" ]}
58+ self .assertEqual (value_map ["name" ], "Alice" )
59+ self .assertEqual (value_map ["age" ], "30" )
60+ self .assertEqual (value_map ["created" ], "2024-02-01T18:00:00Z" )
61+ for item in result ["value" ]:
62+ self .assertIs (item ["is_json" ], False )
8763
8864 def test_list_field (self ):
8965 """A list of values as might appear in MongoDB array field."""
0 commit comments