|
23 | 23 | from reversion.models import Version |
24 | 24 |
|
25 | 25 | from recoco.apps.addressbook.models import Contact |
26 | | -from recoco.apps.demarches_simplifiees.models import DSResource |
| 26 | +from recoco.apps.demarches_simplifiees import models as ds_models |
27 | 27 | from recoco.apps.geomatics import models as geomatics |
28 | 28 | from recoco.apps.hitcount.models import Hit, HitCount |
29 | 29 | from recoco.apps.projects import models as projects_models |
@@ -364,6 +364,69 @@ def test_duplication_creates_new_resource(request, client, current_site): |
364 | 364 | assert list(new_resource.sites.all()) == [current_site] |
365 | 365 |
|
366 | 366 |
|
| 367 | +@pytest.mark.django_db |
| 368 | +def test_duplication_creates_new_ds_resource_mapping(request, client, current_site): |
| 369 | + old_resource = Recipe( |
| 370 | + models.Resource, |
| 371 | + status=models.Resource.PUBLISHED, |
| 372 | + sites=[current_site], |
| 373 | + title="A Nice title", |
| 374 | + created_by=baker.make(User), |
| 375 | + category=baker.make(resources_models.Category), |
| 376 | + ).make() |
| 377 | + dep = Recipe(geomatics.Department).make() |
| 378 | + ds_resource = Recipe( |
| 379 | + ds_models.DSResource, |
| 380 | + name="initial_name", |
| 381 | + schema='{"field": "this is a json"}', |
| 382 | + resource=old_resource, |
| 383 | + ).make() |
| 384 | + ds_resource.departments.set([dep]) |
| 385 | + ds_mapping = Recipe( |
| 386 | + ds_models.DSMapping, |
| 387 | + ds_resource=ds_resource, |
| 388 | + site=current_site, |
| 389 | + mapping='{"other": "json file"}', |
| 390 | + ).make() |
| 391 | + url = reverse("resources-resource-duplicate", args=[old_resource.id]) |
| 392 | + |
| 393 | + with login(client, groups=["example_com_advisor"]): |
| 394 | + response = client.post(url, follow=True) |
| 395 | + assert response.status_code == 200 |
| 396 | + last_url, status_code = response.redirect_chain[-1] |
| 397 | + assert status_code == 302 |
| 398 | + |
| 399 | + assert models.Resource.objects.count() == 2 |
| 400 | + |
| 401 | + new_resource = models.Resource.objects.exclude(id=old_resource.id).first() |
| 402 | + |
| 403 | + assert ( |
| 404 | + last_url |
| 405 | + == f"{reverse('resources-resource-update', args=[new_resource.id])}?is_duplicate=true" |
| 406 | + ) |
| 407 | + |
| 408 | + assert ds_models.DSResource.objects.filter(resource=new_resource).count() == 1 |
| 409 | + new_ds_resource = ds_models.DSResource.objects.filter( |
| 410 | + resource=new_resource |
| 411 | + ).first() |
| 412 | + assert new_ds_resource is not None |
| 413 | + assert new_ds_resource.schema == ds_resource.schema |
| 414 | + assert ds_resource.name in new_ds_resource.name |
| 415 | + assert set(new_ds_resource.departments.all()) == set( |
| 416 | + ds_resource.departments.all() |
| 417 | + ) |
| 418 | + |
| 419 | + assert ( |
| 420 | + ds_models.DSMapping.objects.filter(ds_resource=new_ds_resource).count() == 1 |
| 421 | + ) |
| 422 | + new_mapping = ds_models.DSMapping.objects.filter( |
| 423 | + ds_resource=new_ds_resource |
| 424 | + ).first() |
| 425 | + assert new_mapping.mapping == ds_mapping.mapping |
| 426 | + assert new_mapping.site == ds_mapping.site |
| 427 | + assert new_mapping.ds_resource == new_ds_resource |
| 428 | + |
| 429 | + |
367 | 430 | @pytest.mark.django_db |
368 | 431 | def test_duplication_needs_permission(request, client, current_site): |
369 | 432 | old_resource = Recipe( |
@@ -476,7 +539,7 @@ def test_resource_detail_ds_prefill_button(request, client): |
476 | 539 | status=models.Resource.PUBLISHED, |
477 | 540 | ).make() |
478 | 541 | Recipe( |
479 | | - DSResource, |
| 542 | + ds_models.DSResource, |
480 | 543 | resource=resource, |
481 | 544 | schema={"number": 42}, |
482 | 545 | ).make() |
@@ -1173,7 +1236,7 @@ def test_embedded_resource_detail_ds_prefill_button(request, client): |
1173 | 1236 | status=models.Resource.PUBLISHED, |
1174 | 1237 | ).make() |
1175 | 1238 | Recipe( |
1176 | | - DSResource, |
| 1239 | + ds_models.DSResource, |
1177 | 1240 | resource=resource, |
1178 | 1241 | schema={"number": 42}, |
1179 | 1242 | ).make() |
|
0 commit comments