Esempio n. 1
0
    def _test_save_presentation(self, method, status_id, code):
        d = {
            'name': self.name,
            'caption': self.description,
            'tags': self.tags,
            'slug': self.slug,
            'code': json.dumps(code)
        }
        response = method(self.url,
                          data=json.dumps(d),
                          HTTP_X_CSRFTOKEN=self.csrf_token,
                          content_type="application/json"
                          )
        self.assertEqual(response.status_code, status_id)

        # if it was successful, verify data:
        if status_id in [status.HTTP_201_CREATED, status.HTTP_200_OK]:
            if hasattr(self, 'obj'):
                rec = self.model.objects.get(id=self.obj.id)
            else:
                rec = self.model.objects.all().order_by('-id',)[0]
            self.assertEqual(rec.name, self.name)
            self.assertEqual(rec.description, self.description)
            self.assertEqual(rec.tags, convert_tags_to_list(self.tags))
            self.assertEqual(rec.slug, self.slug)
            self.assertEqual(rec.code, code)
Esempio n. 2
0
    def _test_save_layer(self, method, status_id, symbols):
        d = {
            "name": self.name,
            "caption": self.description,
            "tags": self.tags,
            "slug": self.slug,
            "symbols": json.dumps(symbols),
        }
        # print d
        # response = method(self.url,data=urllib.urlencode(d),HTTP_X_CSRFTOKEN=self.csrf_token,content_type="application/x-www-form-urlencoded")
        response = method(
            self.url, data=json.dumps(d), HTTP_X_CSRFTOKEN=self.csrf_token, content_type="application/json"
        )
        # print response.data
        self.assertEqual(response.status_code, status_id)

        # if it was successful, verify data:
        if status_id in [status.HTTP_201_CREATED, status.HTTP_200_OK]:
            if hasattr(self, "obj"):
                rec = models.Layer.objects.get(id=self.obj.id)
            else:
                rec = self.model.objects.all().order_by("-id")[0]
            self.assertEqual(rec.name, self.name)
            self.assertEqual(rec.description, self.description)
            self.assertEqual(rec.tags, convert_tags_to_list(self.tags))
            self.assertEqual(rec.slug, self.slug)
Esempio n. 3
0
    def _test_save_snapshot(self, method, status_id, entities):
        d = {
            "name": self.name,
            "caption": self.description,
            "tags": self.tags,
            "slug": self.slug,
            "entities": json.dumps(entities),
            "center": json.dumps(self.center),
            "zoom": self.zoom,
            "basemap": self.basemap,
        }
        # print d
        response = method(
            self.url, data=json.dumps(d), HTTP_X_CSRFTOKEN=self.csrf_token, content_type="application/json"
        )
        if response.status_code != status_id:
            print response.data
        self.assertEqual(response.status_code, status_id)

        # if it was successful, verify data:
        if status_id in [status.HTTP_201_CREATED, status.HTTP_200_OK]:
            if hasattr(self, "obj"):
                rec = models.Snapshot.objects.get(id=self.obj.id)
            else:
                rec = self.model.objects.all().order_by("-id")[0]
            self.assertEqual(rec.name, self.name)
            self.assertEqual(rec.description, self.description)
            self.assertEqual(rec.tags, convert_tags_to_list(self.tags))
            self.assertEqual(rec.slug, self.slug)
            self.assertEqual(3, len(rec.photos))
            self.assertEqual(1, len(rec.audio))
            self.assertEqual(1, len(rec.markers))
