Skip to content

Commit 94466d4

Browse files
committed
Refactor tests
1 parent 40eef2d commit 94466d4

File tree

2 files changed

+8
-62
lines changed

2 files changed

+8
-62
lines changed

tests/mql_panel/test_forms.py

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from 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."""

tests/mql_panel/test_panel.py

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from django.test import RequestFactory, TestCase, override_settings
55

66
from django_mongodb_extensions.mql_panel import MQLPanel
7-
from django_mongodb_extensions.mql_panel.forms import MQLQueryForm
87

98
rf = RequestFactory()
109

@@ -139,32 +138,3 @@ def test_query_width_ratio(self):
139138
self.panel.generate_stats(self.request, response)
140139
total_width = sum(q["width_ratio"] for q in self.panel._queries)
141140
self.assertAlmostEqual(total_width, 100, places=5)
142-
143-
144-
class ConvertDocumentsToTableTests(TestCase):
145-
def setUp(self):
146-
self.form = MQLQueryForm()
147-
148-
def test_empty_documents(self):
149-
"""Empty document list returns empty rows and headers."""
150-
rows, headers = self.form.convert_documents_to_table([])
151-
self.assertEqual(rows, [])
152-
self.assertEqual(headers, [])
153-
154-
def test_handle_operation_error_format(self):
155-
"""Error return format matches convert_documents_to_table format."""
156-
error = ValueError("Test error")
157-
mql_string = "db.test.aggregate([])"
158-
rows, headers = self.form._handle_operation_error(error, mql_string, "query")
159-
160-
# Should return one row with one cell
161-
self.assertEqual(len(rows), 1)
162-
self.assertEqual(len(rows[0]), 1)
163-
164-
# Cell should be a dict with 'value' and 'is_json' keys
165-
cell = rows[0][0]
166-
self.assertIsInstance(cell["value"], str)
167-
self.assertIs(cell["is_json"], False)
168-
169-
# Should have one header
170-
self.assertEqual(headers[0], "Query Parsing Error")

0 commit comments

Comments
 (0)