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 Label
  • My 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