def test_delete_confirm_page(self): '''test the confirmation page renders and cancels correctly''' env = {'REMOTE_USER': self.owner['name'].encode('ascii')} response = self.app.get( url=toolkit.url_for('issues_delete', dataset_id=self.dataset['id'], issue_number=self.issue['number']), extra_environ=env, ) form = response.forms['ckanext-issues-confirm-delete'] # check the form target assert_equals( toolkit.url_for('issues_delete', dataset_id=self.dataset['id'], issue_number=self.issue['number']), form.action ) assert_equals([u'cancel', u'delete'], form.fields.keys()) response = helpers.submit_and_follow(self.app, form, env, 'cancel') # check we have been redirected without deletion assert_equals( toolkit.url_for('issues_show', dataset_id=self.dataset['id'], issue_number=self.issue['number']), response.request.path_qs )
def test_spatial_extra_edit(self): ''' ''' app = self._get_test_app() user = factories.User() env = {u'REMOTE_USER': user[u'name'].encode(u'ascii')} dataset = factories.Dataset(user=user) offset = toolkit.url_for(controller=u'package', action=u'edit', id=dataset[u'id']) res = app.get(offset, extra_environ=env) form = res.forms[1] form[u'extras__0__key'] = u'spatial' form[u'extras__0__value'] = self.geojson_examples[u'point'] res = helpers.submit_and_follow(app, form, env, u'save') assert u'Error' not in res, res res = app.get(offset, extra_environ=env) form = res.forms[1] form[u'extras__0__key'] = u'spatial' form[u'extras__0__value'] = self.geojson_examples[u'polygon'] res = helpers.submit_and_follow(app, form, env, u'save') assert u'Error' not in res, res package_extent = Session.query(PackageExtent) \ .filter(PackageExtent.package_id == dataset[u'id']).first() assert_equals(package_extent.package_id, dataset[u'id']) if legacy_geoalchemy: assert_equals( Session.scalar(package_extent.the_geom.geometry_type), u'ST_Polygon') assert_equals(Session.scalar(package_extent.the_geom.srid), self.db_srid) else: from sqlalchemy import func assert_equals( Session.query(func.ST_GeometryType( package_extent.the_geom)).first()[0], u'ST_Polygon') assert_equals(package_extent.the_geom.srid, self.db_srid)
def test_spatial_extra_edit(self): app = self._get_test_app() user = factories.User() env = {'REMOTE_USER': user['name'].encode('ascii')} dataset = factories.Dataset(user=user) offset = url_for(controller='package', action='edit', id=dataset['id']) res = app.get(offset, extra_environ=env) form = res.forms[1] form['extras__0__key'] = u'spatial' form['extras__0__value'] = self.geojson_examples['point'] res = helpers.submit_and_follow(app, form, env, 'save') assert 'Error' not in res, res res = app.get(offset, extra_environ=env) form = res.forms[1] form['extras__0__key'] = u'spatial' form['extras__0__value'] = self.geojson_examples['polygon'] res = helpers.submit_and_follow(app, form, env, 'save') assert 'Error' not in res, res package_extent = Session.query(PackageExtent) \ .filter(PackageExtent.package_id == dataset['id']).first() assert_equals(package_extent.package_id, dataset['id']) if legacy_geoalchemy: assert_equals( Session.scalar(package_extent.the_geom.geometry_type), 'ST_Polygon') assert_equals( Session.scalar(package_extent.the_geom.srid), self.db_srid) else: from sqlalchemy import func assert_equals( Session.query( func.ST_GeometryType(package_extent.the_geom)).first()[0], 'ST_Polygon') assert_equals(package_extent.the_geom.srid, self.db_srid)
def test_resource_form_includes_custom_fields(self): app = self._get_test_app() env, response = _get_package_new_page_as_sysadmin(app) form = response.forms['dataset-edit'] form['name'] = 'resource-includes-custom' response = submit_and_follow(app, form, env, 'save') form = response.forms['resource-edit'] assert_true('camels_in_photo' in form.fields)
def test_cannot_assign_if_user_does_not_exist(self): env = {"REMOTE_USER": self.owner["name"].encode("ascii")} response = self.app.get( url=toolkit.url_for("issues_show", dataset_id=self.dataset["id"], issue_number=self.issue["number"]), extra_environ=env, ) form = response.forms["ckanext-issues-assign"] form["assignee"] = "not a user" response = helpers.submit_and_follow(self.app, form, env) assert_in("User not a user does not exist", response)
def test_cannot_assign_if_user_does_not_exist(self): env = {'REMOTE_USER': self.owner['name'].encode('ascii')} response = self.app.get( url=toolkit.url_for('issues_show', package_id=self.dataset['id'], id=self.issue['id']), extra_environ=env, ) form = response.forms['ckanext-issues-assign'] form['assignee'] = 'not a user' response = helpers.submit_and_follow(self.app, form, env) assert_in('User not a user does not exist', response)
def test_cannot_assign_if_user_does_not_exist(self): env = {'REMOTE_USER': self.owner['name'].encode('ascii')} response = self.app.get( url=toolkit.url_for('issues_show', dataset_id=self.dataset['id'], issue_number=self.issue['number']), extra_environ=env, ) form = response.forms['ckanext-issues-assign'] form['assignee'] = 'not a user' response = helpers.submit_and_follow(self.app, form, env) assert_in('User not a user does not exist', response)
def test_user_self_assign(self): env = {"REMOTE_USER": self.owner["name"].encode("ascii")} response = self.app.get( url=toolkit.url_for("issues_show", dataset_id=self.dataset["id"], issue_number=self.issue["number"]), extra_environ=env, ) form = response.forms["ckanext-issues-assign"] form["assignee"] = self.owner["name"] response = helpers.submit_and_follow(self.app, form, env) soup = BeautifulSoup(response.body) assignee = soup.find(id="ckanext-issues-assignee").text.strip() assert_equals(self.owner["name"], assignee)
def test_user_self_assign(self): env = {'REMOTE_USER': self.owner['name'].encode('ascii')} response = self.app.get( url=toolkit.url_for('issues_show', package_id=self.dataset['id'], id=self.issue['id']), extra_environ=env, ) form = response.forms['ckanext-issues-assign'] form['assignee'] = self.owner['name'] response = helpers.submit_and_follow(self.app, form, env) soup = BeautifulSoup(response.body) assignee = soup.find(id='ckanext-issues-assignee').text.strip() assert_equals(self.owner['name'], assignee)
def test_user_self_assign(self): env = {'REMOTE_USER': self.owner['name'].encode('ascii')} response = self.app.get( url=toolkit.url_for('issues_show', dataset_id=self.dataset['id'], issue_number=self.issue['number']), extra_environ=env, ) form = response.forms['ckanext-issues-assign'] form['assignee'] = self.owner['name'] response = helpers.submit_and_follow(self.app, form, env) soup = BeautifulSoup(response.body) assignee = soup.find(id='ckanext-issues-assignee').text.strip() assert_equals(self.owner['name'], assignee)
def test_assign_an_editor_to_an_issue(self): editor = factories.User() test = helpers.call_action( "member_create", id=self.org["id"], object=editor["id"], object_type="user", capacity="editor" ) env = {"REMOTE_USER": editor["name"].encode("ascii")} response = self.app.get( url=toolkit.url_for("issues_show", dataset_id=self.dataset["id"], issue_number=self.issue["number"]), extra_environ=env, ) form = response.forms["ckanext-issues-assign"] form["assignee"] = editor["name"] response = helpers.submit_and_follow(self.app, form, env) soup = BeautifulSoup(response.body) assignee = soup.find(id="ckanext-issues-assignee").text.strip() assert_equals(editor["name"], assignee)
def test_spatial_extra(self): app = self._get_test_app() user = factories.User() env = {'REMOTE_USER': user['name'].encode('ascii')} dataset = factories.Dataset(user=user) offset = url_for(controller='package', action='edit', id=dataset['id']) res = app.get(offset, extra_environ=env) form = res.forms[1] form['extras__0__key'] = u'spatial' form['extras__0__value'] = self.geojson_examples['point'] res = helpers.submit_and_follow(app, form, env, 'save') assert 'Error' not in res, res package_extent = Session.query(PackageExtent) \ .filter(PackageExtent.package_id == dataset['id']).first() geojson = json.loads(self.geojson_examples['point']) assert_equals(package_extent.package_id, dataset['id']) if legacy_geoalchemy: assert_equals(Session.scalar(package_extent.the_geom.x), geojson['coordinates'][0]) assert_equals(Session.scalar(package_extent.the_geom.y), geojson['coordinates'][1]) assert_equals(Session.scalar(package_extent.the_geom.srid), self.db_srid) else: from sqlalchemy import func assert_equals( Session.query(func.ST_X(package_extent.the_geom)).first()[0], geojson['coordinates'][0]) assert_equals( Session.query(func.ST_Y(package_extent.the_geom)).first()[0], geojson['coordinates'][1]) assert_equals(package_extent.the_geom.srid, self.db_srid)
def test_assign_an_editor_to_an_issue(self): editor = factories.User() test = helpers.call_action('member_create', id=self.org['id'], object=editor['id'], object_type='user', capacity='editor') env = {'REMOTE_USER': editor['name'].encode('ascii')} response = self.app.get( url=toolkit.url_for('issues_show', package_id=self.dataset['id'], id=self.issue['id']), extra_environ=env, ) form = response.forms['ckanext-issues-assign'] form['assignee'] = editor['name'] response = helpers.submit_and_follow(self.app, form, env) soup = BeautifulSoup(response.body) assignee = soup.find(id='ckanext-issues-assignee').text.strip() assert_equals(editor['name'], assignee)
def test_delete_confirm_page(self): '''test the confirmation page renders and cancels correctly''' env = {'REMOTE_USER': self.owner['name'].encode('ascii')} response = self.app.get( url=toolkit.url_for('issues_delete', dataset_id=self.dataset['id'], issue_number=self.issue['number']), extra_environ=env, ) form = response.forms['ckanext-issues-confirm-delete'] # check the form target assert_equals( toolkit.url_for('issues_delete', dataset_id=self.dataset['id'], issue_number=self.issue['number']), form.action) assert_equals([u'cancel', u'delete'], form.fields.keys()) response = helpers.submit_and_follow(self.app, form, env, 'cancel') # check we have been redirected without deletion assert_equals( toolkit.url_for('issues_show', dataset_id=self.dataset['id'], issue_number=self.issue['number']), response.request.path_qs)
def test_assign_an_editor_to_an_issue(self): editor = factories.User() test = helpers.call_action( 'member_create', id=self.org['id'], object=editor['id'], object_type='user', capacity='editor' ) env = {'REMOTE_USER': editor['name'].encode('ascii')} response = self.app.get( url=toolkit.url_for('issues_show', dataset_id=self.dataset['id'], issue_number=self.issue['number']), extra_environ=env, ) form = response.forms['ckanext-issues-assign'] form['assignee'] = editor['name'] response = helpers.submit_and_follow(self.app, form, env) soup = BeautifulSoup(response.body) assignee = soup.find(id='ckanext-issues-assignee').text.strip() assert_equals(editor['name'], assignee)