Exemplo n.º 1
0
 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)
Exemplo n.º 3
0
    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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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)
Exemplo n.º 15
0
    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)