Skip to content

Commit a3de6e1

Browse files
NRL-721 Remove classes from tests
1 parent d24e6f0 commit a3de6e1

File tree

4 files changed

+1334
-1244
lines changed

4 files changed

+1334
-1244
lines changed

lambdas/seed_sandbox/tests/test_index.py

Lines changed: 135 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -24,154 +24,155 @@ def mock_env_vars():
2424
yield
2525

2626

27-
class TestHandler:
27+
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
28+
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
29+
def test_single_table_reset_success(
30+
mock_delete, mock_seed, mock_lambda_context, mock_env_vars
31+
):
32+
mock_delete.return_value = 10
33+
mock_seed.return_value = {"successful": 8, "attempted": 8, "failed": 0}
34+
35+
result = handler({}, mock_lambda_context)
36+
37+
assert result["statusCode"] == 200
38+
body = json.loads(result["body"])
39+
assert body["message"] == "Successfully reset 1 table(s)"
40+
assert body["tables_processed"] == 1
41+
assert body["tables_succeeded"] == 1
42+
assert body["tables_failed"] == 0
43+
assert len(body["results"]) == 1
44+
assert body["results"][0]["table_name"] == "test-table"
45+
assert body["results"][0]["status"] == "success"
46+
assert body["results"][0]["pointers_deleted"] == 10
47+
assert body["results"][0]["pointers_created"] == 8
48+
49+
mock_delete.assert_called_once_with(table_name="test-table")
50+
mock_seed.assert_called_once_with(
51+
table_name="test-table", pointers_per_type=2, force=True, write_csv=False
52+
)
53+
2854