Esempio n. 4
0
    def test_create_photo_using_post(self, **kwargs):
        import Image, tempfile
        image = Image.new('RGB', (100, 100))
        tmp_file = tempfile.NamedTemporaryFile(suffix='.jpg')
        image.save(tmp_file)
        author_string = 'Author of the media file'
        tags = "j,k,l"
        with open(tmp_file.name, 'rb') as data:
            response = self.client_user.post(
                self.urls[0],
                {
                    'project_id': self.project.id,
                    'media_file': data,
                    'attribution': author_string,
                    'extras': json.dumps(extras),
                    'geometry': json.dumps(point),
                    'tags': tags
                },
                HTTP_X_CSRFTOKEN=self.csrf_token)

            self.assertEqual(status.HTTP_201_CREATED, response.status_code)
            # a few more checks to make sure that file paths are being
            # generated correctly:
            new_photo = models.Photo.objects.get(id=response.data.get("id"))
            # looks like the new_photo does not retrieve the geometry attribute
            file_name = tmp_file.name.split("/")[-1]
            file_name = unicode(file_name, "utf-8")
            self.assertEqual(file_name, new_photo.name)
            self.assertEqual(author_string, new_photo.attribution)
            self.assertEqual(extras, new_photo.extras)
            self.assertEqual(point, json.loads(new_photo.geometry.geojson))
            self.assertEqual(convert_tags_to_list(tags), new_photo.tags)
            self.assertEqual(file_name, new_photo.file_name_orig)
            # ensure not empty
            # self.assertTrue(len(new_photo.file_name_new) > 5)
            # replace this with an Amazon S3 equivalent
            # self.assertEqual(settings.SERVER_HOST, new_photo.host)
            paths = [
                response.data.get("path_large"),
                response.data.get("path_medium"),
                response.data.get("path_medium_sm"),
                response.data.get("path_small"),
                response.data.get("path_marker_lg"),
                response.data.get("path_marker_sm")
            ]
            urls = [
                new_photo.media_file_orig.url,
                new_photo.media_file_large.url,
                new_photo.media_file_medium.url,
                new_photo.media_file_medium_sm.url,
                new_photo.media_file_small.url,
                new_photo.media_file_marker_lg.url,
                new_photo.media_file_marker_sm.url
            ]
            for url in urls:
                self.assertNotEqual(
                    url.find('{0}/photos/'.format(
                        self.user.username)), -1)
                self.assertNotEqual(url.find(new_photo.host), -1)
Esempio n. 5
0
    def test_create_photo_using_post(self, **kwargs):
        import Image, tempfile
        image = Image.new('RGB', (100, 100))
        tmp_file = tempfile.NamedTemporaryFile(suffix='.jpg')
        image.save(tmp_file)
        author_string = 'Author of the media file'
        tags = "j,k,l"
        with open(tmp_file.name, 'rb') as data:
            response = self.client_user.post(self.urls[0], {
                'project_id': self.project.id,
                'media_file': data,
                'attribution': author_string,
                'extras': json.dumps(extras),
                'geometry': json.dumps(point),
                'tags': tags
            },
                                             HTTP_X_CSRFTOKEN=self.csrf_token)

            self.assertEqual(status.HTTP_201_CREATED, response.status_code)
            # a few more checks to make sure that file paths are being
            # generated correctly:
            new_photo = models.Photo.objects.get(id=response.data.get("id"))
            # looks like the new_photo does not retrieve the geometry attribute
            file_name = tmp_file.name.split("/")[-1]
            file_name = unicode(file_name, "utf-8")
            self.assertEqual(file_name, new_photo.name)
            self.assertEqual(author_string, new_photo.attribution)
            self.assertEqual(extras, new_photo.extras)
            self.assertEqual(point, json.loads(new_photo.geometry.geojson))
            self.assertEqual(convert_tags_to_list(tags), new_photo.tags)
            self.assertEqual(file_name, new_photo.file_name_orig)
            # ensure not empty
            # self.assertTrue(len(new_photo.file_name_new) > 5)
            # replace this with an Amazon S3 equivalent
            # self.assertEqual(settings.SERVER_HOST, new_photo.host)
            paths = [
                response.data.get("path_large"),
                response.data.get("path_medium"),
                response.data.get("path_medium_sm"),
                response.data.get("path_small"),
                response.data.get("path_marker_lg"),
                response.data.get("path_marker_sm")
            ]
            urls = [
                new_photo.media_file_orig.url, new_photo.media_file_large.url,
                new_photo.media_file_medium.url,
                new_photo.media_file_medium_sm.url,
                new_photo.media_file_small.url,
                new_photo.media_file_marker_lg.url,
                new_photo.media_file_marker_sm.url
            ]
            for url in urls:
                self.assertNotEqual(
                    url.find('{0}/photos/'.format(self.user.username)), -1)
                self.assertNotEqual(url.find(new_photo.host), -1)
