|
| 1 | +import json |
1 | 2 | import unittest |
2 | 3 |
|
3 | 4 | import pandas as pd |
4 | 5 |
|
5 | 6 | from mapswipe_workers.generate_stats.project_stats import ( |
6 | | - add_ref_to_agg_results, |
7 | 7 | add_missing_result_columns, |
| 8 | + add_ref_to_agg_results, |
8 | 9 | calc_agreement, |
9 | 10 | calc_count, |
10 | 11 | calc_parent_option_count, |
@@ -175,28 +176,46 @@ def test_calc_parent_option_count(self): |
175 | 176 |
|
176 | 177 | def test_add_ref_single_ref(self): |
177 | 178 | # All results have the same ref |
178 | | - results_df = pd.DataFrame({ |
179 | | - "task_id": ["t1", "t1"], |
180 | | - "ref": [{"osmId": 123, "osmType": "ways_poly"}, {"osmId": 123, "osmType": "ways_poly"}] |
181 | | - }) |
| 179 | + results_df = pd.DataFrame( |
| 180 | + { |
| 181 | + "task_id": ["t1", "t1"], |
| 182 | + "ref": [ |
| 183 | + json.dumps({"osmId": 123, "osmType": "ways_poly"}), |
| 184 | + json.dumps({"osmId": 123, "osmType": "ways_poly"}), |
| 185 | + ], |
| 186 | + } |
| 187 | + ) |
182 | 188 | agg_results_df = pd.DataFrame({"task_id": ["t1"]}) |
183 | 189 | updated_df = add_ref_to_agg_results(results_df, agg_results_df.copy()) |
| 190 | + |
184 | 191 | self.assertIn("ref", updated_df.columns) |
185 | | - self.assertEqual(updated_df["ref"].iloc[0], {"osmId": 123, "osmType": "ways_poly"}) |
| 192 | + ref_value = json.loads(updated_df["ref"].iloc[0]) |
| 193 | + self.assertEqual(ref_value, [{"osmId": 123, "osmType": "ways_poly"}]) |
186 | 194 |
|
187 | 195 | def test_add_ref_multiple_refs(self): |
188 | 196 | # Different refs for same task |
189 | | - results_df = pd.DataFrame({ |
190 | | - "task_id": ["t1", "t1"], |
191 | | - "ref": [{"osmId": 123}, {"osmId": 456}] |
192 | | - }) |
| 197 | + results_df = pd.DataFrame( |
| 198 | + { |
| 199 | + "task_id": ["t1", "t1"], |
| 200 | + "ref": [json.dumps({"osmId": 123}), json.dumps({"osmId": 456})], |
| 201 | + } |
| 202 | + ) |
193 | 203 | agg_results_df = pd.DataFrame({"task_id": ["t1"]}) |
194 | 204 | updated_df = add_ref_to_agg_results(results_df, agg_results_df.copy()) |
| 205 | + |
195 | 206 | self.assertIn("ref", updated_df.columns) |
196 | | - self.assertEqual( |
197 | | - updated_df["ref"].iloc[0], |
198 | | - [{"osmId": 123}, {"osmId": 456}] |
199 | | - ) |
| 207 | + ref_value = json.loads(updated_df["ref"].iloc[0]) |
| 208 | + self.assertCountEqual(ref_value, [{"osmId": 123}, {"osmId": 456}]) |
| 209 | + |
| 210 | + def test_add_ref_no_refs_column(self): |
| 211 | + # results_df has no 'ref' column |
| 212 | + results_df = pd.DataFrame({"task_id": ["t1", "t2"], "result": [1, 2]}) |
| 213 | + agg_results_df = pd.DataFrame({"task_id": ["t1", "t2"]}) |
| 214 | + |
| 215 | + updated_df = add_ref_to_agg_results(results_df, agg_results_df.copy()) |
| 216 | + |
| 217 | + self.assertNotIn("ref", updated_df.columns) |
| 218 | + pd.testing.assert_frame_equal(updated_df, agg_results_df) |
200 | 219 |
|
201 | 220 |
|
202 | 221 | if __name__ == "__main__": |
|
0 commit comments