diff --git a/ckan/tests/controllers/test_admin.py b/ckan/tests/controllers/test_admin.py
index c8de1d38cc5..34e2689e9c4 100644
--- a/ckan/tests/controllers/test_admin.py
+++ b/ckan/tests/controllers/test_admin.py
@@ -337,7 +337,7 @@ def test_trash_purge_deleted_datasets(self, app):
# how many datasets after purge
pkgs_after_purge = model.Session.query(model.Package).count()
- assert_equal(pkgs_after_purge, 1)
+ assert pkgs_after_purge == 1
class TestAdminConfigUpdate(object):
diff --git a/ckan/tests/controllers/test_package.py b/ckan/tests/controllers/test_package.py
index ed7f286644f..823bb06897c 100644
--- a/ckan/tests/controllers/test_package.py
+++ b/ckan/tests/controllers/test_package.py
@@ -146,30 +146,6 @@ def test_complete_package_with_two_resources(self, app):
assert pkg.resources[1].url == u"http://example.com/resource1"
assert pkg.state == "active"
- # def test_resource_uploads(self):
- # app = self._get_test_app()
- # env, response = _get_package_new_page(app)
- # form = response.forms['dataset-edit']
- # form['name'] = u'complete-package-with-two-resources'
-
- # response = submit_and_follow(app, form, env, 'save')
- # form = response.forms['resource-edit']
- # form['upload'] = ('README.rst', b'data')
-
- # response = submit_and_follow(app, form, env, 'save', 'go-metadata')
- # pkg = model.Package.by_name(u'complete-package-with-two-resources')
- # assert_equal(pkg.resources[0].url_type, u'upload')
- # assert_equal(pkg.state, 'active')
- # response = app.get(
- # url_for(
- # controller='package',
- # action='resource_download',
- # id=pkg.id,
- # resource_id=pkg.resources[0].id
- # ),
- # )
- # assert_equal('data', response.body)
-
@pytest.mark.usefixtures("clean_db")
def test_previous_button_works(self, app):
env, response = _get_package_new_page(app)
@@ -620,6 +596,7 @@ def test_read_dataset_as_it_used_to_be_but_is_unmigrated(self, app):
model.Session.query(model.Activity)
.filter_by(object_id=dataset["id"])
.one()
+ )
modern_activity.delete()
# Create an Activity object as it was in earlier versions of CKAN.
@@ -1862,7 +1839,6 @@ def test_create_dataset(self, app):
in response
)
- @pytest.mark.usefixtures("clean_db")
def _clear_activities(self):
model.Session.query(model.Activity).delete()
model.Session.flush()
@@ -1891,132 +1867,150 @@ def test_change_dataset(self, app):
in response
)
- def test_create_tag_directly(self):
- app = self._get_test_app()
+ @pytest.mark.usefixtures("clean_db")
+ def test_create_tag_directly(self, app):
+
user = factories.User()
dataset = factories.Dataset(user=user)
self._clear_activities()
- dataset['tags'] = [{'name': 'some_tag'}]
+ dataset["tags"] = [{"name": "some_tag"}]
helpers.call_action(
- 'package_update', context={'user': user['name']}, **dataset)
+ "package_update", context={"user": user["name"]}, **dataset
+ )
- url = url_for('dataset.activity',
- id=dataset['id'])
+ url = url_for("dataset.activity", id=dataset["id"])
response = app.get(url)
- assert_in('Mr. Test User'.format(user['name']),
- response)
- assert_in('updated the dataset', response)
- assert_in('{}'
- .format(dataset['id'], dataset['title']),
- response)
+ assert (
+ 'Mr. Test User'.format(user["name"]) in response
+ )
+ assert "updated the dataset" in response
+ assert (
+ '{}'.format(dataset["id"], dataset["title"])
+ in response
+ )
activities = helpers.call_action(
- 'package_activity_list', id=dataset['id'])
+ "package_activity_list", id=dataset["id"]
+ )
- assert_equal(len(activities), 1)
+ assert len(activities) == 1
- def test_create_tag(self):
+ @pytest.mark.usefixtures("clean_db")
+ def test_create_tag(self, app):
app = self._get_test_app()
user = factories.User()
dataset = factories.Dataset(user=user)
self._clear_activities()
- dataset['tags'] = [{'name': 'some_tag'}]
+ dataset["tags"] = [{"name": "some_tag"}]
helpers.call_action(
- 'package_update', context={'user': user['name']}, **dataset)
+ "package_update", context={"user": user["name"]}, **dataset
+ )
- url = url_for('dataset.activity',
- id=dataset['id'])
+ url = url_for("dataset.activity", id=dataset["id"])
response = app.get(url)
- assert_in('Mr. Test User'.format(user['name']),
- response)
- assert_in('updated the dataset', response)
- assert_in('{}'
- .format(dataset['id'], dataset['title']),
- response)
+ assert_in(
+ 'Mr. Test User'.format(user["name"]), response
+ )
+ assert_in("updated the dataset", response)
+ assert_in(
+ '{}'.format(dataset["id"], dataset["title"]),
+ response,
+ )
activities = helpers.call_action(
- 'package_activity_list', id=dataset['id'])
+ "package_activity_list", id=dataset["id"]
+ )
assert_equal(len(activities), 1)
- def test_create_extra(self):
- app = self._get_test_app()
+ @pytest.mark.usefixtures("clean_db")
+ def test_create_extra(self, app):
user = factories.User()
dataset = factories.Dataset(user=user)
self._clear_activities()
- dataset['extras'] = [{'key': 'some', 'value': 'extra'}]
+ dataset["extras"] = [{"key": "some", "value": "extra"}]
helpers.call_action(
- 'package_update', context={'user': user['name']}, **dataset)
+ "package_update", context={"user": user["name"]}, **dataset
+ )
- url = url_for('dataset.activity',
- id=dataset['id'])
+ url = url_for("dataset.activity", id=dataset["id"])
response = app.get(url)
- assert_in('Mr. Test User'.format(user['name']),
- response)
- assert_in('updated the dataset', response)
- assert_in('{}'
- .format(dataset['id'], dataset['title']),
- response)
+ assert_in(
+ 'Mr. Test User'.format(user["name"]), response
+ )
+ assert_in("updated the dataset", response)
+ assert_in(
+ '{}'.format(dataset["id"], dataset["title"]),
+ response,
+ )
activities = helpers.call_action(
- 'package_activity_list', id=dataset['id'])
+ "package_activity_list", id=dataset["id"]
+ )
assert_equal(len(activities), 1)
- def test_create_resource(self):
- app = self._get_test_app()
+ @pytest.mark.usefixtures("clean_db")
+ def test_create_resource(self, app):
user = factories.User()
dataset = factories.Dataset(user=user)
self._clear_activities()
helpers.call_action(
- 'resource_create', context={'user': user['name']},
- name='Test resource',
- package_id=dataset['id'])
+ "resource_create",
+ context={"user": user["name"]},
+ name="Test resource",
+ package_id=dataset["id"],
+ )
- url = url_for('dataset.activity',
- id=dataset['id'])
+ url = url_for("dataset.activity", id=dataset["id"])
response = app.get(url)
- assert_in('Mr. Test User'.format(user['name']),
- response)
- assert_in('updated the dataset', response)
- assert_in('{}'
- .format(dataset['id'], dataset['title']),
- response)
+ assert_in(
+ 'Mr. Test User'.format(user["name"]), response
+ )
+ assert_in("updated the dataset", response)
+ assert_in(
+ '{}'.format(dataset["id"], dataset["title"]),
+ response,
+ )
activities = helpers.call_action(
- 'package_activity_list', id=dataset['id'])
+ "package_activity_list", id=dataset["id"]
+ )
assert_equal(len(activities), 1)
- def test_update_resource(self):
- app = self._get_test_app()
+ @pytest.mark.usefixtures("clean_db")
+ def test_update_resource(self, app):
user = factories.User()
dataset = factories.Dataset(user=user)
- resource = factories.Resource(package_id=dataset['id'])
+ resource = factories.Resource(package_id=dataset["id"])
self._clear_activities()
helpers.call_action(
- 'resource_update', context={'user': user['name']},
- id=resource['id'],
- name='Test resource updated',
- package_id=dataset['id'])
+ "resource_update",
+ context={"user": user["name"]},
+ id=resource["id"],
+ name="Test resource updated",
+ package_id=dataset["id"],
+ )
- url = url_for('dataset.activity',
- id=dataset['id'])
+ url = url_for("dataset.activity", id=dataset["id"])
response = app.get(url)
- assert_in('Mr. Test User'.format(user['name']),
- response)
- assert_in('updated the dataset', response)
- assert_in('{}'
- .format(dataset['id'], dataset['title']),
- response)
+ assert_in(
+ 'Mr. Test User'.format(user["name"]), response
+ )
+ assert_in("updated the dataset", response)
+ assert_in(
+ '{}'.format(dataset["id"], dataset["title"]),
+ response,
+ )
activities = helpers.call_action(
- 'package_activity_list', id=dataset['id'])
+ "package_activity_list", id=dataset["id"]
+ )
assert_equal(len(activities), 1)
-
@pytest.mark.usefixtures("clean_db")
def test_delete_dataset(self, app):
user = factories.User()
diff --git a/ckan/tests/logic/test_validators.py b/ckan/tests/logic/test_validators.py
index 1f362196339..160e44dc697 100644
--- a/ckan/tests/logic/test_validators.py
+++ b/ckan/tests/logic/test_validators.py
@@ -1,4 +1,3 @@
-
# encoding: utf-8
"""Unit tests for ckan/logic/validators.py.
@@ -747,17 +746,16 @@ def call_validator(*args, **kwargs):
call_validator(key, {key: url}, errors, None)
-
class TestOneOfValidator(object):
-
def test_val_in_list(self):
cont = [1, 2, 3, 4]
func = validators.one_of(cont)
- assert_equals(func(1), 1)
+ assert func(1) == 1
def test_val_not_in_list(self):
cont = [1, 2, 3, 4]
func = validators.one_of(cont)
raises_Invalid(func)(5)
+
# TODO: Need to test when you are not providing owner_org and the validator queries for the dataset with package_show
diff --git a/ckanext/example_iconfigurer/tests/test_example_iconfigurer.py b/ckanext/example_iconfigurer/tests/test_example_iconfigurer.py
index a603adf0b24..7159b99eb00 100644
--- a/ckanext/example_iconfigurer/tests/test_example_iconfigurer.py
+++ b/ckanext/example_iconfigurer/tests/test_example_iconfigurer.py
@@ -8,67 +8,97 @@
class TestExampleIConfigurer(helpers.FunctionalTestBase):
- _load_plugins = ['example_iconfigurer']
+ _load_plugins = ["example_iconfigurer"]
def test_template_renders(self):
- '''Our controller renders the extension's config template.'''
+ """Our controller renders the extension's config template."""
app = self._get_test_app()
- response = app.get('/ckan-admin/myext_config_one', status=200)
- nosetools.assert_true('My First Config Page' in response)
+ response = app.get("/ckan-admin/myext_config_one", status=200)
+ assert "My First Config Page" in response
def test_config_page_has_custom_tabs(self):
- '''
+ """
The admin base template should include our custom ckan-admin tabs
added using the toolkit.add_ckan_admin_tab method.
- '''
+ """
app = self._get_test_app()
- response = app.get('/ckan-admin/myext_config_one', status=200)
+ response = app.get("/ckan-admin/myext_config_one", status=200)
# The label text
- nosetools.assert_true('My First Custom Config Tab' in response)
- nosetools.assert_true('My Second Custom Config Tab' in response)
+ assert "My First Custom Config Tab" in response
+ assert "My Second Custom Config Tab" in response
# The link path
- nosetools.assert_true('/ckan-admin/myext_config_one' in response)
- nosetools.assert_true('/ckan-admin/myext_config_two' in response)
+ assert "/ckan-admin/myext_config_one" in response
+ assert "/ckan-admin/myext_config_two" in response
-class TestExampleIConfigurerBuildExtraAdminTabsHelper(helpers.FunctionalTestBase):
+class TestExampleIConfigurerBuildExtraAdminTabsHelper(
+ helpers.FunctionalTestBase
+):
"""Tests for helpers.build_extra_admin_nav method."""
- _load_plugins = ('example_iconfigurer',)
+
+ _load_plugins = ("example_iconfigurer",)
+
@classmethod
def setup_class(cls):
- super(TestExampleIConfigurerBuildExtraAdminTabsHelper, cls).setup_class()
+ super(
+ TestExampleIConfigurerBuildExtraAdminTabsHelper, cls
+ ).setup_class()
@classmethod
def teardown_class(cls):
- super(TestExampleIConfigurerBuildExtraAdminTabsHelper, cls).teardown_class()
+ super(
+ TestExampleIConfigurerBuildExtraAdminTabsHelper, cls
+ ).teardown_class()
- @helpers.change_config('ckan.admin_tabs', {})
+ @helpers.change_config("ckan.admin_tabs", {})
def test_build_extra_admin_nav_config_option_present_but_empty(self):
- '''
+ """
Empty string returned when ckan.admin_tabs option in config but empty.
- '''
+ """
app = self._get_test_app()
expected = ""
- response = app.get('/build_extra_admin_nav')
- nosetools.assert_equal(response.body, expected)
+ response = app.get("/build_extra_admin_nav")
+ assert response.body == expected
- @helpers.change_config('ckan.admin_tabs', {'example_iconfigurer.config_one': {'label': 'My Label', 'icon': None}})
+ @helpers.change_config(
+ "ckan.admin_tabs",
+ {
+ "example_iconfigurer.config_one": {
+ "label": "My Label",
+ "icon": None,
+ }
+ },
+ )
def test_build_extra_admin_nav_one_value_in_config(self):
- '''
+ """
Correct string returned when ckan.admin_tabs option has single value in config.
- '''
+ """
app = self._get_test_app()
- expected = """My Label"""
- response = app.get('/build_extra_admin_nav')
- nosetools.assert_equal(response.body, expected)
+ expected = (
+ """My Label"""
+ )
+ response = app.get("/build_extra_admin_nav")
+ assert response.body == expected
- @helpers.change_config('ckan.admin_tabs', {'example_iconfigurer.config_one': {'label': 'My Label', 'icon': 'picture-o'}, 'example_iconfigurer.config_two': {'label': 'My Other Label', 'icon': None}})
+ @helpers.change_config(
+ "ckan.admin_tabs",
+ {
+ "example_iconfigurer.config_one": {
+ "label": "My Label",
+ "icon": "picture-o",
+ },
+ "example_iconfigurer.config_two": {
+ "label": "My Other Label",
+ "icon": None,
+ },
+ },
+ )
def test_build_extra_admin_nav_two_values_in_config(self):
- '''
+ """
Correct string returned when ckan.admin_tabs option has two values in config.
- '''
+ """
app = self._get_test_app()
expected = """ My LabelMy Other Label"""
- response = app.get('/build_extra_admin_nav')
- nosetools.assert_equal(response.body, expected)
+ response = app.get("/build_extra_admin_nav")
+ assert response.body == expected
diff --git a/ckanext/example_idatasetform/tests/test_controllers.py b/ckanext/example_idatasetform/tests/test_controllers.py
index f11f07f108c..93e9695022f 100644
--- a/ckanext/example_idatasetform/tests/test_controllers.py
+++ b/ckanext/example_idatasetform/tests/test_controllers.py
@@ -1,6 +1,6 @@
# encoding: utf-8
-from nose.tools import assert_equal
+import pytest
from ckan.lib.helpers import url_for
import ckan.plugins as plugins
@@ -13,46 +13,46 @@
def _get_package_edit_page(app, package_name):
user = factories.User()
- env = {'REMOTE_USER': user['name'].encode('ascii')}
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
response = app.get(
- url=url_for('dataset.edit', id=package_name),
- extra_environ=env,
+ url=url_for("dataset.edit", id=package_name), extra_environ=env,
)
return env, response
class TestPackageController(helpers.FunctionalTestBase):
- _load_plugins = ['example_idatasetform']
+ _load_plugins = ["example_idatasetform"]
def test_edit_converted_extra_field(self):
- dataset = factories.Dataset(custom_text='foo')
+ dataset = factories.Dataset(custom_text="foo")
app = self._get_test_app()
- env, response = _get_package_edit_page(app, dataset['name'])
- form = response.forms['dataset-edit']
- form['custom_text'] = u'bar'
+ env, response = _get_package_edit_page(app, dataset["name"])
+ form = response.forms["dataset-edit"]
+ form["custom_text"] = u"bar"
- response = submit_and_follow(app, form, env, 'save')
+ response = submit_and_follow(app, form, env, "save")
# just check it has finished the edit, rather than being sent on to the
# resource create/edit form.
- assert_equal(response.request.path, '/dataset/%s' % dataset['name'])
+ assert response.request.path == "/dataset/%s" % dataset["name"]
- pkg = model.Package.by_name(dataset['name'])
- assert_equal(pkg.extras['custom_text'], u'bar')
+ pkg = model.Package.by_name(dataset["name"])
+ assert pkg.extras["custom_text"] == u"bar"
def test_edit_custom_extra_field(self):
# i.e. an extra field that is not mentioned in the schema, filled in on
# the form in the 'custom-fields' section
- dataset = factories.Dataset(extras=[{'key': 'testkey',
- 'value': 'foo'}])
+ dataset = factories.Dataset(
+ extras=[{"key": "testkey", "value": "foo"}]
+ )
app = self._get_test_app()
- env, response = _get_package_edit_page(app, dataset['name'])
- form = response.forms['dataset-edit']
- form['extras__0__value'] = u'bar'
+ env, response = _get_package_edit_page(app, dataset["name"])
+ form = response.forms["dataset-edit"]
+ form["extras__0__value"] = u"bar"
- response = submit_and_follow(app, form, env, 'save')
+ response = submit_and_follow(app, form, env, "save")
# just check it has finished the edit, rather than being sent on to the
# resource create/edit form.
- assert_equal(response.request.path, '/dataset/%s' % dataset['name'])
+ assert response.request.path == "/dataset/%s" % dataset["name"]
- pkg = model.Package.by_name(dataset['name'])
- assert_equal(pkg.extras['testkey'], u'bar')
+ pkg = model.Package.by_name(dataset["name"])
+ assert pkg.extras["testkey"] == u"bar"
diff --git a/ckanext/example_idatasetform/tests/test_example_idatasetform.py b/ckanext/example_idatasetform/tests/test_example_idatasetform.py
index 45038a25506..67573da0671 100644
--- a/ckanext/example_idatasetform/tests/test_example_idatasetform.py
+++ b/ckanext/example_idatasetform/tests/test_example_idatasetform.py
@@ -1,7 +1,6 @@
# encoding: utf-8
-import nose.tools as nt
-
+import pytest
from ckan.common import config
from ckan.lib.helpers import url_for
@@ -14,8 +13,8 @@
class ExampleIDatasetFormPluginBase(helpers.FunctionalTestBase):
- '''Version 1, 2 and 3 of the plugin are basically the same, so this class
- provides the tests that all three versions of the plugins will run'''
+ """Version 1, 2 and 3 of the plugin are basically the same, so this class
+ provides the tests that all three versions of the plugins will run"""
def teardown(self):
model.repo.rebuild_db()
@@ -27,122 +26,145 @@ def teardown_class(cls):
super(ExampleIDatasetFormPluginBase, cls).teardown_class()
def test_package_create(self):
- result = helpers.call_action('package_create', name='test_package',
- custom_text='this is my custom text')
- nt.assert_equals('this is my custom text', result['custom_text'])
+ result = helpers.call_action(
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ )
+ assert "this is my custom text" == result["custom_text"]
def test_package_update(self):
- helpers.call_action('package_create', name='test_package',
- custom_text='this is my custom text')
- result = helpers.call_action('package_update', name='test_package',
- custom_text='this is my updated text')
- nt.assert_equals('this is my updated text', result['custom_text'])
+ helpers.call_action(
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ )
+ result = helpers.call_action(
+ "package_update",
+ name="test_package",
+ custom_text="this is my updated text",
+ )
+ assert "this is my updated text" == result["custom_text"]
def test_package_show(self):
- helpers.call_action('package_create', name='test_package',
- custom_text='this is my custom text')
- result = helpers.call_action('package_show', name_or_id='test_package')
- nt.assert_equals('this is my custom text', result['custom_text'])
+ helpers.call_action(
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ )
+ result = helpers.call_action("package_show", name_or_id="test_package")
+ assert "this is my custom text" == result["custom_text"]
class TestVersion1(ExampleIDatasetFormPluginBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_idatasetform_v1'
+ cfg["ckan.plugins"] = "example_idatasetform_v1"
@classmethod
def teardown_class(cls):
- plugins.unload('example_idatasetform_v1')
+ plugins.unload("example_idatasetform_v1")
super(TestVersion1, cls).teardown_class()
class TestVersion2(ExampleIDatasetFormPluginBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_idatasetform_v2'
+ cfg["ckan.plugins"] = "example_idatasetform_v2"
@classmethod
def teardown_class(cls):
- plugins.unload('example_idatasetform_v2')
+ plugins.unload("example_idatasetform_v2")
super(TestVersion2, cls).teardown_class()
class TestVersion3(ExampleIDatasetFormPluginBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_idatasetform_v3'
+ cfg["ckan.plugins"] = "example_idatasetform_v3"
@classmethod
def teardown_class(cls):
- plugins.unload('example_idatasetform_v3')
+ plugins.unload("example_idatasetform_v3")
super(TestVersion3, cls).teardown_class()
class TestVersion5(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_idatasetform_v5'
+ cfg["ckan.plugins"] = "example_idatasetform_v5"
def teardown(self):
- if plugins.plugin_loaded('example_idatasetform_v5'):
- plugins.unload('example_idatasetform_v5')
+ if plugins.plugin_loaded("example_idatasetform_v5"):
+ plugins.unload("example_idatasetform_v5")
def test_custom_package_type_urls(self):
- nt.eq_(url_for('fancy_type.search'), '/fancy_type/')
- nt.eq_(url_for('fancy_type.new'), '/fancy_type/new')
- nt.eq_(url_for('fancy_type.read', id='check'), '/fancy_type/check')
- nt.eq_(
- url_for('fancy_type.edit', id='check'), '/fancy_type/edit/check')
+ assert url_for("fancy_type.search") == "/fancy_type/"
+ assert url_for("fancy_type.new") == "/fancy_type/new"
+ assert url_for("fancy_type.read", id="check") == "/fancy_type/check"
+ assert (
+ url_for("fancy_type.edit", id="check") == "/fancy_type/edit/check"
+ )
class TestIDatasetFormPluginVersion4(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_idatasetform_v4'
+ cfg["ckan.plugins"] = "example_idatasetform_v4"
def teardown(self):
model.repo.rebuild_db()
@classmethod
def teardown_class(cls):
- if plugins.plugin_loaded('example_idatasetform_v4'):
- plugins.unload('example_idatasetform_v4')
+ if plugins.plugin_loaded("example_idatasetform_v4"):
+ plugins.unload("example_idatasetform_v4")
ckan.lib.search.clear_all()
super(TestIDatasetFormPluginVersion4, cls).teardown_class()
def test_package_create(self):
idf.plugin_v4.create_country_codes()
- result = helpers.call_action('package_create', name='test_package',
- custom_text='this is my custom text',
- country_code='uk')
- nt.assert_equals('this is my custom text', result['custom_text'])
- nt.assert_equals([u'uk'], result['country_code'])
+ result = helpers.call_action(
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ country_code="uk",
+ )
+ assert "this is my custom text" == result["custom_text"]
+ assert [u"uk"] == result["country_code"]
def test_package_create_wrong_country_code(self):
idf.plugin_v4.create_country_codes()
- nt.assert_raises(plugins.toolkit.ValidationError,
- helpers.call_action,
- 'package_create',
- name='test_package',
- custom_text='this is my custom text',
- country_code='notcode')
+ with pytest.raises(plugins.toolkit.ValidationError):
+ helpers.call_action(
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ country_code="notcode",
+ )
def test_package_update(self):
idf.plugin_v4.create_country_codes()
- helpers.call_action('package_create', name='test_package',
- custom_text='this is my custom text',
- country_code='uk')
- result = helpers.call_action('package_update', name='test_package',
- custom_text='this is my updated text',
- country_code='ie')
- nt.assert_equals('this is my updated text', result['custom_text'])
- nt.assert_equals([u'ie'], result['country_code'])
+ helpers.call_action(
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ country_code="uk",
+ )
+ result = helpers.call_action(
+ "package_update",
+ name="test_package",
+ custom_text="this is my updated text",
+ country_code="ie",
+ )
+ assert "this is my updated text" == result["custom_text"]
+ assert [u"ie"] == result["country_code"]
class TestIDatasetFormPlugin(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_idatasetform'
+ cfg["ckan.plugins"] = "example_idatasetform"
def teardown(self):
model.repo.rebuild_db()
@@ -150,61 +172,85 @@ def teardown(self):
@classmethod
def teardown_class(cls):
- plugins.unload('example_idatasetform')
+ plugins.unload("example_idatasetform")
ckan.lib.search.clear_all()
super(TestIDatasetFormPlugin, cls).teardown_class()
def test_package_create(self):
idf.plugin.create_country_codes()
result = helpers.call_action(
- 'package_create', name='test_package',
- custom_text='this is my custom text', country_code='uk',
- resources=[{
- 'url': 'http://test.com/',
- 'custom_resource_text': 'my custom resource',
- }])
- nt.assert_equals('my custom resource',
- result['resources'][0]['custom_resource_text'])
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ country_code="uk",
+ resources=[
+ {
+ "url": "http://test.com/",
+ "custom_resource_text": "my custom resource",
+ }
+ ],
+ )
+ assert (
+ "my custom resource"
+ == result["resources"][0]["custom_resource_text"]
+ )
def test_package_update(self):
idf.plugin.create_country_codes()
helpers.call_action(
- 'package_create', name='test_package',
- custom_text='this is my custom text', country_code='uk',
- resources=[{
- 'url': 'http://test.com/',
- 'custom_resource_text': 'my custom resource',
- }])
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ country_code="uk",
+ resources=[
+ {
+ "url": "http://test.com/",
+ "custom_resource_text": "my custom resource",
+ }
+ ],
+ )
result = helpers.call_action(
- 'package_update',
- name='test_package',
- custom_text='this is my updated text',
- country_code='ie',
- resources=[{
- 'url': 'http://test.com/',
- 'custom_resource_text': 'updated custom resource',
- }]
+ "package_update",
+ name="test_package",
+ custom_text="this is my updated text",
+ country_code="ie",
+ resources=[
+ {
+ "url": "http://test.com/",
+ "custom_resource_text": "updated custom resource",
+ }
+ ],
+ )
+ assert "this is my updated text" == result["custom_text"]
+ assert [u"ie"] == result["country_code"]
+ assert (
+ "updated custom resource"
+ == result["resources"][0]["custom_resource_text"]
)
- nt.assert_equals('this is my updated text', result['custom_text'])
- nt.assert_equals([u'ie'], result['country_code'])
- nt.assert_equals('updated custom resource',
- result['resources'][0]['custom_resource_text'])
def test_package_show(self):
idf.plugin.create_country_codes()
helpers.call_action(
- 'package_create', name='test_package',
- custom_text='this is my custom text', country_code='uk',
- resources=[{
- 'url': 'http://test.com/',
- 'custom_resource_text': 'my custom resource',
- }]
+ "package_create",
+ name="test_package",
+ custom_text="this is my custom text",
+ country_code="uk",
+ resources=[
+ {
+ "url": "http://test.com/",
+ "custom_resource_text": "my custom resource",
+ }
+ ],
+ )
+ result = helpers.call_action("package_show", name_or_id="test_package")
+ assert (
+ "my custom resource"
+ == result["resources"][0]["custom_resource_text"]
+ )
+ assert (
+ "my custom resource"
+ == result["resources"][0]["custom_resource_text"]
)
- result = helpers.call_action('package_show', name_or_id='test_package')
- nt.assert_equals('my custom resource',
- result['resources'][0]['custom_resource_text'])
- nt.assert_equals('my custom resource',
- result['resources'][0]['custom_resource_text'])
class TestCustomSearch(object):
@@ -215,7 +261,7 @@ class TestCustomSearch(object):
@classmethod
def setup_class(cls):
cls.original_config = config.copy()
- config['ckan.plugins'] = 'example_idatasetform'
+ config["ckan.plugins"] = "example_idatasetform"
def teardown(self):
model.repo.rebuild_db()
@@ -223,8 +269,8 @@ def teardown(self):
@classmethod
def teardown_class(cls):
- if plugins.plugin_loaded('example_idatasetform'):
- plugins.unload('example_idatasetform')
+ if plugins.plugin_loaded("example_idatasetform"):
+ plugins.unload("example_idatasetform")
helpers.reset_db()
ckan.lib.search.clear_all()
@@ -234,27 +280,29 @@ def teardown_class(cls):
def test_custom_search(self):
app = helpers._get_test_app()
- helpers.call_action('package_create', name='test_package_a',
- custom_text='z')
- helpers.call_action('package_create', name='test_package_b',
- custom_text='y')
+ helpers.call_action(
+ "package_create", name="test_package_a", custom_text="z"
+ )
+ helpers.call_action(
+ "package_create", name="test_package_b", custom_text="y"
+ )
- response = app.get('/dataset/')
+ response = app.get("/dataset/")
# change the sort by form to our custom_text ascending
- response.forms[1].fields['sort'][0].value = 'custom_text asc'
+ response.forms[1].fields["sort"][0].value = "custom_text asc"
response = response.forms[1].submit()
# check that package_b appears before package a (y < z)
- a = response.body.index('test_package_a')
- b = response.body.index('test_package_b')
- nt.assert_true(b < a)
+ a = response.body.index("test_package_a")
+ b = response.body.index("test_package_b")
+ assert b < a
- response = app.get('/dataset/')
- response.forms[1].fields['sort'][0].value = 'custom_text desc'
+ response = app.get("/dataset/")
+ response.forms[1].fields["sort"][0].value = "custom_text desc"
# check that package_a appears before package b (z is first in
# descending order)
response = response.forms[1].submit()
- a = response.body.index('test_package_a')
- b = response.body.index('test_package_b')
- nt.assert_true(a < b)
+ a = response.body.index("test_package_a")
+ b = response.body.index("test_package_b")
+ assert a < b
diff --git a/ckanext/example_igroupform/tests/test_controllers.py b/ckanext/example_igroupform/tests/test_controllers.py
index 1496017d9a9..b12b67ca1ac 100644
--- a/ckanext/example_igroupform/tests/test_controllers.py
+++ b/ckanext/example_igroupform/tests/test_controllers.py
@@ -1,6 +1,5 @@
# encoding: utf-8
-from nose.tools import assert_equal, assert_in
from ckan.lib.helpers import url_for
import ckan.plugins as plugins
@@ -11,23 +10,21 @@
webtest_submit = helpers.webtest_submit
submit_and_follow = helpers.submit_and_follow
-custom_group_type = u'grup'
-group_type = u'group'
+custom_group_type = u"grup"
+group_type = u"group"
def _get_group_new_page(app, group_type):
user = factories.User()
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- response = app.get(
- url_for('%s.new' % group_type),
- extra_environ=env, )
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ response = app.get(url_for("%s.new" % group_type), extra_environ=env,)
return env, response
class TestGroupController(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_igroupform'
+ cfg["ckan.plugins"] = "example_igroupform"
@classmethod
def setup_class(cls):
@@ -36,17 +33,17 @@ def setup_class(cls):
@classmethod
def teardown_class(cls):
- if plugins.plugin_loaded('example_igroupform'):
- plugins.unload('example_igroupform')
+ if plugins.plugin_loaded("example_igroupform"):
+ plugins.unload("example_igroupform")
super(TestGroupController, cls).teardown_class()
def test_about(self):
app = self._get_test_app()
user = factories.User()
group = factories.Group(user=user, type=custom_group_type)
- group_name = group['name']
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.about' % custom_group_type, id=group_name)
+ group_name = group["name"]
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.about" % custom_group_type, id=group_name)
response = app.get(url=url, extra_environ=env)
response.mustcontain(group_name)
@@ -54,13 +51,13 @@ def test_bulk_process(self):
app = self._get_test_app()
user = factories.User()
group = factories.Group(user=user, type=custom_group_type)
- group_name = group['name']
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.bulk_process' % custom_group_type, id=group_name)
+ group_name = group["name"]
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.bulk_process" % custom_group_type, id=group_name)
try:
response = app.get(url=url, extra_environ=env)
except Exception as e:
- assert (e.args == ('Must be an organization', ))
+ assert e.args == ("Must be an organization",)
else:
raise Exception("Response should have raised an exception")
@@ -68,29 +65,36 @@ def test_delete(self):
app = self._get_test_app()
user = factories.User()
group = factories.Group(user=user, type=custom_group_type)
- group_name = group['name']
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.delete' % custom_group_type, id=group_name)
+ group_name = group["name"]
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.delete" % custom_group_type, id=group_name)
response = app.get(url=url, extra_environ=env)
def test_custom_group_form_slug(self):
app = self._get_test_app()
env, response = _get_group_new_page(app, custom_group_type)
- assert '/{}/'.format(
- custom_group_type) in response
- assert 'placeholder="my-{}"'.format(
- custom_group_type) in response
- assert 'data-module-prefix="test.ckan.net/{}/"'.format(
- custom_group_type) in response
- assert 'data-module-placeholder="<{}>"'.format(
- custom_group_type) in response
+ assert (
+ '/{}/'.format(
+ custom_group_type
+ )
+ in response
+ )
+ assert 'placeholder="my-{}"'.format(custom_group_type) in response
+ assert (
+ 'data-module-prefix="test.ckan.net/{}/"'.format(custom_group_type)
+ in response
+ )
+ assert (
+ 'data-module-placeholder="<{}>"'.format(custom_group_type)
+ in response
+ )
class TestOrganizationController(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_igroupform_organization'
+ cfg["ckan.plugins"] = "example_igroupform_organization"
@classmethod
def setup_class(cls):
@@ -99,17 +103,17 @@ def setup_class(cls):
@classmethod
def teardown_class(cls):
- if plugins.plugin_loaded('example_igroupform_organization'):
- plugins.unload('example_igroupform_organization')
+ if plugins.plugin_loaded("example_igroupform_organization"):
+ plugins.unload("example_igroupform_organization")
super(TestOrganizationController, cls).teardown_class()
def test_about(self):
app = self._get_test_app()
user = factories.User()
group = factories.Organization(user=user, type=custom_group_type)
- group_name = group['name']
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.about' % custom_group_type, id=group_name)
+ group_name = group["name"]
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.about" % custom_group_type, id=group_name)
response = app.get(url=url, extra_environ=env)
response.mustcontain(group_name)
@@ -117,38 +121,45 @@ def test_bulk_process(self):
app = self._get_test_app()
user = factories.User()
group = factories.Organization(user=user, type=custom_group_type)
- group_name = group['name']
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.bulk_process' % custom_group_type, id=group_name)
+ group_name = group["name"]
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.bulk_process" % custom_group_type, id=group_name)
response = app.get(url=url, extra_environ=env)
def test_delete(self):
app = self._get_test_app()
user = factories.User()
group = factories.Organization(user=user, type=custom_group_type)
- group_name = group['name']
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.delete' % custom_group_type, id=group_name)
+ group_name = group["name"]
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.delete" % custom_group_type, id=group_name)
response = app.get(url=url, extra_environ=env)
def test_custom_org_form_slug(self):
app = self._get_test_app()
env, response = _get_group_new_page(app, custom_group_type)
- assert '/{}/'.format(
- custom_group_type) in response
- assert 'placeholder="my-{}"'.format(
- custom_group_type) in response
- assert 'data-module-prefix="test.ckan.net/{}/"'.format(
- custom_group_type) in response
- assert 'data-module-placeholder="<{}>"'.format(
- custom_group_type) in response
+ assert (
+ '/{}/'.format(
+ custom_group_type
+ )
+ in response
+ )
+ assert 'placeholder="my-{}"'.format(custom_group_type) in response
+ assert (
+ 'data-module-prefix="test.ckan.net/{}/"'.format(custom_group_type)
+ in response
+ )
+ assert (
+ 'data-module-placeholder="<{}>"'.format(custom_group_type)
+ in response
+ )
class TestGroupControllerNew(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_igroupform'
+ cfg["ckan.plugins"] = "example_igroupform"
@classmethod
def setup_class(cls):
@@ -157,41 +168,40 @@ def setup_class(cls):
@classmethod
def teardown_class(cls):
- if plugins.plugin_loaded('example_igroupform'):
- plugins.unload('example_igroupform')
+ if plugins.plugin_loaded("example_igroupform"):
+ plugins.unload("example_igroupform")
super(TestGroupControllerNew, cls).teardown_class()
def test_save(self):
app = self._get_test_app()
env, response = _get_group_new_page(app, custom_group_type)
- form = response.forms['group-edit']
- form['name'] = u'saved'
+ form = response.forms["group-edit"]
+ form["name"] = u"saved"
- response = submit_and_follow(app, form, env, 'save')
+ response = submit_and_follow(app, form, env, "save")
# check correct redirect
- assert_equal(response.request.url,
- 'http://test.ckan.net/%s/saved' % custom_group_type)
+ assert (
+ response.request.url
+ == "http://test.ckan.net/%s/saved" % custom_group_type
+ )
# check saved ok
- group = model.Group.by_name(u'saved')
- assert_equal(group.title, u'')
- assert_equal(group.type, custom_group_type)
- assert_equal(group.state, 'active')
+ group = model.Group.by_name(u"saved")
+ assert group.title == u""
+ assert group.type == custom_group_type
+ assert group.state == "active"
def test_custom_group_form(self):
- '''Our custom group form is being used for new groups.'''
+ """Our custom group form is being used for new groups."""
app = self._get_test_app()
env, response = _get_group_new_page(app, custom_group_type)
- assert_in(
- 'My Custom Group Form!',
- response,
- msg="Custom group form not being used.")
+ assert "My Custom Group Form!" in response
class TestGroupControllerNew_DefaultGroupType(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_igroupform_default_group_type'
+ cfg["ckan.plugins"] = "example_igroupform_default_group_type"
@classmethod
def setup_class(cls):
@@ -200,44 +210,43 @@ def setup_class(cls):
@classmethod
def teardown_class(cls):
- if plugins.plugin_loaded('example_igroupform_default_group_type'):
- plugins.unload('example_igroupform_default_group_type')
+ if plugins.plugin_loaded("example_igroupform_default_group_type"):
+ plugins.unload("example_igroupform_default_group_type")
super(TestGroupControllerNew_DefaultGroupType, cls).teardown_class()
def test_save(self):
app = self._get_test_app()
env, response = _get_group_new_page(app, group_type)
- form = response.forms['group-edit']
- form['name'] = u'saved'
+ form = response.forms["group-edit"]
+ form["name"] = u"saved"
- response = submit_and_follow(app, form, env, 'save')
+ response = submit_and_follow(app, form, env, "save")
# check correct redirect
- assert_equal(response.request.url,
- 'http://test.ckan.net/%s/saved' % group_type)
+ assert (
+ response.request.url
+ == "http://test.ckan.net/%s/saved" % group_type
+ )
# check saved ok
- group = model.Group.by_name(u'saved')
- assert_equal(group.title, u'')
- assert_equal(group.type, group_type)
- assert_equal(group.state, 'active')
+ group = model.Group.by_name(u"saved")
+ assert group.title == u""
+ assert group.type == group_type
+ assert group.state == "active"
def test_custom_group_form(self):
- '''Our custom group form is being used for new groups.'''
+ """Our custom group form is being used for new groups."""
app = self._get_test_app()
env, response = _get_group_new_page(app, group_type)
- assert_in(
- 'My Custom Group Form!',
- response,
- msg="Custom group form not being used.")
+ assert "My Custom Group Form!" in response
def _get_group_edit_page(app, group_type, group_name=None):
user = factories.User()
if group_name is None:
group = factories.Group(user=user, type=group_type)
- group_name = group['name']
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.edit' % group_type, id=group_name)
+ group_name = group["name"]
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.edit" % group_type, id=group_name)
response = app.get(url=url, extra_environ=env)
return env, response, group_name
@@ -245,7 +254,7 @@ def _get_group_edit_page(app, group_type, group_name=None):
class TestGroupControllerEdit(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_igroupform'
+ cfg["ckan.plugins"] = "example_igroupform"
@classmethod
def setup_class(cls):
@@ -254,44 +263,43 @@ def setup_class(cls):
@classmethod
def teardown_class(cls):
- if plugins.plugin_loaded('example_igroupform'):
- plugins.unload('example_igroupform')
+ if plugins.plugin_loaded("example_igroupform"):
+ plugins.unload("example_igroupform")
super(TestGroupControllerEdit, cls).teardown_class()
def test_group_doesnt_exist(self):
app = self._get_test_app()
user = factories.User()
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.edit' % custom_group_type, id='doesnt_exist')
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.edit" % custom_group_type, id="doesnt_exist")
app.get(url=url, extra_environ=env, status=404)
def test_save(self):
app = self._get_test_app()
- env, response, group_name = \
- _get_group_edit_page(app, custom_group_type)
- form = response.forms['group-edit']
+ env, response, group_name = _get_group_edit_page(
+ app, custom_group_type
+ )
+ form = response.forms["group-edit"]
- response = submit_and_follow(app, form, env, 'save')
+ response = submit_and_follow(app, form, env, "save")
group = model.Group.by_name(group_name)
- assert_equal(group.state, 'active')
- assert_equal(group.type, custom_group_type)
+ assert group.state == "active"
+ assert group.type == custom_group_type
def test_custom_group_form(self):
- '''Our custom group form is being used to edit groups.'''
+ """Our custom group form is being used to edit groups."""
app = self._get_test_app()
- env, response, group_name = \
- _get_group_edit_page(app, custom_group_type)
+ env, response, group_name = _get_group_edit_page(
+ app, custom_group_type
+ )
- assert_in(
- 'My Custom Group Form!',
- response,
- msg="Custom group form not being used.")
+ assert "My Custom Group Form!" in response
class TestGroupControllerEdit_DefaultGroupType(helpers.FunctionalTestBase):
@classmethod
def _apply_config_changes(cls, cfg):
- cfg['ckan.plugins'] = 'example_igroupform_default_group_type'
+ cfg["ckan.plugins"] = "example_igroupform_default_group_type"
@classmethod
def setup_class(cls):
@@ -300,33 +308,30 @@ def setup_class(cls):
@classmethod
def teardown_class(cls):
- if plugins.plugin_loaded('example_igroupform_default_group_type'):
- plugins.unload('example_igroupform_default_group_type')
+ if plugins.plugin_loaded("example_igroupform_default_group_type"):
+ plugins.unload("example_igroupform_default_group_type")
super(TestGroupControllerEdit_DefaultGroupType, cls).teardown_class()
def test_group_doesnt_exist(self):
app = self._get_test_app()
user = factories.User()
- env = {'REMOTE_USER': user['name'].encode('ascii')}
- url = url_for('%s.edit' % group_type, id='doesnt_exist')
+ env = {"REMOTE_USER": user["name"].encode("ascii")}
+ url = url_for("%s.edit" % group_type, id="doesnt_exist")
app.get(url=url, extra_environ=env, status=404)
def test_save(self):
app = self._get_test_app()
env, response, group_name = _get_group_edit_page(app, group_type)
- form = response.forms['group-edit']
+ form = response.forms["group-edit"]
- response = submit_and_follow(app, form, env, 'save')
+ response = submit_and_follow(app, form, env, "save")
group = model.Group.by_name(group_name)
- assert_equal(group.state, 'active')
- assert_equal(group.type, group_type)
+ assert group.state == "active"
+ assert group.type == group_type
def test_custom_group_form(self):
- '''Our custom group form is being used to edit groups.'''
+ """Our custom group form is being used to edit groups."""
app = self._get_test_app()
env, response, group_name = _get_group_edit_page(app, group_type)
- assert_in(
- 'My Custom Group Form!',
- response,
- msg="Custom group form not being used.")
+ assert "My Custom Group Form!" in response
diff --git a/ckanext/example_ipermissionlabels/tests/test_example_ipermissionlabels.py b/ckanext/example_ipermissionlabels/tests/test_example_ipermissionlabels.py
index 134b314a617..f4653b055fc 100644
--- a/ckanext/example_ipermissionlabels/tests/test_example_ipermissionlabels.py
+++ b/ckanext/example_ipermissionlabels/tests/test_example_ipermissionlabels.py
@@ -1,9 +1,10 @@
# encoding: utf-8
-'''
+"""
Tests for the ckanext.example_ipermissionlabels extension
-'''
-from nose.tools import assert_raises, assert_equal
+"""
+
+import pytest
import ckan.plugins
from ckan.plugins.toolkit import get_action, NotAuthorized
@@ -17,11 +18,11 @@ class TestExampleIPermissionLabels(FunctionalTestBase):
def setup_class(cls):
# Test code should use CKAN's plugins.load() function to load plugins
# to be tested.
- ckan.plugins.load(u'example_ipermissionlabels')
+ ckan.plugins.load(u"example_ipermissionlabels")
@classmethod
def teardown_class(cls):
- ckan.plugins.unload(u'example_ipermissionlabels')
+ ckan.plugins.unload(u"example_ipermissionlabels")
def test_normal_dataset_permissions_are_normal(self):
user = factories.User()
@@ -29,84 +30,100 @@ def test_normal_dataset_permissions_are_normal(self):
user3 = factories.User()
org = factories.Organization(user=user)
org2 = factories.Organization(
- user=user2,
- users=[{u'name': user3['id'], u'capacity': u'member'}])
+ user=user2, users=[{u"name": user3["id"], u"capacity": u"member"}]
+ )
dataset = factories.Dataset(
- name=u'd1', user=user, private=True, owner_org=org['id'])
+ name=u"d1", user=user, private=True, owner_org=org["id"]
+ )
dataset2 = factories.Dataset(
- name=u'd2', user=user2, private=True, owner_org=org2['id'])
+ name=u"d2", user=user2, private=True, owner_org=org2["id"]
+ )
- results = get_action(u'package_search')(
- {u'user': user['name']}, {u'include_private': True})['results']
- names = [r['name'] for r in results]
- assert_equal(names, [u'd1'])
+ results = get_action(u"package_search")(
+ {u"user": user["name"]}, {u"include_private": True}
+ )["results"]
+ names = [r["name"] for r in results]
+ assert names == [u"d1"]
- results = get_action(u'package_search')(
- {u'user': user3['name']}, {u'include_private': True})['results']
- names = [r['name'] for r in results]
- assert_equal(names, [u'd2'])
+ results = get_action(u"package_search")(
+ {u"user": user3["name"]}, {u"include_private": True}
+ )["results"]
+ names = [r["name"] for r in results]
+ assert names == [u"d2"]
def test_proposed_overrides_public(self):
user = factories.User()
- dataset = factories.Dataset(
- name=u'd1', notes=u'Proposed:', user=user)
+ dataset = factories.Dataset(name=u"d1", notes=u"Proposed:", user=user)
- results = get_action(u'package_search')(
- {u'user': u''}, {u'include_private': True})['results']
- names = [r['name'] for r in results]
- assert_equal(names, [])
+ results = get_action(u"package_search")(
+ {u"user": u""}, {u"include_private": True}
+ )["results"]
+ names = [r["name"] for r in results]
+ assert names == []
- assert_raises(
- NotAuthorized, call_auth, u'package_show',
- {u'user': u'', u'model': model}, id=u'd1')
+ with pytest.raises(NotAuthorized):
+ call_auth(
+ u"package_show", {u"user": u"", u"model": model}, id=u"d1"
+ )
def test_proposed_dataset_visible_to_creator(self):
user = factories.User()
- dataset = factories.Dataset(
- name=u'd1', notes=u'Proposed:', user=user)
+ dataset = factories.Dataset(name=u"d1", notes=u"Proposed:", user=user)
- results = get_action(u'package_search')(
- {u'user': user['name']}, {u'include_private': True})['results']
- names = [r['name'] for r in results]
- assert_equal(names, [u'd1'])
+ results = get_action(u"package_search")(
+ {u"user": user["name"]}, {u"include_private": True}
+ )["results"]
+ names = [r["name"] for r in results]
+ assert names == [u"d1"]
- ret = call_auth(u'package_show',
- {u'user': user['name'], u'model': model}, id=u'd1')
+ ret = call_auth(
+ u"package_show", {u"user": user["name"], u"model": model}, id=u"d1"
+ )
assert ret
def test_proposed_dataset_visible_to_org_admin(self):
user = factories.User()
user2 = factories.User()
org = factories.Organization(
- user=user2,
- users=[{u'name': user['id'], u'capacity': u'editor'}])
+ user=user2, users=[{u"name": user["id"], u"capacity": u"editor"}]
+ )
dataset = factories.Dataset(
- name=u'd1', notes=u'Proposed:', user=user, owner_org=org['id'])
-
- results = get_action(u'package_search')(
- {u'user': user2[u'name']}, {u'include_private': True})['results']
- names = [r['name'] for r in results]
- assert_equal(names, [u'd1'])
-
- ret = call_auth(u'package_show',
- {u'user': user2['name'], u'model': model}, id=u'd1')
+ name=u"d1", notes=u"Proposed:", user=user, owner_org=org["id"]
+ )
+
+ results = get_action(u"package_search")(
+ {u"user": user2[u"name"]}, {u"include_private": True}
+ )["results"]
+ names = [r["name"] for r in results]
+ assert names == [u"d1"]
+
+ ret = call_auth(
+ u"package_show",
+ {u"user": user2["name"], u"model": model},
+ id=u"d1",
+ )
assert ret
def test_proposed_dataset_invisible_to_another_editor(self):
user = factories.User()
user2 = factories.User()
org = factories.Organization(
- user=user2,
- users=[{u'name': user['id'], u'capacity': u'editor'}])
+ user=user2, users=[{u"name": user["id"], u"capacity": u"editor"}]
+ )
dataset = factories.Dataset(
- name=u'd1', notes=u'Proposed:', user=user2, owner_org=org['id'])
-
- results = get_action(u'package_search')(
- {u'user': user['name']}, {u'include_private': True})['results']
- names = [r['name'] for r in results]
- assert_equal(names, [])
-
- assert_raises(
- NotAuthorized, call_auth, u'package_show',
- {u'user': user['name'], u'model': model}, id=u'd1')
+ name=u"d1", notes=u"Proposed:", user=user2, owner_org=org["id"]
+ )
+
+ results = get_action(u"package_search")(
+ {u"user": user["name"]}, {u"include_private": True}
+ )["results"]
+ names = [r["name"] for r in results]
+ assert names == []
+
+ with pytest.raises(NotAuthorized):
+ call_auth(
+ u"package_show",
+ {u"user": user["name"], u"model": model},
+ id=u"d1",
+ )
diff --git a/ckanext/example_ivalidators/tests/test_ivalidators.py b/ckanext/example_ivalidators/tests/test_ivalidators.py
index 3d41161288a..51d5d035623 100644
--- a/ckanext/example_ivalidators/tests/test_ivalidators.py
+++ b/ckanext/example_ivalidators/tests/test_ivalidators.py
@@ -1,6 +1,6 @@
# encoding: utf-8
-from nose.tools import assert_equals, assert_raises
+import pytest
from ckan.common import config
from ckan.plugins.toolkit import get_validator, Invalid
@@ -10,30 +10,32 @@
class TestIValidators(object):
@classmethod
def setup_class(cls):
- plugins.load('example_ivalidators')
+ plugins.load("example_ivalidators")
@classmethod
def teardown_class(cls):
- plugins.unload('example_ivalidators')
+ plugins.unload("example_ivalidators")
def test_custom_validator_validates(self):
- v = get_validator('equals_fortytwo')
- assert_raises(Invalid, v, 41)
+ v = get_validator("equals_fortytwo")
+ with pytest.raises(Invalid):
+ v(41)
def test_custom_validator_passes(self):
- v = get_validator('equals_fortytwo')
- assert_equals(v(42), 42)
+ v = get_validator("equals_fortytwo")
+ assert v(42) == 42
def test_custom_converter_converts(self):
- c = get_validator('negate')
- assert_equals(c(19), -19)
+ c = get_validator("negate")
+ assert c(19) == -19
def test_overridden_validator(self):
- v = get_validator('unicode_only')
- assert_equals(u'Hola cómo estás', v(b'Hola c\xf3mo est\xe1s'))
+ v = get_validator("unicode_only")
+ assert u"Hola cómo estás" == v(b"Hola c\xf3mo est\xe1s")
class TestNoIValidators(object):
def test_no_overridden_validator(self):
- v = get_validator('unicode_only')
- assert_raises(Invalid, v, b'Hola c\xf3mo est\xe1s')
+ v = get_validator("unicode_only")
+ with pytest.raises(Invalid):
+ v(b"Hola c\xf3mo est\xe1s")
diff --git a/ckanext/example_theme_docs/custom_emails/tests.py b/ckanext/example_theme_docs/custom_emails/tests.py
index 66a095e4590..7ead771a407 100644
--- a/ckanext/example_theme_docs/custom_emails/tests.py
+++ b/ckanext/example_theme_docs/custom_emails/tests.py
@@ -1,6 +1,8 @@
# encoding: utf-8
import os
+import pytest
+
from ckan import plugins
import ckan.model as model
import ckan.lib.mailer as mailer
@@ -11,107 +13,99 @@
from ckan.tests.lib.test_mailer import MailerBase
import ckan.tests.helpers as helpers
-from nose.tools import assert_equal, assert_in
-
class TestExampleCustomEmailsPlugin(MailerBase):
@classmethod
def setup_class(cls):
super(TestExampleCustomEmailsPlugin, cls).setup_class()
- if not plugins.plugin_loaded('example_theme_custom_emails'):
- plugins.load('example_theme_custom_emails')
+ if not plugins.plugin_loaded("example_theme_custom_emails"):
+ plugins.load("example_theme_custom_emails")
@classmethod
def teardown_class(cls):
super(TestExampleCustomEmailsPlugin, cls).teardown_class()
- plugins.unload('example_theme_custom_emails')
+ plugins.unload("example_theme_custom_emails")
def _get_template_content(self, name):
templates_path = os.path.join(
- os.path.dirname(os.path.abspath(__file__)),
- 'templates', 'emails')
- with open(os.path.join(templates_path, name), 'r') as f:
+ os.path.dirname(os.path.abspath(__file__)), "templates", "emails"
+ )
+ with open(os.path.join(templates_path, name), "r") as f:
return f.read()
def test_reset_password_custom_subject(self):
user = factories.User()
- user_obj = model.User.by_name(user['name'])
+ user_obj = model.User.by_name(user["name"])
mailer.send_reset_link(user_obj)
# check it went to the mock smtp server
msgs = self.get_smtp_messages()
- assert_equal(len(msgs), 1)
+ assert len(msgs) == 1
msg = msgs[0]
- extra_vars = {
- 'site_title': config.get('ckan.site_title')
- }
- expected = render_jinja2('emails/reset_password_subject.txt',
- extra_vars)
- expected = expected.split('\n')[0]
+ extra_vars = {"site_title": config.get("ckan.site_title")}
+ expected = render_jinja2(
+ "emails/reset_password_subject.txt", extra_vars
+ )
+ expected = expected.split("\n")[0]
subject = self.get_email_subject(msg[3])
- assert_equal(expected, subject)
- assert_in('**test**', subject)
+ assert expected == subject
+ assert "**test**" in subject
def test_reset_password_custom_body(self):
user = factories.User()
- user_obj = model.User.by_name(user['name'])
+ user_obj = model.User.by_name(user["name"])
mailer.send_reset_link(user_obj)
# check it went to the mock smtp server
msgs = self.get_smtp_messages()
- assert_equal(len(msgs), 1)
+ assert len(msgs) == 1
msg = msgs[0]
- extra_vars = {
- 'reset_link': mailer.get_reset_link(user_obj)
- }
- expected = render_jinja2('emails/reset_password.txt',
- extra_vars)
+ extra_vars = {"reset_link": mailer.get_reset_link(user_obj)}
+ expected = render_jinja2("emails/reset_password.txt", extra_vars)
body = self.get_email_body(msg[3])
- assert_equal(expected, body)
- assert_in('**test**', body)
+ assert expected == body
+ assert "**test**" in body
def test_invite_user_custom_subject(self):
user = factories.User()
- user_obj = model.User.by_name(user['name'])
+ user_obj = model.User.by_name(user["name"])
mailer.send_invite(user_obj)
# check it went to the mock smtp server
msgs = self.get_smtp_messages()
- assert_equal(len(msgs), 1)
+ assert len(msgs) == 1
msg = msgs[0]
extra_vars = {
- 'site_title': config.get('ckan.site_title'),
+ "site_title": config.get("ckan.site_title"),
}
- expected = render_jinja2('emails/invite_user_subject.txt',
- extra_vars)
- expected = expected.split('\n')[0]
+ expected = render_jinja2("emails/invite_user_subject.txt", extra_vars)
+ expected = expected.split("\n")[0]
subject = self.get_email_subject(msg[3])
- assert_equal(expected, subject)
- assert_in('**test**', subject)
+ assert expected == subject
+ assert "**test**" in subject
def test_invite_user_custom_body(self):
user = factories.User()
- user_obj = model.User.by_name(user['name'])
+ user_obj = model.User.by_name(user["name"])
mailer.send_invite(user_obj)
# check it went to the mock smtp server
msgs = self.get_smtp_messages()
- assert_equal(len(msgs), 1)
+ assert len(msgs) == 1
msg = msgs[0]
extra_vars = {
- 'reset_link': mailer.get_reset_link(user_obj),
- 'user_name': user['name'],
- 'site_title': config.get('ckan.site_title'),
+ "reset_link": mailer.get_reset_link(user_obj),
+ "user_name": user["name"],
+ "site_title": config.get("ckan.site_title"),
}
- expected = render_jinja2('emails/invite_user.txt',
- extra_vars)
+ expected = render_jinja2("emails/invite_user.txt", extra_vars)
body = self.get_email_body(msg[3])
- assert_equal(expected, body)
- assert_in('**test**', body)
+ assert expected == body
+ assert "**test**" in body