Esempio n. 6
0
    def test_add_new_form_using_view(self, **kwargs):
        from localground.apps.site.models import Field, Form

        name = 'brand new form!'
        description = 'new d'
        tags = "a,b,c"
        project = self.project.id
        slug = 'brand-new-form'

        data = self.make_post_dictionary(name, description, tags, slug)
        data.update({'projects': project})

        response = self.client_user.post(
            '/profile/forms/create/',
            data=urllib.urlencode(data),
            HTTP_X_CSRFTOKEN=self.csrf_token,
            content_type="application/x-www-form-urlencoded")

        # successfully redirected
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

        # re-query
        form = models.Form.objects.get(name=name)

        # form data should be changed
        self.assertEqual(form.description, description)
        self.assertEqual(form.tags, convert_tags_to_list(tags))

        # form should have 2 fields:
        fields = form.fields
        self.assertEqual(len(fields), 2)

        from django.db import connection, transaction
        cursor = connection.cursor()

        # there should be a new table created with both fields present:
        for field in fields:
            # if an exception isn't thrown, it works
            a = cursor.execute(
                'select %s from %s' %
                (field.col_name_db, field.form.table_name))

        # there shoud be a new ContentType that has a pointer to the form's
        # TableModel class:
        from django.contrib.contenttypes.models import ContentType
        ct = ContentType.objects.get(
            model=form.TableModel._meta.object_name.lower(),
            app_label=form.TableModel._meta.app_label)
        self.assertEqual(form.TableModel, ct.model_class())
Esempio n. 7
0
 def test_update_print_using_put(self, **kwargs):
     name, description, tags = 'A', 'B', 'C'
     response = self.client_user.put(self.url,
                                     data=json.dumps({
                                         'map_title': name,
                                         'instructions': description,
                                         'tags': tags
                                     }),
                                     HTTP_X_CSRFTOKEN=self.csrf_token,
                                     content_type="application/json")
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     updated_obj = self.model.objects.get(id=self.print_object.id)
     self.assertEqual(updated_obj.name, name)
     self.assertEqual(updated_obj.description, description)
     self.assertEqual(updated_obj.tags, convert_tags_to_list(tags))
Esempio n. 8
0
 def test_update_print_using_put(self, **kwargs):
     name, description, tags = 'A', 'B', 'C'
     response = self.client_user.put(self.url,
                                     data=json.dumps({
                                         'map_title': name,
                                         'instructions': description,
                                         'tags': tags
                                     }),
                                     HTTP_X_CSRFTOKEN=self.csrf_token,
                                     content_type="application/json"
                                     )
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     updated_obj = self.model.objects.get(id=self.print_object.id)
     self.assertEqual(updated_obj.name, name)
     self.assertEqual(updated_obj.description, description)
     self.assertEqual(updated_obj.tags, convert_tags_to_list(tags))
Esempio n. 9
0
    def test_add_fields_to_existing_form_using_view(self, **kwargs):
        from localground.apps.site.models import Field

        name = 'new name'
        description = 'new d'
        tags = "a,b,c"
        project = self.project.id
        slug = 'new-name'

        data = self.make_post_dictionary(name, description, tags, slug)
        data.update({'projects': project})
        
        #print data

        # form should not have any fields:
        self.assertEqual(len(self.form.fields), 0)

        response = self.client_user.post(
            self.urls[0],
            data=urllib.urlencode(data),
            HTTP_X_CSRFTOKEN=self.csrf_token,
            content_type="application/x-www-form-urlencoded")

        # successfully redirected
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

        form = models.Form.objects.get(name=name)

        # form data should be changed
        self.assertEqual(form.name, name)
        self.assertEqual(form.description, description)
        self.assertEqual(form.tags, convert_tags_to_list(tags))

        # form should have 2 fields:
        fields = form.fields
        self.assertEqual(len(fields), 2)

        from django.db import connection, transaction
        cursor = connection.cursor()

        # there should be a new table created with both fields present:
        for field in fields:
            # if an exception isn't thrown, it works
            a = cursor.execute(
                'select %s from %s' %
                (field.col_name_db, field.form.table_name))