29-
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
30-
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
31-
def test_single_table_reset_success(
32-
self, mock_delete, mock_seed, mock_lambda_context, mock_env_vars
55+
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
56+
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
57+
def test_multiple_table_reset_success(
58+
mock_delete, mock_seed, mock_lambda_context, mock_env_vars
59+
):
60+
with patch.dict(
61+
"os.environ",
62+
{"TABLE_NAMES": "table1,table2,table3", "POINTERS_PER_TYPE": "5"},
3363
):
34-
mock_delete.return_value = 10
35-
mock_seed.return_value = {"successful": 8, "attempted": 8, "failed": 0}
64+
mock_delete.return_value = 15
65+
mock_seed.return_value = {"successful": 20, "attempted": 20, "failed": 0}
3666

3767
result = handler({}, mock_lambda_context)
3868

3969
assert result["statusCode"] == 200
4070
body = json.loads(result["body"])
41-
assert body["message"] == "Successfully reset 1 table(s)"
42-
assert body["tables_processed"] == 1
43-
assert body["tables_succeeded"] == 1
71+
assert body["message"] == "Successfully reset 3 table(s)"
72+
assert body["tables_processed"] == 3
73+
assert body["tables_succeeded"] == 3
4474
assert body["tables_failed"] == 0
45-
assert len(body["results"]) == 1
46-
assert body["results"][0]["table_name"] == "test-table"
47-
assert body["results"][0]["status"] == "success"
48-
assert body["results"][0]["pointers_deleted"] == 10
49-
assert body["results"][0]["pointers_created"] == 8
50-
51-
mock_delete.assert_called_once_with(table_name="test-table")
52-
mock_seed.assert_called_once_with(
53-
table_name="test-table", pointers_per_type=2, force=True, write_csv=False
54-
)
55-
56-
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
57-
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
58-
def test_multiple_table_reset_success(
59-
self, mock_delete, mock_seed, mock_lambda_context, mock_env_vars
75+
assert len(body["results"]) == 3
76+
assert all(r["status"] == "success" for r in body["results"])
77+
78+
assert mock_delete.call_count == 3
79+
assert mock_seed.call_count == 3
80+
81+
82+
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
83+
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
84+
def test_partial_failure(mock_delete, mock_seed, mock_lambda_context):
85+
with patch.dict(
86+
"os.environ",
87+
{"TABLE_NAMES": "table1,table2,table3", "POINTERS_PER_TYPE": "2"},
6088
):
61-
with patch.dict(
62-
"os.environ",
63-
{"TABLE_NAMES": "table1,table2,table3", "POINTERS_PER_TYPE": "5"},
64-
):
65-
mock_delete.return_value = 15
66-
mock_seed.return_value = {"successful": 20, "attempted": 20, "failed": 0}
67-
68-
result = handler({}, mock_lambda_context)
69-
70-
assert result["statusCode"] == 200
71-
body = json.loads(result["body"])
72-
assert body["message"] == "Successfully reset 3 table(s)"
73-
assert body["tables_processed"] == 3
74-
assert body["tables_succeeded"] == 3
75-
assert body["tables_failed"] == 0
76-
assert len(body["results"]) == 3
77-
assert all(r["status"] == "success" for r in body["results"])
78-
79-
assert mock_delete.call_count == 3
80-
assert mock_seed.call_count == 3
81-
82-
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
83-
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
84-
def test_partial_failure(self, mock_delete, mock_seed, mock_lambda_context):
85-
with patch.dict(
86-
"os.environ",
87-
{"TABLE_NAMES": "table1,table2,table3", "POINTERS_PER_TYPE": "2"},
88-
):
89-
# First and third tables succeed, second fails during delete
90-
mock_delete.side_effect = [10, Exception("Access denied"), 5]
91-
mock_seed.side_effect = [
92-
{"successful": 8, "attempted": 8, "failed": 0},
93-
{"successful": 8, "attempted": 8, "failed": 0},
94-
]
95-
96-
result = handler({}, mock_lambda_context)
97-
98-
assert result["statusCode"] == 207
99-
body = json.loads(result["body"])
100-
assert "Failed to reset 1 table(s): table2" in body["message"]
101-
assert body["tables_processed"] == 3
102-
assert body["tables_succeeded"] == 2
103-
assert body["tables_failed"] == 1
104-
assert len(body["results"]) == 3
105-
assert body["results"][0]["status"] == "success"
106-
assert body["results"][1]["status"] == "failed"
107-
assert body["results"][1]["error"] == "Access denied"
108-
assert body["results"][2]["status"] == "success"
109-
110-
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
111-
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
112-
def test_complete_failure(self, mock_delete, mock_seed, mock_lambda_context):
113-
with patch.dict(
114-
"os.environ", {"TABLE_NAMES": "table1,table2", "POINTERS_PER_TYPE": "2"}
115-
):
116-
mock_delete.side_effect = Exception("Database error")
117-
118-
result = handler({}, mock_lambda_context)
119-
120-
assert result["statusCode"] == 500
121-
body = json.loads(result["body"])
122-
assert "Failed to reset 2 table(s)" in body["message"]
123-
assert body["tables_processed"] == 2
124-
assert body["tables_succeeded"] == 0
125-
assert body["tables_failed"] == 2
126-
127-
def test_missing_table_names_env_var(self, mock_lambda_context):
128-
with patch.dict("os.environ", {}, clear=True):
129-
result = handler({}, mock_lambda_context)
130-
131-
assert result["statusCode"] == 500
132-
body = json.loads(result["body"])
133-
assert body["error"] == "TABLE_NAMES environment variable is required"
134-
135-
def test_empty_table_names(self, mock_lambda_context):
136-
with patch.dict("os.environ", {"TABLE_NAMES": " ", "POINTERS_PER_TYPE": "2"}):
137-
result = handler({}, mock_lambda_context)
138-
139-
assert result["statusCode"] == 500
140-
body = json.loads(result["body"])
141-
assert body["error"] == "No valid table names provided in TABLE_NAMES"
142-
143-
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
144-
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
145-
def test_table_names_with_whitespace(
146-
self, mock_delete, mock_seed, mock_lambda_context
89+
# First and third tables succeed, second fails during delete
90+
mock_delete.side_effect = [10, Exception("Access denied"), 5]
91+
mock_seed.side_effect = [
92+
{"successful": 8, "attempted": 8, "failed": 0},
93+
{"successful": 8, "attempted": 8, "failed": 0},
94+
]
95+
96+
result = handler({}, mock_lambda_context)
97+
98+
assert result["statusCode"] == 207
99+
body = json.loads(result["body"])
100+
assert "Failed to reset 1 table(s): table2" in body["message"]
101+
assert body["tables_processed"] == 3
102+
assert body["tables_succeeded"] == 2
103+
assert body["tables_failed"] == 1
104+
assert len(body["results"]) == 3
105+
assert body["results"][0]["status"] == "success"
106+
assert body["results"][1]["status"] == "failed"
107+
assert body["results"][1]["error"] == "Access denied"
108+
assert body["results"][2]["status"] == "success"
109+
110+
111+
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
112+
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
113+
def test_complete_failure(mock_delete, mock_seed, mock_lambda_context):
114+
with patch.dict(
115+
"os.environ", {"TABLE_NAMES": "table1,table2", "POINTERS_PER_TYPE": "2"}
147116
):
148-
with patch.dict(
149-
"os.environ",
150-
{"TABLE_NAMES": " table1 , table2 , ", "POINTERS_PER_TYPE": "2"},
151-
):
152-
mock_delete.return_value = 5
153-
mock_seed.return_value = {"successful": 4, "attempted": 4, "failed": 0}
154-
155-
result = handler({}, mock_lambda_context)
156-
157-
assert result["statusCode"] == 200
158-
body = json.loads(result["body"])
159-
assert body["tables_processed"] == 2
160-
assert body["results"][0]["table_name"] == "table1"
161-
assert body["results"][1]["table_name"] == "table2"
162-
163-
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
164-
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
165-
def test_seed_with_failures(
166-
self, mock_delete, mock_seed, mock_lambda_context, mock_env_vars
117+
mock_delete.side_effect = Exception("Database error")
118+
119+
result = handler({}, mock_lambda_context)
120+
121+
assert result["statusCode"] == 500
122+
body = json.loads(result["body"])
123+
assert "Failed to reset 2 table(s)" in body["message"]
124+
assert body["tables_processed"] == 2
125+
assert body["tables_succeeded"] == 0
126+
assert body["tables_failed"] == 2
127+
128+
129+
def test_missing_table_names_env_var(mock_lambda_context):
130+
with patch.dict("os.environ", {}, clear=True):
131+
result = handler({}, mock_lambda_context)
132+
133+
assert result["statusCode"] == 500
134+
body = json.loads(result["body"])
135+
assert body["error"] == "TABLE_NAMES environment variable is required"
136+
137+
138+
def test_empty_table_names(mock_lambda_context):
139+
with patch.dict("os.environ", {"TABLE_NAMES": " ", "POINTERS_PER_TYPE": "2"}):
140+
result = handler({}, mock_lambda_context)
141+
142+
assert result["statusCode"] == 500
143+
body = json.loads(result["body"])
144+
assert body["error"] == "No valid table names provided in TABLE_NAMES"
145+
146+
147+
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
148+
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
149+
def test_table_names_with_whitespace(mock_delete, mock_seed, mock_lambda_context):
150+
with patch.dict(
151+
"os.environ",
152+
{"TABLE_NAMES": " table1 , table2 , ", "POINTERS_PER_TYPE": "2"},
167153
):
168154
mock_delete.return_value = 5
169-
mock_seed.return_value = {"successful": 6, "attempted": 8, "failed": 2}
155+
mock_seed.return_value = {"successful": 4, "attempted": 4, "failed": 0}
170156

171157
result = handler({}, mock_lambda_context)
172158

173159
assert result["statusCode"] == 200
174160
body = json.loads(result["body"])
175-
assert body["results"][0]["pointers_created"] == 6
176-
assert body["results"][0]["pointers_attempted"] == 8
177-
assert body["results"][0]["pointers_failed"] == 2
161+
assert body["tables_processed"] == 2
162+
assert body["results"][0]["table_name"] == "table1"
163+
assert body["results"][1]["table_name"] == "table2"
164+
165+
166+
@patch("lambdas.seed_sandbox.index.seed_sandbox_table")
167+
@patch("lambdas.seed_sandbox.index.delete_all_table_items")
168+
def test_seed_with_failures(mock_delete, mock_seed, mock_lambda_context, mock_env_vars):
169+
mock_delete.return_value = 5
170+
mock_seed.return_value = {"successful": 6, "attempted": 8, "failed": 2}
171+
172+
result = handler({}, mock_lambda_context)
173+
174+
assert result["statusCode"] == 200
175+
body = json.loads(result["body"])
176+
assert body["results"][0]["pointers_created"] == 6
177+
assert body["results"][0]["pointers_attempted"] == 8
178+
assert body["results"][0]["pointers_failed"] == 2

0 commit comments

Comments
 (0)