udata 12.0.2.dev17__py3-none-any.whl → 12.0.2.dev19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of udata might be problematic. Click here for more details.

Files changed (115) hide show
  1. udata/commands/tests/test_fixtures.py +2 -3
  2. udata/core/badges/tests/test_commands.py +2 -4
  3. udata/core/badges/tests/test_model.py +2 -2
  4. udata/core/dataservices/models.py +4 -0
  5. udata/core/dataservices/search.py +1 -1
  6. udata/core/dataset/search.py +2 -2
  7. udata/core/organization/search.py +1 -1
  8. udata/core/pages/tests/test_api.py +0 -2
  9. udata/core/reuse/search.py +1 -1
  10. udata/core/spatial/tests/test_api.py +17 -20
  11. udata/core/spatial/tests/test_models.py +3 -3
  12. udata/core/user/tests/test_user_model.py +2 -6
  13. udata/features/identicon/tests/test_backends.py +3 -13
  14. udata/harvest/tests/ckan/test_ckan_backend.py +300 -337
  15. udata/harvest/tests/ckan/test_ckan_backend_errors.py +94 -99
  16. udata/harvest/tests/ckan/test_ckan_backend_filters.py +128 -122
  17. udata/harvest/tests/ckan/test_dkan_backend.py +39 -51
  18. udata/harvest/tests/test_actions.py +7 -7
  19. udata/harvest/tests/test_api.py +2 -4
  20. udata/harvest/tests/test_base_backend.py +3 -4
  21. udata/harvest/tests/test_dcat_backend.py +4 -6
  22. udata/harvest/tests/test_models.py +2 -4
  23. udata/harvest/tests/test_notifications.py +2 -4
  24. udata/harvest/tests/test_tasks.py +2 -3
  25. udata/tests/__init__.py +40 -58
  26. udata/tests/api/__init__.py +87 -2
  27. udata/tests/api/test_activities_api.py +17 -23
  28. udata/tests/api/test_auth_api.py +2 -4
  29. udata/tests/api/test_contact_points.py +48 -54
  30. udata/tests/api/test_dataservices_api.py +0 -2
  31. udata/tests/api/test_datasets_api.py +15 -29
  32. udata/tests/api/test_me_api.py +4 -6
  33. udata/tests/api/test_organizations_api.py +19 -38
  34. udata/tests/api/test_reports_api.py +0 -4
  35. udata/tests/api/test_reuses_api.py +9 -19
  36. udata/tests/api/test_swagger.py +2 -3
  37. udata/tests/api/test_tags_api.py +6 -7
  38. udata/tests/api/test_transfer_api.py +0 -2
  39. udata/tests/api/test_user_api.py +8 -10
  40. udata/tests/apiv2/test_datasets.py +0 -4
  41. udata/tests/apiv2/test_me_api.py +0 -2
  42. udata/tests/apiv2/test_organizations.py +0 -2
  43. udata/tests/apiv2/test_swagger.py +2 -3
  44. udata/tests/apiv2/test_topics.py +0 -2
  45. udata/tests/cli/test_cli_base.py +14 -12
  46. udata/tests/cli/test_db_cli.py +51 -54
  47. udata/tests/contact_point/test_contact_point_models.py +2 -2
  48. udata/tests/dataservice/test_csv_adapter.py +2 -5
  49. udata/tests/dataservice/test_dataservice_rdf.py +3 -6
  50. udata/tests/dataservice/test_dataservice_tasks.py +36 -38
  51. udata/tests/dataset/test_csv_adapter.py +2 -5
  52. udata/tests/dataset/test_dataset_actions.py +2 -4
  53. udata/tests/dataset/test_dataset_commands.py +2 -4
  54. udata/tests/dataset/test_dataset_events.py +3 -3
  55. udata/tests/dataset/test_dataset_model.py +6 -7
  56. udata/tests/dataset/test_dataset_rdf.py +6 -9
  57. udata/tests/dataset/test_dataset_recommendations.py +2 -2
  58. udata/tests/dataset/test_dataset_tasks.py +66 -68
  59. udata/tests/dataset/test_resource_preview.py +39 -48
  60. udata/tests/dataset/test_transport_tasks.py +2 -2
  61. udata/tests/features/territories/__init__.py +0 -6
  62. udata/tests/features/territories/test_territories_api.py +25 -24
  63. udata/tests/forms/test_current_user_field.py +2 -2
  64. udata/tests/forms/test_dict_field.py +2 -4
  65. udata/tests/forms/test_extras_fields.py +2 -3
  66. udata/tests/forms/test_image_field.py +2 -2
  67. udata/tests/forms/test_model_field.py +2 -4
  68. udata/tests/forms/test_publish_as_field.py +2 -4
  69. udata/tests/forms/test_user_forms.py +26 -29
  70. udata/tests/frontend/test_auth.py +2 -3
  71. udata/tests/frontend/test_csv.py +5 -6
  72. udata/tests/frontend/test_error_handlers.py +2 -3
  73. udata/tests/frontend/test_hooks.py +5 -7
  74. udata/tests/frontend/test_markdown.py +3 -4
  75. udata/tests/helpers.py +2 -7
  76. udata/tests/metrics/test_metrics.py +52 -48
  77. udata/tests/metrics/test_tasks.py +154 -150
  78. udata/tests/organization/test_csv_adapter.py +2 -5
  79. udata/tests/organization/test_notifications.py +2 -4
  80. udata/tests/organization/test_organization_model.py +3 -4
  81. udata/tests/organization/test_organization_rdf.py +2 -8
  82. udata/tests/plugin.py +6 -110
  83. udata/tests/reuse/test_reuse_model.py +3 -4
  84. udata/tests/site/test_site_api.py +0 -2
  85. udata/tests/site/test_site_csv_exports.py +0 -2
  86. udata/tests/site/test_site_metrics.py +2 -4
  87. udata/tests/site/test_site_model.py +2 -2
  88. udata/tests/site/test_site_rdf.py +3 -6
  89. udata/tests/test_activity.py +3 -3
  90. udata/tests/test_api_fields.py +6 -9
  91. udata/tests/test_cors.py +0 -2
  92. udata/tests/test_dcat_commands.py +2 -3
  93. udata/tests/test_discussions.py +2 -7
  94. udata/tests/test_mail.py +4 -10
  95. udata/tests/test_migrations.py +413 -419
  96. udata/tests/test_model.py +10 -11
  97. udata/tests/test_notifications.py +2 -3
  98. udata/tests/test_owned.py +3 -3
  99. udata/tests/test_routing.py +5 -5
  100. udata/tests/test_storages.py +6 -5
  101. udata/tests/test_tags.py +2 -1
  102. udata/tests/test_topics.py +2 -4
  103. udata/tests/test_transfer.py +4 -5
  104. udata/tests/topic/test_topic_tasks.py +25 -27
  105. udata/tests/user/test_user_rdf.py +2 -8
  106. udata/tests/workers/test_jobs_commands.py +2 -2
  107. udata/tests/workers/test_tasks_routing.py +27 -27
  108. {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/METADATA +1 -1
  109. {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/RECORD +113 -115
  110. udata/tests/frontend/__init__.py +0 -23
  111. udata/tests/metrics/conftest.py +0 -15
  112. {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/WHEEL +0 -0
  113. {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/entry_points.txt +0 -0
  114. {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/licenses/LICENSE +0 -0
  115. {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/top_level.txt +0 -0
@@ -7,12 +7,12 @@ from udata.core.dataset.events import serialize_resource_for_event
7
7
  from udata.core.dataset.factories import DatasetFactory, ResourceFactory
8
8
  from udata.core.dataset.models import Schema
9
9
  from udata.models import Dataset
10
+ from udata.tests.api import PytestOnlyDBTestCase
10
11
  from udata.tests.helpers import assert_emit
11
12
 
12
13
 
13
- @pytest.mark.usefixtures("clean_db")
14
- @pytest.mark.usefixtures("enable_resource_event")
15
- class DatasetEventsTest:
14
+ @pytest.mark.options(PUBLISH_ON_RESOURCE_EVENTS=True, RESOURCES_ANALYSER_URI="http://local.dev")
15
+ class DatasetEventsTest(PytestOnlyDBTestCase):
16
16
  @patch("requests.post")
17
17
  @pytest.mark.options(RESOURCES_ANALYSER_API_KEY=None)
18
18
  def test_publish_message_resource_created_no_api_key(self, mock_req):
@@ -37,13 +37,12 @@ from udata.core.followers.signals import on_follow, on_unfollow
37
37
  from udata.core.reuse.factories import ReuseFactory, VisibleReuseFactory
38
38
  from udata.core.user.factories import UserFactory
39
39
  from udata.models import Dataset, Follow, License, ResourceSchema, Reuse, Schema, db
40
+ from udata.tests.api import PytestOnlyDBTestCase
40
41
  from udata.tests.helpers import assert_emit, assert_equal_dates, assert_not_emit
41
42
  from udata.utils import faker
42
43
 
43
- pytestmark = pytest.mark.usefixtures("clean_db")
44
44
 
45
-
46
- class DatasetModelTest:
45
+ class DatasetModelTest(PytestOnlyDBTestCase):
47
46
  def test_add_resource(self):
48
47
  user = UserFactory()
49
48
  dataset = DatasetFactory(owner=user)
@@ -426,7 +425,7 @@ class DatasetModelTest:
426
425
  assert dataset.get_metrics()["dataservices"] == 0
427
426
 
428
427
 
429
- class ResourceModelTest:
428
+ class ResourceModelTest(PytestOnlyDBTestCase):
430
429
  def test_url_is_required(self):
431
430
  with pytest.raises(db.ValidationError):
432
431
  DatasetFactory(resources=[ResourceFactory(url=None)])
@@ -451,7 +450,7 @@ class ResourceModelTest:
451
450
  resource.save(signal_kwargs={"ignores": ["post_save"]})
452
451
 
453
452
 
454
- class LicenseModelTest:
453
+ class LicenseModelTest(PytestOnlyDBTestCase):
455
454
  @pytest.fixture(autouse=True)
456
455
  def setUp(self):
457
456
  # Feed the DB with random data to ensure true matching
@@ -672,7 +671,7 @@ class LicenseModelTest:
672
671
  assert license.id == found.id
673
672
 
674
673
 
675
- class ResourceSchemaTest:
674
+ class ResourceSchemaTest(PytestOnlyDBTestCase):
676
675
  @pytest.mark.options(SCHEMA_CATALOG_URL="https://example.com/notfound")
677
676
  def test_resource_schema_objects_404_endpoint(self, rmock):
678
677
  rmock.get("https://example.com/notfound", status_code=404)
@@ -787,7 +786,7 @@ class ResourceSchemaTest:
787
786
  resource.schema.clean(check_schema_in_catalog=True)
788
787
 
789
788
 
790
- class HarvestMetadataTest:
789
+ class HarvestMetadataTest(PytestOnlyDBTestCase):
791
790
  def test_harvest_dataset_metadata_validate_success(self):
792
791
  dataset = DatasetFactory()
793
792
 
@@ -52,11 +52,11 @@ from udata.rdf import (
52
52
  default_lang_value,
53
53
  primary_topic_identifier_from_rdf,
54
54
  )
55
+ from udata.tests import PytestOnlyTestCase
56
+ from udata.tests.api import PytestOnlyAPITestCase, PytestOnlyDBTestCase
55
57
  from udata.tests.helpers import assert200, assert_redirects
56
58
  from udata.utils import faker
57
59
 
58
- pytestmark = pytest.mark.usefixtures("app")
59
-
60
60
  GOV_UK_REF = "http://reference.data.gov.uk/id/year/2017"
61
61
 
62
62
  try:
@@ -67,8 +67,7 @@ else:
67
67
  GOV_UK_REF_IS_UP = True
68
68
 
69
69
 
70
- @pytest.mark.frontend
71
- class DatasetToRdfTest:
70
+ class DatasetToRdfTest(PytestOnlyAPITestCase):
72
71
  def test_minimal(self):
73
72
  dataset = DatasetFactory.build() # Does not have an URL
74
73
  d = dataset_to_rdf(dataset)
@@ -367,8 +366,7 @@ class DatasetToRdfTest:
367
366
  assert dataservice_as_distribution.value(DCAT.accessService).identifier == dataservice_uri
368
367
 
369
368
 
370
- @pytest.mark.usefixtures("clean_db")
371
- class RdfToDatasetTest:
369
+ class RdfToDatasetTest(PytestOnlyDBTestCase):
372
370
  def test_minimal(self):
373
371
  node = BNode()
374
372
  g = Graph()
@@ -1122,8 +1120,7 @@ class RdfToDatasetTest:
1122
1120
  assert value.language == "es"
1123
1121
 
1124
1122
 
1125
- @pytest.mark.frontend
1126
- class DatasetRdfViewsTest:
1123
+ class DatasetRdfViewsTest(PytestOnlyAPITestCase):
1127
1124
  def test_rdf_default_to_jsonld(self, client):
1128
1125
  dataset = DatasetFactory()
1129
1126
  expected = url_for("api.dataset_rdf_format", dataset=dataset.id, _format="json")
@@ -1176,7 +1173,7 @@ class DatasetRdfViewsTest:
1176
1173
  assert response.content_type == mime
1177
1174
 
1178
1175
 
1179
- class DatasetFromRdfUtilsTest:
1176
+ class DatasetFromRdfUtilsTest(PytestOnlyTestCase):
1180
1177
  def test_licenses_from_rdf(self):
1181
1178
  """Test a bunch of cases of licenses detection from RDF"""
1182
1179
  rdf_xml_data = """<?xml version="1.0" encoding="UTF-8"?>
@@ -4,6 +4,7 @@ import pytest
4
4
  from udata.core.dataset.factories import DatasetFactory
5
5
  from udata.core.dataset.recommendations import recommendations_add, recommendations_clean
6
6
  from udata.core.reuse.factories import ReuseFactory
7
+ from udata.tests.api import PytestOnlyDBTestCase
7
8
 
8
9
  MOCK_URL = "http://reco.net"
9
10
 
@@ -64,8 +65,7 @@ def mock_response(datasets, reuses):
64
65
  ]
65
66
 
66
67
 
67
- @pytest.mark.usefixtures("clean_db")
68
- class DatasetRecommendationsTest:
68
+ class DatasetRecommendationsTest(PytestOnlyDBTestCase):
69
69
  def test_clean(self):
70
70
  ds1 = DatasetFactory(
71
71
  extras={
@@ -16,71 +16,69 @@ from udata.harvest.csv import HarvestSourceCsvAdapter # noqa
16
16
  from udata.harvest.models import HarvestItem, HarvestJob
17
17
  from udata.harvest.tests.factories import HarvestJobFactory
18
18
  from udata.models import CommunityResource, Dataset, Discussion, Follow, Topic, Transfer
19
-
20
- pytestmark = pytest.mark.usefixtures("clean_db")
21
-
22
-
23
- def test_purge_datasets():
24
- datasets = [
25
- Dataset.objects.create(title="delete me", deleted="2016-01-01"),
26
- Dataset.objects.create(title="keep me"),
27
- ]
28
-
29
- topic = Topic.objects.create(name="test topic")
30
- for d in datasets:
31
- topic_element = TopicElement(element=d, topic=topic)
32
- topic_element.save()
33
-
34
- user = UserFactory()
35
- transfer = Transfer.objects.create(
36
- owner=user,
37
- recipient=user,
38
- subject=datasets[0],
39
- comment="comment",
40
- )
41
-
42
- discussion = DiscussionFactory(subject=datasets[0])
43
-
44
- follower = Follow.objects.create(follower=user, following=datasets[0])
45
-
46
- HarvestJobFactory(items=[HarvestItem(dataset=datasets[0])])
47
-
48
- Dataservice.objects.create(title="test", datasets=datasets)
49
-
50
- tasks.purge_datasets()
51
-
52
- assert Transfer.objects.filter(id=transfer.id).count() == 0
53
-
54
- topic = Topic.objects(name="test topic").first()
55
- topic_element = topic.elements.first()
56
- assert topic_element.element is None
57
-
58
- assert Discussion.objects.filter(id=discussion.id).count() == 0
59
- assert Follow.objects.filter(id=follower.id).count() == 0
60
- assert HarvestJob.objects.filter(items__dataset=datasets[0].id).count() == 0
61
- assert Dataservice.objects.filter(datasets=datasets[0].id).count() == 0
62
-
63
-
64
- def test_purge_datasets_community():
65
- dataset = Dataset.objects.create(title="delete me", deleted="2016-01-01")
66
- community_resource1 = CommunityResourceFactory()
67
- community_resource1.dataset = dataset
68
- community_resource1.save()
69
-
70
- tasks.purge_datasets()
71
- assert CommunityResource.objects.count() == 0
72
-
73
-
74
- @pytest.mark.usefixtures("instance_path")
75
- def test_export_csv(app):
76
- dataset = DatasetFactory()
77
- app.config["EXPORT_CSV_DATASET_ID"] = dataset.id
78
- models = app.config["EXPORT_CSV_MODELS"]
79
- tasks.export_csv()
80
- dataset = Dataset.objects.get(id=dataset.id)
81
- assert len(dataset.resources) == len(models)
82
- extras = [r.extras.get("csv-export:model") for r in dataset.resources]
83
- for model in models:
84
- assert model in extras
85
- fs_filenames = [r.fs_filename for r in dataset.resources if r.url.endswith(r.fs_filename)]
86
- assert len(fs_filenames) == len(dataset.resources)
19
+ from udata.tests.api import PytestOnlyDBTestCase
20
+
21
+
22
+ class DatasetTasksTest(PytestOnlyDBTestCase):
23
+ def test_purge_datasets(self):
24
+ datasets = [
25
+ Dataset.objects.create(title="delete me", deleted="2016-01-01"),
26
+ Dataset.objects.create(title="keep me"),
27
+ ]
28
+
29
+ topic = Topic.objects.create(name="test topic")
30
+ for d in datasets:
31
+ topic_element = TopicElement(element=d, topic=topic)
32
+ topic_element.save()
33
+
34
+ user = UserFactory()
35
+ transfer = Transfer.objects.create(
36
+ owner=user,
37
+ recipient=user,
38
+ subject=datasets[0],
39
+ comment="comment",
40
+ )
41
+
42
+ discussion = DiscussionFactory(subject=datasets[0])
43
+
44
+ follower = Follow.objects.create(follower=user, following=datasets[0])
45
+
46
+ HarvestJobFactory(items=[HarvestItem(dataset=datasets[0])])
47
+
48
+ Dataservice.objects.create(title="test", datasets=datasets)
49
+
50
+ tasks.purge_datasets()
51
+
52
+ assert Transfer.objects.filter(id=transfer.id).count() == 0
53
+
54
+ topic = Topic.objects(name="test topic").first()
55
+ topic_element = topic.elements.first()
56
+ assert topic_element.element is None
57
+
58
+ assert Discussion.objects.filter(id=discussion.id).count() == 0
59
+ assert Follow.objects.filter(id=follower.id).count() == 0
60
+ assert HarvestJob.objects.filter(items__dataset=datasets[0].id).count() == 0
61
+ assert Dataservice.objects.filter(datasets=datasets[0].id).count() == 0
62
+
63
+ def test_purge_datasets_community(self):
64
+ dataset = Dataset.objects.create(title="delete me", deleted="2016-01-01")
65
+ community_resource1 = CommunityResourceFactory()
66
+ community_resource1.dataset = dataset
67
+ community_resource1.save()
68
+
69
+ tasks.purge_datasets()
70
+ assert CommunityResource.objects.count() == 0
71
+
72
+ @pytest.mark.usefixtures("instance_path")
73
+ def test_export_csv(self, app):
74
+ dataset = DatasetFactory()
75
+ app.config["EXPORT_CSV_DATASET_ID"] = dataset.id
76
+ models = app.config["EXPORT_CSV_MODELS"]
77
+ tasks.export_csv()
78
+ dataset = Dataset.objects.get(id=dataset.id)
79
+ assert len(dataset.resources) == len(models)
80
+ extras = [r.extras.get("csv-export:model") for r in dataset.resources]
81
+ for model in models:
82
+ assert model in extras
83
+ fs_filenames = [r.fs_filename for r in dataset.resources if r.url.endswith(r.fs_filename)]
84
+ assert len(fs_filenames) == len(dataset.resources)
@@ -1,6 +1,7 @@
1
1
  import pytest
2
2
 
3
3
  from udata.core.dataset.factories import ResourceFactory
4
+ from udata.tests.api import PytestOnlyAPITestCase
4
5
 
5
6
  DUMMY_EXTRAS = {
6
7
  "analysis:parsing:finished_at": "1987-12-23T10:55:00.000000+00:00",
@@ -8,62 +9,52 @@ DUMMY_EXTRAS = {
8
9
  }
9
10
  MAX_SIZE = 50000
10
11
 
11
- pytestmark = [
12
- pytest.mark.usefixtures("clean_db"),
13
- pytest.mark.options(PLUGINS=["tabular"]),
14
- pytest.mark.frontend,
15
- ]
16
12
 
13
+ @pytest.mark.options(PLUGINS=["tabular"])
14
+ class ResourcePreviewTest(PytestOnlyAPITestCase):
15
+ def expected_url(self, rid):
16
+ return "http://preview.me/resources/{0}".format(rid)
17
17
 
18
- def expected_url(rid):
19
- return "http://preview.me/resources/{0}".format(rid)
18
+ @pytest.mark.options(TABULAR_EXPLORE_URL="http://preview.me")
19
+ def test_display_preview_for_tabular_resources(self):
20
+ resource = ResourceFactory(extras=DUMMY_EXTRAS)
21
+ assert resource.preview_url == self.expected_url(resource.id)
20
22
 
23
+ @pytest.mark.options(TABULAR_EXPLORE_URL=None)
24
+ def test_no_preview_if_no_conf(self):
25
+ assert ResourceFactory(extras=DUMMY_EXTRAS).preview_url is None
21
26
 
22
- @pytest.mark.options(TABULAR_EXPLORE_URL="http://preview.me")
23
- def test_display_preview_for_tabular_resources():
24
- resource = ResourceFactory(extras=DUMMY_EXTRAS)
25
- assert resource.preview_url == expected_url(resource.id)
27
+ @pytest.mark.options(TABULAR_EXPLORE_URL="http://preview.me")
28
+ def test_default_allow_remote_preview(self):
29
+ resources = [
30
+ ResourceFactory(extras=DUMMY_EXTRAS),
31
+ ResourceFactory(filetype="remote", extras=DUMMY_EXTRAS),
32
+ ]
26
33
 
34
+ for resource in resources:
35
+ assert resource.preview_url == self.expected_url(resource.id)
27
36
 
28
- @pytest.mark.options(TABULAR_EXPLORE_URL=None)
29
- def test_no_preview_if_no_conf():
30
- assert ResourceFactory(extras=DUMMY_EXTRAS).preview_url is None
37
+ @pytest.mark.options(
38
+ TABULAR_EXPLORE_URL="http://preview.me",
39
+ TABULAR_ALLOW_REMOTE=False,
40
+ )
41
+ def test_allow_remote_preview_false(self):
42
+ local = ResourceFactory(extras=DUMMY_EXTRAS)
43
+ remote = ResourceFactory(filetype="remote", extras=DUMMY_EXTRAS)
31
44
 
45
+ assert local.preview_url == self.expected_url(local.id)
46
+ assert remote.preview_url is None
32
47
 
33
- @pytest.mark.options(TABULAR_EXPLORE_URL="http://preview.me")
34
- def test_default_allow_remote_preview():
35
- resources = [
36
- ResourceFactory(extras=DUMMY_EXTRAS),
37
- ResourceFactory(filetype="remote", extras=DUMMY_EXTRAS),
38
- ]
48
+ @pytest.mark.options(TABULAR_EXPLORE_URL="http://preview.me")
49
+ def test_display_preview_without_max_size(self):
50
+ resource = ResourceFactory(extras=DUMMY_EXTRAS, filesize=2 * MAX_SIZE)
39
51
 
40
- for resource in resources:
41
- assert resource.preview_url == expected_url(resource.id)
52
+ assert resource.preview_url == self.expected_url(resource.id)
42
53
 
54
+ @pytest.mark.options(TABULAR_EXPLORE_URL="http://preview.me")
55
+ def test_no_preview_if_no_parsing_table_info(self):
56
+ extras = DUMMY_EXTRAS
57
+ del extras["analysis:parsing:parsing_table"]
43
58
 
44
- @pytest.mark.options(
45
- TABULAR_EXPLORE_URL="http://preview.me",
46
- TABULAR_ALLOW_REMOTE=False,
47
- )
48
- def test_allow_remote_preview_false():
49
- local = ResourceFactory(extras=DUMMY_EXTRAS)
50
- remote = ResourceFactory(filetype="remote", extras=DUMMY_EXTRAS)
51
-
52
- assert local.preview_url == expected_url(local.id)
53
- assert remote.preview_url is None
54
-
55
-
56
- @pytest.mark.options(TABULAR_EXPLORE_URL="http://preview.me")
57
- def test_display_preview_without_max_size():
58
- resource = ResourceFactory(extras=DUMMY_EXTRAS, filesize=2 * MAX_SIZE)
59
-
60
- assert resource.preview_url == expected_url(resource.id)
61
-
62
-
63
- @pytest.mark.options(TABULAR_EXPLORE_URL="http://preview.me")
64
- def test_no_preview_if_no_parsing_table_info():
65
- extras = DUMMY_EXTRAS
66
- del extras["analysis:parsing:parsing_table"]
67
-
68
- resource = ResourceFactory(extras=extras, filesize=2 * MAX_SIZE)
69
- assert resource.preview_url is None
59
+ resource = ResourceFactory(extras=extras, filesize=2 * MAX_SIZE)
60
+ assert resource.preview_url is None
@@ -3,6 +3,7 @@ import requests_mock
3
3
 
4
4
  from udata.core.dataset.factories import DatasetFactory
5
5
  from udata.core.dataset.transport import clear_datasets, map_transport_datasets
6
+ from udata.tests.api import PytestOnlyDBTestCase
6
7
 
7
8
 
8
9
  @pytest.fixture
@@ -25,8 +26,7 @@ def mock_response():
25
26
  ]
26
27
 
27
28
 
28
- @pytest.mark.usefixtures("clean_db")
29
- class TransportTasksTest:
29
+ class TransportTasksTest(PytestOnlyDBTestCase):
30
30
  @pytest.mark.options(TRANSPORT_DATASETS_URL="http://local.test/api/datasets")
31
31
  def test_map_transport_datasets(self, mock_response):
32
32
  ds1 = DatasetFactory(id="61fd29da29ea95c7bc0e1211")
@@ -1,5 +1,4 @@
1
1
  from udata.core.spatial.factories import GeoZoneFactory
2
- from udata.settings import Testing
3
2
 
4
3
 
5
4
  def create_geozones_fixtures():
@@ -19,8 +18,3 @@ def create_old_new_regions_fixtures():
19
18
  id="fr:region:76", level="fr:region", name="Languedoc-Rousillon et Midi-Pyrénées", code="76"
20
19
  )
21
20
  return lr, occitanie
22
-
23
-
24
- class TerritoriesSettings(Testing):
25
- ACTIVATE_TERRITORIES = True
26
- HANDLED_LEVELS = ("fr:commune", "fr:departement", "fr:region", "country")
@@ -1,18 +1,19 @@
1
+ import pytest
1
2
  from flask import url_for
2
3
 
3
4
  from udata.core.spatial.factories import GeoZoneFactory
4
5
  from udata.tests.api import APITestCase
5
6
  from udata.tests.features.territories import (
6
- TerritoriesSettings,
7
7
  create_geozones_fixtures,
8
8
  create_old_new_regions_fixtures,
9
9
  )
10
10
 
11
11
 
12
+ @pytest.mark.options(
13
+ ACTIVATE_TERRITORIES=True,
14
+ HANDLED_LEVELS=("fr:commune", "fr:departement", "fr:region", "country"),
15
+ )
12
16
  class TerritoriesAPITest(APITestCase):
13
- modules = []
14
- settings = TerritoriesSettings
15
-
16
17
  def setUp(self):
17
18
  self.paca, self.bdr, self.arles = create_geozones_fixtures()
18
19
 
@@ -21,15 +22,15 @@ class TerritoriesAPITest(APITestCase):
21
22
  self.assert400(response)
22
23
 
23
24
  def test_suggest_empty(self):
24
- response = self.get(url_for("api.suggest_territory"), qs={"q": "tes"})
25
+ response = self.get(url_for("api.suggest_territory", q="tes"))
25
26
  self.assert200(response)
26
27
  self.assertEqual(response.json, [])
27
- response = self.get(url_for("api.suggest_territory"), qs={"q": "test"})
28
+ response = self.get(url_for("api.suggest_territory", q="test"))
28
29
  self.assert200(response)
29
30
  self.assertEqual(response.json, [])
30
31
 
31
32
  def test_suggest_town(self):
32
- response = self.get(url_for("api.suggest_territory"), qs={"q": "arle"})
33
+ response = self.get(url_for("api.suggest_territory", q="arle"))
33
34
  self.assert200(response)
34
35
  result = response.json[0]
35
36
  self.assertEqual(result["title"], self.arles.name)
@@ -37,7 +38,7 @@ class TerritoriesAPITest(APITestCase):
37
38
  self.assertIn("page", result)
38
39
 
39
40
  def test_suggest_town_five_letters(self):
40
- response = self.get(url_for("api.suggest_territory"), qs={"q": "arles"})
41
+ response = self.get(url_for("api.suggest_territory", q="arles"))
41
42
  self.assert200(response)
42
43
  result = response.json[0]
43
44
  self.assertEqual(result["title"], self.arles.name)
@@ -45,7 +46,7 @@ class TerritoriesAPITest(APITestCase):
45
46
  self.assertIn("page", result)
46
47
 
47
48
  def test_suggest_town_by_insee_code(self):
48
- response = self.get(url_for("api.suggest_territory"), qs={"q": "13004"})
49
+ response = self.get(url_for("api.suggest_territory", q="13004"))
49
50
  self.assert200(response)
50
51
  result = response.json[0]
51
52
  self.assertEqual(result["id"], self.arles.id)
@@ -55,7 +56,7 @@ class TerritoriesAPITest(APITestCase):
55
56
  arles_sur_tech = GeoZoneFactory(
56
57
  id="fr:commune:66009", level="fr:commune", name="Arles-sur-Tech", code="66009"
57
58
  )
58
- response = self.get(url_for("api.suggest_territory"), qs={"q": "arles"})
59
+ response = self.get(url_for("api.suggest_territory", q="arles"))
59
60
  self.assert200(response)
60
61
  results = response.json
61
62
  self.assertEqual(len(results), 2)
@@ -64,7 +65,7 @@ class TerritoriesAPITest(APITestCase):
64
65
  self.assertEqual(results[1]["id"], arles_sur_tech.id)
65
66
 
66
67
  def test_suggest_county(self):
67
- response = self.get(url_for("api.suggest_territory"), qs={"q": "bouche"})
68
+ response = self.get(url_for("api.suggest_territory", q="bouche"))
68
69
  self.assert200(response)
69
70
  result = response.json[0]
70
71
  self.assertEqual(result["title"], self.bdr.name)
@@ -72,7 +73,7 @@ class TerritoriesAPITest(APITestCase):
72
73
  self.assertIn("page", result)
73
74
 
74
75
  def test_suggest_region(self):
75
- response = self.get(url_for("api.suggest_territory"), qs={"q": "prov"})
76
+ response = self.get(url_for("api.suggest_territory", q="prov"))
76
77
  self.assert200(response)
77
78
  result = response.json[0]
78
79
  self.assertEqual(result["title"], self.paca.name)
@@ -81,7 +82,7 @@ class TerritoriesAPITest(APITestCase):
81
82
 
82
83
  def test_suggest_old_new_region(self):
83
84
  lr, occitanie = create_old_new_regions_fixtures()
84
- response = self.get(url_for("api.suggest_territory"), qs={"q": "langue"})
85
+ response = self.get(url_for("api.suggest_territory", q="langue"))
85
86
  self.assert200(response)
86
87
  self.assertEqual(len(response.json), 2)
87
88
  result = response.json[0]
@@ -92,7 +93,7 @@ class TerritoriesAPITest(APITestCase):
92
93
  self.assertEqual(result["id"], lr.id)
93
94
 
94
95
  def test_suggest_county_by_id(self):
95
- response = self.get(url_for("api.suggest_territory"), qs={"q": "13"})
96
+ response = self.get(url_for("api.suggest_territory", q="13"))
96
97
  self.assert200(response)
97
98
  result = response.json[0]
98
99
  self.assertEqual(result["id"], self.bdr.id)
@@ -102,7 +103,7 @@ class TerritoriesAPITest(APITestCase):
102
103
  bouchet = GeoZoneFactory(
103
104
  id="fr:commune:26054", level="fr:commune", name="Bouchet", code="26054"
104
105
  )
105
- response = self.get(url_for("api.suggest_territory"), qs={"q": "bouche"})
106
+ response = self.get(url_for("api.suggest_territory", q="bouche"))
106
107
  self.assert200(response)
107
108
  results = response.json
108
109
  self.assertEqual(len(results), 2)
@@ -114,7 +115,7 @@ class TerritoriesAPITest(APITestCase):
114
115
  guyane = GeoZoneFactory(
115
116
  id="fr:departement:973", level="fr:departement", name="Guyane", code="973"
116
117
  )
117
- response = self.get(url_for("api.suggest_territory"), qs={"q": "guya"})
118
+ response = self.get(url_for("api.suggest_territory", q="guya"))
118
119
  self.assert200(response)
119
120
  results = response.json
120
121
  self.assertEqual(len(results), 1)
@@ -124,7 +125,7 @@ class TerritoriesAPITest(APITestCase):
124
125
  guyane = GeoZoneFactory(
125
126
  id="fr:departement:973", level="fr:departement", name="Guyane", code="973"
126
127
  )
127
- response = self.get(url_for("api.suggest_territory"), qs={"q": "973"})
128
+ response = self.get(url_for("api.suggest_territory", q="973"))
128
129
  self.assert200(response)
129
130
  results = response.json
130
131
  self.assertEqual(len(results), 1)
@@ -134,7 +135,7 @@ class TerritoriesAPITest(APITestCase):
134
135
  bastia = GeoZoneFactory(
135
136
  id="fr:commune:2b033", level="fr:commune", name="Bastia", code="2b033"
136
137
  )
137
- response = self.get(url_for("api.suggest_territory"), qs={"q": "basti"})
138
+ response = self.get(url_for("api.suggest_territory", q="basti"))
138
139
  self.assert200(response)
139
140
  results = response.json
140
141
  self.assertEqual(len(results), 1)
@@ -144,7 +145,7 @@ class TerritoriesAPITest(APITestCase):
144
145
  bastia = GeoZoneFactory(
145
146
  id="fr:commune:2b033", level="fr:commune", name="Bastia", code="2b033"
146
147
  )
147
- response = self.get(url_for("api.suggest_territory"), qs={"q": "2b033"})
148
+ response = self.get(url_for("api.suggest_territory", q="2b033"))
148
149
  self.assert200(response)
149
150
  results = response.json
150
151
  self.assertEqual(len(results), 1)
@@ -154,7 +155,7 @@ class TerritoriesAPITest(APITestCase):
154
155
  haute_corse = GeoZoneFactory(
155
156
  id="fr:departement:2b", level="fr:departement", name="Haute-Corse", code="2b"
156
157
  )
157
- response = self.get(url_for("api.suggest_territory"), qs={"q": "2b"})
158
+ response = self.get(url_for("api.suggest_territory", q="2b"))
158
159
  self.assert200(response)
159
160
  results = response.json
160
161
  self.assertEqual(len(results), 1)
@@ -162,21 +163,21 @@ class TerritoriesAPITest(APITestCase):
162
163
 
163
164
  def test_not_suggest_country(self):
164
165
  GeoZoneFactory(id="country:fr", level="country", name="France")
165
- response = self.get(url_for("api.suggest_territory"), qs={"q": "fra"})
166
+ response = self.get(url_for("api.suggest_territory", q="fra"))
166
167
  self.assert200(response)
167
168
  results = response.json
168
169
  self.assertEqual(len(results), 0)
169
- response = self.get(url_for("api.suggest_territory"), qs={"q": "fran"})
170
+ response = self.get(url_for("api.suggest_territory", q="fran"))
170
171
  self.assert200(response)
171
172
  results = response.json
172
173
  self.assertEqual(len(results), 0)
173
- response = self.get(url_for("api.suggest_territory"), qs={"q": "franc"})
174
+ response = self.get(url_for("api.suggest_territory", q="franc"))
174
175
  self.assert200(response)
175
176
  results = response.json
176
177
  self.assertEqual(len(results), 0)
177
178
 
178
179
  def test_suggest_unicode(self):
179
- response = self.get(url_for("api.suggest_territory"), qs={"q": "Bouches-du-Rhône"})
180
+ response = self.get(url_for("api.suggest_territory", q="Bouches-du-Rhône"))
180
181
  self.assert200(response)
181
182
  result = response.json[0]
182
183
  self.assertEqual(result["title"], self.bdr.name)
@@ -9,11 +9,11 @@ from udata.core.user.factories import AdminFactory, UserFactory
9
9
  from udata.forms import ModelForm, fields
10
10
  from udata.i18n import gettext as _
11
11
  from udata.models import User, db
12
- from udata.tests import DBTestMixin, TestCase
12
+ from udata.tests.api import DBTestCase
13
13
  from udata.tests.helpers import security_gettext
14
14
 
15
15
 
16
- class CurrentUserFieldTest(TestCase, DBTestMixin):
16
+ class CurrentUserFieldTest(DBTestCase):
17
17
  def factory(self, *args, **kwargs):
18
18
  class Ownable(db.Document):
19
19
  owner = db.ReferenceField(User)
@@ -1,15 +1,13 @@
1
1
  from datetime import date, datetime
2
2
 
3
- import pytest
4
3
  from werkzeug.datastructures import MultiDict
5
4
 
6
5
  from udata.forms import ModelForm, fields
7
6
  from udata.mongo import db
7
+ from udata.tests import PytestOnlyTestCase
8
8
 
9
- pytestmark = [pytest.mark.usefixtures("app")]
10
9
 
11
-
12
- class DictFieldTest:
10
+ class DictFieldTest(PytestOnlyTestCase):
13
11
  def factory(self):
14
12
  class Fake(db.Document):
15
13
  raw = db.DictField()
@@ -6,11 +6,10 @@ from werkzeug.datastructures import MultiDict
6
6
 
7
7
  from udata.forms import ModelForm, fields
8
8
  from udata.mongo import db
9
+ from udata.tests import PytestOnlyTestCase
9
10
 
10
- pytestmark = [pytest.mark.usefixtures("app")]
11
11
 
12
-
13
- class ExtrasFieldTest:
12
+ class ExtrasFieldTest(PytestOnlyTestCase):
14
13
  def factory(self):
15
14
  class Fake(db.Document):
16
15
  extras = db.ExtrasField()