Esempio n. 10
0
 def test_create_project_using_post(self, **kwargs):
     name = 'New Project!'
     description = 'New project description'
     tags = "d, e, f"
     slug = 'new-project-123'
     response = self.client_user.post(self.url,
                                      data=json.dumps({
                                          'name': name,
                                          'caption': description,
                                          'tags': tags,
                                          'slug': slug
                                      }),
                                      HTTP_X_CSRFTOKEN=self.csrf_token,
                                      content_type="application/json"
                                      )
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     new_obj = self.model.objects.all().order_by('-id',)[0]
     self.assertEqual(new_obj.name, name)
     self.assertEqual(new_obj.description, description)
     self.assertEqual(new_obj.tags, convert_tags_to_list(tags))
     self.assertEqual(new_obj.slug, slug)
Esempio n. 11
0
 def test_update_photo_using_put(self, **kwargs):
     name, description = 'New Photo Name', 'Test description'
     tags = "a, b, d"
     response = self.client_user.put(self.url,
                                     data=json.dumps({
                                         'geometry':
                                         json.dumps(point),
                                         'name':
                                         name,
                                         'caption':
                                         description,
                                         'tags':
                                         tags,
                                         'extras':
                                         json.dumps(extras)
                                     }),
                                     HTTP_X_CSRFTOKEN=self.csrf_token,
                                     content_type="application/json")
     """
     response = self.client_user.put(self.url,
         data=urllib.urlencode({
             'geometry': point,
             'name': name,
             'caption': description,
             'tags' : tags,
             'extras': json.dumps(extras)
         }),
         HTTP_X_CSRFTOKEN=self.csrf_token,
         content_type="application/x-www-form-urlencoded"
     )
     """
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     updated_photo = models.Photo.objects.get(id=self.photo.id)
     self.assertEqual(updated_photo.name, name)
     self.assertEqual(updated_photo.description, description)
     self.assertEqual(response.data.get("caption"), description)
     self.assertEqual(updated_photo.geometry.y, point['coordinates'][1])
     self.assertEqual(updated_photo.geometry.x, point['coordinates'][0])
     self.assertEqual(updated_photo.extras, extras)
     self.assertEqual(updated_photo.tags, convert_tags_to_list(tags))
Esempio n. 12
0
 def test_update_photo_using_put(self, **kwargs):
     name, description = 'New Photo Name', 'Test description'
     tags = "a, b, d"
     response = self.client_user.put(
         self.url,
         data=json.dumps({
             'geometry': json.dumps(point),
             'name': name,
             'caption': description,
             'tags': tags,
             'extras': json.dumps(extras)
         }),
         HTTP_X_CSRFTOKEN=self.csrf_token,
         content_type="application/json"
     )
     """
     response = self.client_user.put(self.url,
         data=urllib.urlencode({
             'geometry': point,
             'name': name,
             'caption': description,
             'tags' : tags,
             'extras': json.dumps(extras)
         }),
         HTTP_X_CSRFTOKEN=self.csrf_token,
         content_type="application/x-www-form-urlencoded"
     )
     """
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     updated_photo = models.Photo.objects.get(id=self.photo.id)
     self.assertEqual(updated_photo.name, name)
     self.assertEqual(updated_photo.description, description)
     self.assertEqual(response.data.get("caption"), description)
     self.assertEqual(updated_photo.geometry.y, point['coordinates'][1])
     self.assertEqual(updated_photo.geometry.x, point['coordinates'][0])
     self.assertEqual(updated_photo.extras, extras)
     self.assertEqual(updated_photo.tags, convert_tags_to_list(tags))