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.
- udata/commands/tests/test_fixtures.py +2 -3
- udata/core/badges/tests/test_commands.py +2 -4
- udata/core/badges/tests/test_model.py +2 -2
- udata/core/dataservices/models.py +4 -0
- udata/core/dataservices/search.py +1 -1
- udata/core/dataset/search.py +2 -2
- udata/core/organization/search.py +1 -1
- udata/core/pages/tests/test_api.py +0 -2
- udata/core/reuse/search.py +1 -1
- udata/core/spatial/tests/test_api.py +17 -20
- udata/core/spatial/tests/test_models.py +3 -3
- udata/core/user/tests/test_user_model.py +2 -6
- udata/features/identicon/tests/test_backends.py +3 -13
- udata/harvest/tests/ckan/test_ckan_backend.py +300 -337
- udata/harvest/tests/ckan/test_ckan_backend_errors.py +94 -99
- udata/harvest/tests/ckan/test_ckan_backend_filters.py +128 -122
- udata/harvest/tests/ckan/test_dkan_backend.py +39 -51
- udata/harvest/tests/test_actions.py +7 -7
- udata/harvest/tests/test_api.py +2 -4
- udata/harvest/tests/test_base_backend.py +3 -4
- udata/harvest/tests/test_dcat_backend.py +4 -6
- udata/harvest/tests/test_models.py +2 -4
- udata/harvest/tests/test_notifications.py +2 -4
- udata/harvest/tests/test_tasks.py +2 -3
- udata/tests/__init__.py +40 -58
- udata/tests/api/__init__.py +87 -2
- udata/tests/api/test_activities_api.py +17 -23
- udata/tests/api/test_auth_api.py +2 -4
- udata/tests/api/test_contact_points.py +48 -54
- udata/tests/api/test_dataservices_api.py +0 -2
- udata/tests/api/test_datasets_api.py +15 -29
- udata/tests/api/test_me_api.py +4 -6
- udata/tests/api/test_organizations_api.py +19 -38
- udata/tests/api/test_reports_api.py +0 -4
- udata/tests/api/test_reuses_api.py +9 -19
- udata/tests/api/test_swagger.py +2 -3
- udata/tests/api/test_tags_api.py +6 -7
- udata/tests/api/test_transfer_api.py +0 -2
- udata/tests/api/test_user_api.py +8 -10
- udata/tests/apiv2/test_datasets.py +0 -4
- udata/tests/apiv2/test_me_api.py +0 -2
- udata/tests/apiv2/test_organizations.py +0 -2
- udata/tests/apiv2/test_swagger.py +2 -3
- udata/tests/apiv2/test_topics.py +0 -2
- udata/tests/cli/test_cli_base.py +14 -12
- udata/tests/cli/test_db_cli.py +51 -54
- udata/tests/contact_point/test_contact_point_models.py +2 -2
- udata/tests/dataservice/test_csv_adapter.py +2 -5
- udata/tests/dataservice/test_dataservice_rdf.py +3 -6
- udata/tests/dataservice/test_dataservice_tasks.py +36 -38
- udata/tests/dataset/test_csv_adapter.py +2 -5
- udata/tests/dataset/test_dataset_actions.py +2 -4
- udata/tests/dataset/test_dataset_commands.py +2 -4
- udata/tests/dataset/test_dataset_events.py +3 -3
- udata/tests/dataset/test_dataset_model.py +6 -7
- udata/tests/dataset/test_dataset_rdf.py +6 -9
- udata/tests/dataset/test_dataset_recommendations.py +2 -2
- udata/tests/dataset/test_dataset_tasks.py +66 -68
- udata/tests/dataset/test_resource_preview.py +39 -48
- udata/tests/dataset/test_transport_tasks.py +2 -2
- udata/tests/features/territories/__init__.py +0 -6
- udata/tests/features/territories/test_territories_api.py +25 -24
- udata/tests/forms/test_current_user_field.py +2 -2
- udata/tests/forms/test_dict_field.py +2 -4
- udata/tests/forms/test_extras_fields.py +2 -3
- udata/tests/forms/test_image_field.py +2 -2
- udata/tests/forms/test_model_field.py +2 -4
- udata/tests/forms/test_publish_as_field.py +2 -4
- udata/tests/forms/test_user_forms.py +26 -29
- udata/tests/frontend/test_auth.py +2 -3
- udata/tests/frontend/test_csv.py +5 -6
- udata/tests/frontend/test_error_handlers.py +2 -3
- udata/tests/frontend/test_hooks.py +5 -7
- udata/tests/frontend/test_markdown.py +3 -4
- udata/tests/helpers.py +2 -7
- udata/tests/metrics/test_metrics.py +52 -48
- udata/tests/metrics/test_tasks.py +154 -150
- udata/tests/organization/test_csv_adapter.py +2 -5
- udata/tests/organization/test_notifications.py +2 -4
- udata/tests/organization/test_organization_model.py +3 -4
- udata/tests/organization/test_organization_rdf.py +2 -8
- udata/tests/plugin.py +6 -110
- udata/tests/reuse/test_reuse_model.py +3 -4
- udata/tests/site/test_site_api.py +0 -2
- udata/tests/site/test_site_csv_exports.py +0 -2
- udata/tests/site/test_site_metrics.py +2 -4
- udata/tests/site/test_site_model.py +2 -2
- udata/tests/site/test_site_rdf.py +3 -6
- udata/tests/test_activity.py +3 -3
- udata/tests/test_api_fields.py +6 -9
- udata/tests/test_cors.py +0 -2
- udata/tests/test_dcat_commands.py +2 -3
- udata/tests/test_discussions.py +2 -7
- udata/tests/test_mail.py +4 -10
- udata/tests/test_migrations.py +413 -419
- udata/tests/test_model.py +10 -11
- udata/tests/test_notifications.py +2 -3
- udata/tests/test_owned.py +3 -3
- udata/tests/test_routing.py +5 -5
- udata/tests/test_storages.py +6 -5
- udata/tests/test_tags.py +2 -1
- udata/tests/test_topics.py +2 -4
- udata/tests/test_transfer.py +4 -5
- udata/tests/topic/test_topic_tasks.py +25 -27
- udata/tests/user/test_user_rdf.py +2 -8
- udata/tests/workers/test_jobs_commands.py +2 -2
- udata/tests/workers/test_tasks_routing.py +27 -27
- {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/METADATA +1 -1
- {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/RECORD +113 -115
- udata/tests/frontend/__init__.py +0 -23
- udata/tests/metrics/conftest.py +0 -15
- {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/WHEEL +0 -0
- {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/entry_points.txt +0 -0
- {udata-12.0.2.dev17.dist-info → udata-12.0.2.dev19.dist-info}/licenses/LICENSE +0 -0
- {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.
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def test_purge_datasets():
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
assert
|
|
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
|
-
|
|
19
|
-
|
|
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
|
|
24
|
-
|
|
25
|
-
|
|
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(
|
|
29
|
-
|
|
30
|
-
|
|
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
|
|
35
|
-
|
|
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
|
-
|
|
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
|
-
|
|
45
|
-
|
|
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
|
-
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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"
|
|
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
|
|
12
|
+
from udata.tests.api import DBTestCase
|
|
13
13
|
from udata.tests.helpers import security_gettext
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
class CurrentUserFieldTest(
|
|
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()
|