def test_upload_image_resource(self): # See https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.Client.post with open(self.imagepath) as fp: f = entitydata_default_view_form_data(type_id="testupltype", entity_id="test1", action="edit") f['upl_field'] = fp # Upload file with submission u = entitydata_edit_url("edit", "testcoll", "testupltype", entity_id="test1", view_id="testuplimageview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Retrieve updated form r = self.client.get(u) # Test context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_upload_image") self.assertDictionaryMatch(f3.field_value, test_upload_image_field_value()) # Read back and compare entity resource just created siteobj = open(self.imagepath, "rb") testobj = self.test_upl_type_info.get_fileobj( "test1", "upl_field", "annal:Image", "image/jpeg", "rb" ) self.assertTrue(siteobj.read() == testobj.read(), "Uploaded image != original") # self.assertEqual(siteobj.read(), testobj.read()) return
def test_image_edit_field(self): # Upload to an image view field with open(self.imagepath) as fp: f = entitydata_default_view_form_data(type_id="testimgtype", entity_id="test1", action="edit") f['img_field'] = fp # Upload file with submission u = entitydata_edit_url("edit", "testcoll", "testimgtype", entity_id="test1", view_id="testimgview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Read back and compare entity resource just created siteobj = open(self.imagepath, "rb") testobj = self.test_img_type_info.get_fileobj( "test1", "img_field", "annal:Image", "image/jpeg", "rb" ) self.assertTrue(siteobj.read() == testobj.read(), "Referenced image != original") # Retrieve updated form r = self.client.get(u) # Test context # print "@@ "+context_field_map(r.context) self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_image") self.assertDictionaryMatch(f3.field_value, test_image_field_value()) return
def test_post_edit_entity_enum_type_new(self): self._create_entity_data("entitynewtype") e1 = self._check_entity_data_values("entitynewtype") f = entitydata_default_view_form_data(entity_id="entitynewtype", action="edit", update="Updated entity", new_enum="entity_type__new_edit") u = entitydata_edit_url("edit", "testcoll", "testtype", entity_id="entitynewtype", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") # v = entitydata_edit_url("new", "testcoll", "_type", view_id="Type_view") v = entitydata_edit_url("edit", "testcoll", "_type", "testtype", view_id="Type_view") w = entitydata_edit_url("edit", "testcoll", "testtype", entity_id="entitynewtype", view_id="Default_view") c = continuation_url_param(w) self.assertIn(TestHostUri + v, r['location']) self.assertIn(c, r['location']) self._check_entity_data_values("entitynewtype", update="Updated entity") return
def test_post_new_entity_new_type(self): self.assertFalse(EntityData.exists(self.testdata, "entitynewtype")) f = entitydata_default_view_form_data(entity_id="entitynewtype", action="new", update="Updated entity", new_type="New type") u = entitydata_edit_url("new", "testcoll", "testtype", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + entitydata_edit_url( "new", "testcoll", "_type", view_id="Type_view") w = entitydata_edit_url("edit", "testcoll", "testtype", entity_id="entitynewtype", view_id="Default_view") c = continuation_url_param(w) self.assertIn(v, r['location']) self.assertIn(c, r['location']) self._check_entity_data_values("entitynewtype", update="Updated entity") return
def test_post_default_form_use_view(self): self._create_entity_data("entityuseview") self.assertTrue(EntityData.exists(self.testdata, "entityuseview")) f = entitydata_default_view_form_data( entity_id="entityuseview", action="view", use_view="_view/Type_view", ) f.pop('entity_id', None) u = entitydata_edit_url("view", "testcoll", "testtype", "entityuseview", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + entitydata_edit_url("view", "testcoll", "testtype", entity_id="entityuseview", view_id="Type_view") c = continuation_url_param("/testsite/c/testcoll/d/testtype/") self.assertIn(v, r['location']) self.assertIn(c, r['location']) self._check_entity_data_values("entityuseview") return
def test_image_rename(self): # This test that entity renaming also copies over an attachment # Upload image self.test_image_edit_field() # Rename entity f = entitydata_default_view_form_data(type_id="testimgtype", orig_id="test1", entity_id="test_new", action="edit") u = entitydata_edit_url("edit", "testcoll", "testimgtype", entity_id="test1", view_id="testimgview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Read back and compare renamed entity resource siteobj = open(self.imagepath, "rb") testobj = self.test_img_type_info.get_fileobj("test_new", "img_field", "annal:Image", "image/jpeg", "rb") self.assertTrue(siteobj.read() == testobj.read(), "Renamed entity image != original") return
def test_post_view_entity_edit(self): self._create_entity_data("entityview") f = entitydata_default_view_form_data(entity_id="entityview", action="view", edit="Edit") u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entityview", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e = TestHostUri + entitydata_edit_url("edit", "testcoll", "testtype", entity_id="entityview", view_id="Default_view") l = continuation_url_param( entitydata_list_type_url("testcoll", "testtype")) c = continuation_url_param(u, prev_cont=l) self.assertIn(e, r['location']) self.assertIn(c, r['location']) # 'http://test.example.com/testsite/c/testcoll/v/Default_view/testtype/entityview/!edit # ?continuation_url=/testsite/c/testcoll/v/Default_view/testtype/entityview/!view # %3Fcontinuation_url=/testsite/c/testcoll/d/testtype/' return
def test_post_edit_entity_enum_type_new(self): self._create_entity_data("entitynewtype") e1 = self._check_entity_data_values("entitynewtype") f = entitydata_default_view_form_data( entity_id="entitynewtype", action="edit", update="Updated entity", new_enum="entity_type__new_edit" ) u = entitydata_edit_url( "edit", "testcoll", "testtype", entity_id="entitynewtype", view_id="Default_view" ) r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") # v = entitydata_edit_url("new", "testcoll", "_type", view_id="Type_view") v = entitydata_edit_url("edit", "testcoll", "_type", "testtype", view_id="Type_view") w = entitydata_edit_url( "edit", "testcoll", "testtype", entity_id="entitynewtype", view_id="Default_view" ) c = continuation_url_param(w) self.assertIn(TestHostUri+v, r['location']) self.assertIn(c, r['location']) self._check_entity_data_values("entitynewtype", update="Updated entity") return
def test_post_view_entity_copy(self): self._create_entity_data("entityview") f = entitydata_default_view_form_data(entity_id="entityview", action="view", copy="Copy") u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entityview", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e = TestHostUri + entitydata_edit_url("copy", "testcoll", "testtype", entity_id="entityview", view_id="Default_view") l = continuation_url_param( entitydata_list_type_url("testcoll", "testtype")) c = continuation_url_param(u, prev_cont=l) self.assertIn(e, r['location']) self.assertIn(c, r['location']) return
def test_post_view_entity_close(self): self._create_entity_data("entityview") f = entitydata_default_view_form_data(entity_id="entityview", action="view", close="Close") u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entityview", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") self.assertEqual(r['location'], TestHostUri + entitydata_list_type_url("testcoll", "testtype")) self._check_entity_data_values("entityview") return
def test_post_default_form_use_view_no_login(self): self.client.logout() f = entitydata_default_view_form_data( entity_id="entityuseview", action="view", use_view="_view/Type_view", ) u = entity_url("testcoll", "testtype", "entity1") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") return
def test_post_new_entity_enum_type_new_no_login(self): self.client.logout() f = entitydata_default_view_form_data( entity_id="entitynewtype", action="new", update="Updated entity", new_enum="entity_type__new" ) u = entitydata_edit_url("new", "testcoll", "testtype", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 401) self.assertEqual(r.reason_phrase, "Unauthorized") return
def test_post_new_entity_enum_type_new_no_login(self): self.client.logout() f = entitydata_default_view_form_data( entity_id="entitynewtype", action="new", update="Updated entity", new_enum="entity_type__new_edit" ) u = entitydata_edit_url("new", "testcoll", "testtype", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 401) self.assertEqual(r.reason_phrase, "Unauthorized") return
def test_post_default_form_use_view_no_login(self): self.client.logout() f = entitydata_default_view_form_data( entity_id="entityuseview", action="view", use_view="_view/Type_view", ) u = entity_url("testcoll", "testtype", "entity1") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") return
def test_reference_uploaded_resource(self): # Create uploaded resource (see previous test) with open(self.filepath) as fp: f = entitydata_default_view_form_data(type_id="testupltype", entity_id="test1", action="edit") f['upl_field'] = fp # Upload file with submission u = entitydata_edit_url("view", "testcoll", "testupltype", entity_id="test1", view_id="testuplfileview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Display resource with reference u = entitydata_edit_url("view", "testcoll", "testreftype", entity_id="test1", view_id="testrefview") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Check display context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") self.assertEqual(f1.field_value, "test_ref_entity test1 label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") self.assertEqual(f2.field_value, "test_ref_entity test1 comment") f3 = context_view_field(r.context, 3, 0) basepath = TestBasePath + "/c/testcoll/d/testupltype/" # print "\n*****\n"+repr(context_view_field(r.context, i, 0).target_value)+"\n*****\n" self.assertEqual(f3.field_id, "Test_reference") self.assertEqual(f3.field_value, "testupltype/test1") self.assertEqual(f3.field_value_link, basepath + "test1/") self.assertEqual(f3.target_value['upload_name'], "upl_field") self.assertEqual(f3.target_value['resource_name'], "upl_field.md") self.assertEqual(f3.target_value['resource_type'], "text/markdown") self.assertEqual(f3.target_value['uploaded_file'], "testdatafile.md") self.assertEqual(f3.target_value['uploaded_size'], 137) self.assertEqual(f3.target_value_link, basepath + "test1/upl_field.md") return
def test_post_view_entity_copy(self): self._create_entity_data("entityview") f = entitydata_default_view_form_data(entity_id="entityview", action="view", copy="Copy") u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entityview", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e = TestHostUri + entitydata_edit_url( "copy", "testcoll", "testtype", entity_id="entityview", view_id="Default_view" ) l = continuation_url_param(entitydata_list_type_url("testcoll", "testtype")) c = continuation_url_param(u, prev_cont=l) self.assertIn(e, r['location']) self.assertIn(c, r['location']) return
def test_reference_imported_resource(self): # Create imported resource (see previous test) f = entitydata_default_view_form_data(entity_id="test1", type_id="testimptype", action="edit", do_import="imp_field__import") f['imp_field'] = self.fileuri u = entitydata_edit_url("edit", "testcoll", "testimptype", entity_id="test1", view_id="testimpview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Display resource with reference u = entitydata_edit_url("view", "testcoll", "testreftype", entity_id="test1", view_id="testrefview") r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Check display context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") self.assertEqual(f1.field_value, "test_ref_entity test1 label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") self.assertEqual(f2.field_value, "test_ref_entity test1 comment") f3 = context_view_field(r.context, 3, 0) basepath = TestBasePath + "/c/testcoll/d/testimptype/" self.assertEqual(f3.field_id, "Test_reference") self.assertEqual(f3.field_value, "testimptype/test1") self.assertEqual(f3.field_value_link, basepath + "test1/") self.assertEqual(f3.target_value['import_name'], "imp_field") self.assertEqual(f3.target_value['resource_name'], "imp_field.md") self.assertEqual(f3.target_value['resource_type'], "text/markdown") self.assertEqual(f3.target_value_link, basepath + "test1/imp_field.md") return
def test_post_new_entity_new_type(self): self.assertFalse(EntityData.exists(self.testdata, "entitynewtype")) f = entitydata_default_view_form_data( entity_id="entitynewtype", action="new", update="Updated entity", new_type="New type" ) u = entitydata_edit_url("new", "testcoll", "testtype", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + entitydata_edit_url("new", "testcoll", "_type", view_id="Type_view") w = entitydata_edit_url("edit", "testcoll", "testtype", entity_id="entitynewtype", view_id="Default_view") c = continuation_url_param(w) self.assertIn(v, r['location']) self.assertIn(c, r['location']) self._check_entity_data_values("entitynewtype", update="Updated entity") return
def test_image_edit(self): # This test that entity editing leaves attachment intact # Upload image self.test_image_edit_field() # Edit entity f = entitydata_default_view_form_data(type_id="testimgtype", entity_id="test1", action="edit", update="Updated") u = entitydata_edit_url("edit", "testcoll", "testimgtype", entity_id="test1", view_id="testimgview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Retrieve updated form r = self.client.get(u) # Test context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") self.assertEqual(f1.field_value, "Updated testcoll/testimgtype/test1") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_image") self.assertDictionaryMatch(f3.field_value, test_image_field_value()) # Read back and compare entity resource siteobj = open(self.imagepath, "rb") testobj = self.test_img_type_info.get_fileobj("test1", "img_field", "annal:Image", "image/jpeg", "rb") self.assertTrue(siteobj.read() == testobj.read(), "Edited entity image != original") return
def test_post_view_entity_edit(self): self._create_entity_data("entityview") f = entitydata_default_view_form_data(entity_id="entityview", action="view", edit="Edit") u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entityview", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e = TestHostUri + entitydata_edit_url( "edit", "testcoll", "testtype", entity_id="entityview", view_id="Default_view" ) l = continuation_url_param(entitydata_list_type_url("testcoll", "testtype")) c = continuation_url_param(u, prev_cont=l) self.assertIn(e, r['location']) self.assertIn(c, r['location']) # 'http://test.example.com/testsite/c/testcoll/v/Default_view/testtype/entityview/!edit # ?continuation_url=/testsite/c/testcoll/v/Default_view/testtype/entityview/!view # %3Fcontinuation_url=/testsite/c/testcoll/d/testtype/' return
def test_post_view_entity_close(self): self._create_entity_data("entityview") f = entitydata_default_view_form_data(entity_id="entityview", action="view", close="Close") u = entitydata_edit_url("view", "testcoll", "testtype", entity_id="entityview", view_id="Default_view") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") self.assertEqual( r['location'], TestHostUri + entitydata_list_type_url("testcoll", "testtype")) self._check_entity_data_values("entityview") return
def test_reference_uploaded_resource(self): # Create uploaded resource (see previous test) with open(self.filepath) as fp: f = entitydata_default_view_form_data(type_id="testupltype", entity_id="test1", action="edit") f['upl_field'] = fp # Upload file with submission u = entitydata_edit_url( "view", "testcoll", "testupltype", entity_id="test1", view_id="testuplfileview" ) r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Display resource with reference u = entitydata_edit_url( "view", "testcoll", "testreftype", entity_id="test1", view_id="testrefview" ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Check display context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") self.assertEqual(f1.field_value, "test_ref_entity test1 label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") self.assertEqual(f2.field_value, "test_ref_entity test1 comment") f3 = context_view_field(r.context, 3, 0) basepath = TestBasePath + "/c/testcoll/d/testupltype/" # print "\n*****\n"+repr(context_view_field(r.context, i, 0).target_value)+"\n*****\n" self.assertEqual(f3.field_id, "Test_reference") self.assertEqual(f3.field_value, "testupltype/test1") self.assertEqual(f3.field_value_link, basepath+"test1/") self.assertEqual(f3.target_value['upload_name'], "upl_field") self.assertEqual(f3.target_value['resource_name'], "upl_field.md") self.assertEqual(f3.target_value['resource_type'], "text/markdown") self.assertEqual(f3.target_value['uploaded_file'], "testdatafile.md") self.assertEqual(f3.target_value['uploaded_size'], 137) self.assertEqual(f3.target_value_link, basepath+"test1/upl_field.md") return
def test_image_rename(self): # This test that entity renaming also copies over an attachment # Upload image self.test_image_edit_field() # Rename entity f = entitydata_default_view_form_data(type_id="testimgtype", orig_id="test1", entity_id="test_new", action="edit") u = entitydata_edit_url("edit", "testcoll", "testimgtype", entity_id="test1", view_id="testimgview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Read back and compare renamed entity resource siteobj = open(self.imagepath, "rb") testobj = self.test_img_type_info.get_fileobj( "test_new", "img_field", "annal:Image", "image/jpeg", "rb" ) self.assertTrue(siteobj.read() == testobj.read(), "Renamed entity image != original") return
def test_reference_imported_resource(self): # Create imported resource (see previous test) f = entitydata_default_view_form_data( entity_id="test1", type_id="testimptype", action="edit", do_import="imp_field__import" ) f['imp_field'] = self.fileuri u = entitydata_edit_url( "edit", "testcoll", "testimptype", entity_id="test1", view_id="testimpview" ) r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Display resource with reference u = entitydata_edit_url( "view", "testcoll", "testreftype", entity_id="test1", view_id="testrefview" ) r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Check display context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") self.assertEqual(f1.field_value, "test_ref_entity test1 label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") self.assertEqual(f2.field_value, "test_ref_entity test1 comment") f3 = context_view_field(r.context, 3, 0) basepath = TestBasePath + "/c/testcoll/d/testimptype/" self.assertEqual(f3.field_id, "Test_reference") self.assertEqual(f3.field_value, "testimptype/test1") self.assertEqual(f3.field_value_link, basepath+"test1/") self.assertEqual(f3.target_value['import_name'], "imp_field") self.assertEqual(f3.target_value['resource_name'], "imp_field.md") self.assertEqual(f3.target_value['resource_type'], "text/markdown") self.assertEqual(f3.target_value_link, basepath+"test1/imp_field.md") return
def test_image_edit_field(self): # Upload to an image view field with open(self.imagepath) as fp: f = entitydata_default_view_form_data(type_id="testimgtype", entity_id="test1", action="edit") f['img_field'] = fp # Upload file with submission u = entitydata_edit_url("edit", "testcoll", "testimgtype", entity_id="test1", view_id="testimgview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Read back and compare entity resource just created siteobj = open(self.imagepath, "rb") testobj = self.test_img_type_info.get_fileobj("test1", "img_field", "annal:Image", "image/jpeg", "rb") self.assertTrue(siteobj.read() == testobj.read(), "Referenced image != original") # Retrieve updated form r = self.client.get(u) # Test context # print "@@ "+context_field_map(r.context) self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_image") self.assertDictionaryMatch(f3.field_value, test_image_field_value()) return
def test_upload_image_resource(self): # See https://docs.djangoproject.com/en/1.7/topics/testing/tools/#django.test.Client.post with open(self.imagepath) as fp: f = entitydata_default_view_form_data(type_id="testupltype", entity_id="test1", action="edit") f['upl_field'] = fp # Upload file with submission u = entitydata_edit_url("edit", "testcoll", "testupltype", entity_id="test1", view_id="testuplimageview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Retrieve updated form r = self.client.get(u) # Test context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_upload_image") self.assertDictionaryMatch(f3.field_value, test_upload_image_field_value()) # Read back and compare entity resource just created siteobj = open(self.imagepath, "rb") testobj = self.test_upl_type_info.get_fileobj("test1", "upl_field", "annal:Image", "image/jpeg", "rb") self.assertTrue(siteobj.read() == testobj.read(), "Uploaded image != original") # self.assertEqual(siteobj.read(), testobj.read()) return
def test_post_default_form_default_view(self): # Set default entity view, then ensure collection view redirects to it self._create_entity_data("entitydefaultview") f = entitydata_default_view_form_data( entity_id="entitydefaultview", action="view", default_view="default_view", ) f.pop('entity_id', None) u = entitydata_edit_url(action="view", view_id="Default_view", coll_id="testcoll", type_id="testtype", entity_id="entitydefaultview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + u self.assertIn(v, r['location']) ih = "info_head=Action%20completed" im = ( "info_message=" + "Default%20view%20for%20collection%20testcoll%20changed%20to%20" + "Default_view/testtype/entitydefaultview") self.assertIn(ih, r['location']) self.assertIn(im, r['location']) # Get collection root and check redirect to entity view u2 = collection_view_url(coll_id="testcoll") r2 = self.client.get(u2) self.assertEqual(r2.status_code, 302) self.assertEqual(r2.reason_phrase, "FOUND") self.assertEqual(r2.content, "") v2 = TestHostUri + entitydata_edit_url(coll_id="testcoll", view_id="Default_view", type_id="testtype", entity_id="entitydefaultview") self.assertEqual(v2, r2['location']) return
def test_import_resource(self): f = entitydata_default_view_form_data(entity_id="test1", type_id="testimptype", action="edit", do_import="imp_field__import") f['imp_field'] = self.fileuri u = entitydata_edit_url("edit", "testcoll", "testimptype", entity_id="test1", view_id="testimpview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertMatch(r['location'], TestHostUri + u) # Read back form following redirect r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_import") self.assertDictionaryMatch(f3.field_value, test_import_field_value()) # Read back and compare entity resource just created siteobj = open(TestBaseDir + "/README.md", "rb") testobj = self.test_imp_type_info.get_fileobj("test1", "imp_field", "annal:Richtext", "text/markdown", "rb") self.assertEqual(siteobj.read(), testobj.read()) return
def test_post_default_form_use_view(self): self._create_entity_data("entityuseview") self.assertTrue(EntityData.exists(self.testdata, "entityuseview")) f = entitydata_default_view_form_data( entity_id="entityuseview", action="view", use_view="_view/Type_view", ) f.pop('entity_id', None) u = entitydata_edit_url( "view", "testcoll", "testtype", "entityuseview", view_id="Default_view" ) r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + entitydata_edit_url( "view", "testcoll", "testtype", entity_id="entityuseview", view_id="Type_view" ) c = continuation_url_param("/testsite/c/testcoll/d/testtype/") self.assertIn(v, r['location']) self.assertIn(c, r['location']) self._check_entity_data_values("entityuseview") return
def test_post_default_form_default_view(self): # Set default entity view, then ensure collection view redirects to it self._create_entity_data("entitydefaultview") f = entitydata_default_view_form_data( entity_id="entitydefaultview", action="view", default_view="default_view", ) f.pop('entity_id', None) u = entitydata_edit_url( action="view", view_id="Default_view", coll_id="testcoll", type_id="testtype", entity_id="entitydefaultview" ) r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + u self.assertIn(v, r['location']) ih = "info_head=Action%20completed" im = ( "info_message="+ "Default%20view%20for%20collection%20testcoll%20changed%20to%20"+ "Default_view/testtype/entitydefaultview" ) self.assertIn(ih, r['location']) self.assertIn(im, r['location']) # Get collection root and check redirect to entity view u2 = collection_view_url(coll_id="testcoll") r2 = self.client.get(u2) self.assertEqual(r2.status_code, 302) self.assertEqual(r2.reason_phrase, "FOUND") self.assertEqual(r2.content, "") v2 = TestHostUri + entitydata_edit_url( coll_id="testcoll", view_id="Default_view", type_id="testtype", entity_id="entitydefaultview" ) self.assertEqual(v2, r2['location']) return
def test_image_edit(self): # This test that entity editing leaves attachment intact # Upload image self.test_image_edit_field() # Edit entity f = entitydata_default_view_form_data(type_id="testimgtype", entity_id="test1", action="edit", update="Updated") u = entitydata_edit_url("edit", "testcoll", "testimgtype", entity_id="test1", view_id="testimgview") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") # Retrieve updated form r = self.client.get(u) # Test context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") self.assertEqual(f1.field_value, "Updated testcoll/testimgtype/test1") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_image") self.assertDictionaryMatch(f3.field_value, test_image_field_value()) # Read back and compare entity resource siteobj = open(self.imagepath, "rb") testobj = self.test_img_type_info.get_fileobj( "test1", "img_field", "annal:Image", "image/jpeg", "rb" ) self.assertTrue(siteobj.read() == testobj.read(), "Edited entity image != original") return
def test_import_resource(self): f = entitydata_default_view_form_data( entity_id="test1", type_id="testimptype", action="edit", do_import="imp_field__import" ) f['imp_field'] = self.fileuri u = entitydata_edit_url( "edit", "testcoll", "testimptype", entity_id="test1", view_id="testimpview" ) r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertMatch(r['location'], TestHostUri+u) # Read back form following redirect r = self.client.get(u) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") # Test context self.assertEqual(len(r.context['fields']), 4) f0 = context_view_field(r.context, 0, 0) self.assertEqual(f0.field_id, "Entity_id") self.assertEqual(f0.field_value, "test1") f1 = context_view_field(r.context, 1, 0) self.assertEqual(f1.field_id, "Entity_label") f2 = context_view_field(r.context, 2, 0) self.assertEqual(f2.field_id, "Entity_comment") f3 = context_view_field(r.context, 3, 0) self.assertEqual(f3.field_id, "Test_import") self.assertDictionaryMatch(f3.field_value, test_import_field_value()) # Read back and compare entity resource just created siteobj = open(TestBaseDir+"/README.md", "rb") testobj = self.test_imp_type_info.get_fileobj( "test1", "imp_field", "annal:Richtext", "text/markdown", "rb" ) self.assertEqual(siteobj.read(), testobj.read()) return