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)
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)
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))
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)
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)
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())
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))
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))
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))
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)
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))
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))