|
14 | 14 |
|
15 | 15 | from apps.sponsors.models import ( |
16 | 16 | Contract, |
| 17 | + LegalClause, |
17 | 18 | Sponsor, |
18 | 19 | SponsorBenefit, |
19 | 20 | SponsorContact, |
@@ -2367,3 +2368,81 @@ def test_sync_button_shown_on_benefit_edit(self): |
2367 | 2368 | """Benefit edit page shows Sync button when sponsorships exist.""" |
2368 | 2369 | response = self.client.get(reverse("manage_benefit_edit", args=[self.benefit.pk])) |
2369 | 2370 | self.assertContains(response, "Sync to Sponsorships") |
| 2371 | + |
| 2372 | + |
| 2373 | +class LegalClauseViewTests(SponsorManageTestBase): |
| 2374 | + """Test legal clause CRUD views.""" |
| 2375 | + |
| 2376 | + def setUp(self): |
| 2377 | + super().setUp() |
| 2378 | + self.client.login(username="staff", password="pass") |
| 2379 | + self.clause = LegalClause.objects.create( |
| 2380 | + internal_name="Trademark Usage", |
| 2381 | + clause="Sponsor may use the Python trademark per PSF guidelines.", |
| 2382 | + notes="Standard clause", |
| 2383 | + ) |
| 2384 | + |
| 2385 | + def test_list_loads(self): |
| 2386 | + response = self.client.get(reverse("manage_legal_clauses")) |
| 2387 | + self.assertEqual(response.status_code, 200) |
| 2388 | + self.assertContains(response, "Trademark Usage") |
| 2389 | + |
| 2390 | + def test_create_get(self): |
| 2391 | + response = self.client.get(reverse("manage_legal_clause_create")) |
| 2392 | + self.assertEqual(response.status_code, 200) |
| 2393 | + |
| 2394 | + def test_create_post(self): |
| 2395 | + response = self.client.post( |
| 2396 | + reverse("manage_legal_clause_create"), |
| 2397 | + {"internal_name": "New Clause", "clause": "Some legal text.", "notes": ""}, |
| 2398 | + ) |
| 2399 | + self.assertEqual(response.status_code, 302) |
| 2400 | + self.assertTrue(LegalClause.objects.filter(internal_name="New Clause").exists()) |
| 2401 | + |
| 2402 | + def test_edit_get(self): |
| 2403 | + response = self.client.get(reverse("manage_legal_clause_edit", args=[self.clause.pk])) |
| 2404 | + self.assertEqual(response.status_code, 200) |
| 2405 | + self.assertContains(response, "Trademark Usage") |
| 2406 | + |
| 2407 | + def test_edit_post(self): |
| 2408 | + response = self.client.post( |
| 2409 | + reverse("manage_legal_clause_edit", args=[self.clause.pk]), |
| 2410 | + {"internal_name": "Updated Name", "clause": "Updated text.", "notes": ""}, |
| 2411 | + ) |
| 2412 | + self.assertEqual(response.status_code, 302) |
| 2413 | + self.clause.refresh_from_db() |
| 2414 | + self.assertEqual(self.clause.internal_name, "Updated Name") |
| 2415 | + |
| 2416 | + def test_delete_get(self): |
| 2417 | + response = self.client.get(reverse("manage_legal_clause_delete", args=[self.clause.pk])) |
| 2418 | + self.assertEqual(response.status_code, 200) |
| 2419 | + self.assertContains(response, "Trademark Usage") |
| 2420 | + |
| 2421 | + def test_delete_post(self): |
| 2422 | + response = self.client.post(reverse("manage_legal_clause_delete", args=[self.clause.pk])) |
| 2423 | + self.assertEqual(response.status_code, 302) |
| 2424 | + self.assertFalse(LegalClause.objects.filter(pk=self.clause.pk).exists()) |
| 2425 | + |
| 2426 | + def test_move_up(self): |
| 2427 | + clause2 = LegalClause.objects.create(internal_name="Second Clause", clause="Text.") |
| 2428 | + self.client.post( |
| 2429 | + reverse("manage_legal_clause_move", args=[clause2.pk]), |
| 2430 | + {"direction": "up"}, |
| 2431 | + ) |
| 2432 | + clause2.refresh_from_db() |
| 2433 | + self.clause.refresh_from_db() |
| 2434 | + self.assertLess(clause2.order, self.clause.order) |
| 2435 | + |
| 2436 | + def test_move_down(self): |
| 2437 | + clause2 = LegalClause.objects.create(internal_name="Second Clause", clause="Text.") |
| 2438 | + self.client.post( |
| 2439 | + reverse("manage_legal_clause_move", args=[self.clause.pk]), |
| 2440 | + {"direction": "down"}, |
| 2441 | + ) |
| 2442 | + self.clause.refresh_from_db() |
| 2443 | + clause2.refresh_from_db() |
| 2444 | + self.assertGreater(self.clause.order, clause2.order) |
| 2445 | + |
| 2446 | + def test_nav_has_legal_clauses_link(self): |
| 2447 | + response = self.client.get(reverse("manage_dashboard")) |
| 2448 | + self.assertContains(response, "Legal Clauses") |
0 commit comments