def test_post_delete_type_entity(self): testtypedelete = RecordType.create(self.testcoll, "testtypedelete", recordtype_create_values("testcoll", "testtypedelete")) testdatadelete = RecordTypeData.create(self.testcoll, "testtypedelete", {}) f = entitylist_form_data("delete", entities=["_type/testtypedelete"]) u = entitydata_list_type_url("testcoll", "_type", list_id="Type_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "<h3>Confirm requested action</h3>") self.assertContains(r, "Remove record testtypedelete of type _type in collection testcoll: Are you sure?") self.assertContains(r, 'Click "Confirm" to continue, or "Cancel" to abort operation') self.assertContains(r, '<input type="hidden" name="confirmed_action" value="/testsite/c/testcoll/d/_type/!delete_confirmed"/>', html=True ) self.assertEqual(r.context['action_description'], 'Remove record testtypedelete of type _type in collection testcoll') self.assertEqual(r.context['confirmed_action'], '/testsite/c/testcoll/d/_type/!delete_confirmed') self.assertEqual(r.context['action_params'], confirm_delete_params(button_id="entity_delete", entity_id="testtypedelete", type_id="_type", list_id="Type_list") ) self.assertEqual(r.context['cancel_action'], '/testsite/c/testcoll/l/Type_list/_type/') return
def test_post_delete_all_entity(self): f = entitylist_form_data("delete", entities=["testtype/entity1"]) u = entitydata_list_all_url("testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "<h3>%s</h3>"%message.CONFIRM_REQUESTED_ACTION) # print "**********" # print r.content # print "**********" msg_text = make_message(message.REMOVE_ENTITY_DATA, type_id="testtype", id="entity1" ) self.assertContains(r, msg_text + ": " + message.ARE_YOU_SURE) self.assertContains(r, message.CONFIRM_OR_CANCEL) self.assertContains(r, '<input type="hidden" name="confirmed_action" value="/testsite/c/testcoll/d/testtype/!delete_confirmed"/>', html=True ) self.assertEqual(r.context['action_description'], msg_text) self.assertEqual(r.context['confirmed_action'], '/testsite/c/testcoll/d/testtype/!delete_confirmed') self.assertEqual(r.context['action_params'], confirm_delete_params(button_id="entity_delete", entity_id="entity1", type_id=None) ) self.assertEqual(r.context['cancel_action'], '/testsite/c/testcoll/d/') return
def test_post_delete_all_entity(self): f = entitylist_form_data("delete", entities=["testtype/entity1"]) u = entitydata_list_all_url("testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 200) self.assertEqual(r.reason_phrase, "OK") self.assertContains(r, "<h3>Confirm requested action</h3>") # print "**********" # print r.content # print "**********" self.assertContains( r, "Remove record entity1 of type testtype in collection testcoll: Are you sure?" ) self.assertContains( r, 'Click "Confirm" to continue, or "Cancel" to abort operation') self.assertContains( r, '<input type="hidden" name="confirmed_action" value="/testsite/c/testcoll/d/testtype/!delete_confirmed"/>', html=True) self.assertEqual( r.context['action_description'], 'Remove record entity1 of type testtype in collection testcoll') self.assertEqual(r.context['confirmed_action'], '/testsite/c/testcoll/d/testtype/!delete_confirmed') self.assertEqual( r.context['action_params'], confirm_delete_params(button_id="entity_delete", entity_id="entity1", type_id=None)) self.assertEqual(r.context['cancel_action'], '/testsite/c/testcoll/d/') return
def test_post_edit_type_entity_no_login(self): self.client.logout() f = entitylist_form_data("edit", entities=["testtype/entity1"]) u = entitydata_list_type_url("testcoll", "testtype") r = self.client.post(u, f) self.assertEqual(r.status_code, 401) self.assertEqual(r.reason_phrase, "Unauthorized") return
def test_post_edit_type_entity_no_login(self): self.client.logout() f = entitylist_form_data("edit", entities=[layout.FIELD_TYPEID+"/field1"]) u = entitydata_list_type_url("testcoll", layout.FIELD_TYPEID, list_id="Field_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 401) self.assertEqual(r.reason_phrase, "Unauthorized") return
def test_post_edit_type_entity_select_none(self): f = entitylist_form_data("edit") u = entitydata_list_type_url("testcoll", "testtype") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e = TestHostUri + u + "?error_head=Problem%20with%20input&error_message=" self.assertIn(e, r['location']) return
def test_post_edit_type_entity_select_none(self): f = entitylist_form_data("edit") u = entitydata_list_type_url("testcoll", layout.FIELD_TYPEID, list_id="Field_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e = TestHostUri + u + "?error_head=Problem%20with%20input&error_message=" self.assertIn(e, r['location']) return
def test_post_new_type_entity(self): f = entitylist_form_data("new") u = entitydata_list_type_url("testcoll", "testtype") 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", "testtype", view_id="Default_view") self.assertIn(v, r['location']) return
def test_post_copy_type_entity_select_none(self): f = entitylist_form_data("copy") u = entitydata_list_type_url("testcoll", "testtype") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e = error_head = "Problem%20with%20input&error_message=No%20data%20record%20selected%20to%20copy" self.assertIn(TestHostUri + u, r['location']) self.assertIn(e, r['location']) return
def test_post_delete_type_entity_with_values(self): f = entitylist_form_data("delete", entities=["_type/testtype"]) u = entitydata_list_type_url("testcoll", "_type", list_id="Type_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") l = r['location'] self.assertIn(u, l) self.assertIn("error_head=Problem%20with%20input", l) self.assertIn("error_message=Cannot%20remove%20type%20testtype%20with%20existing%20values", l) return
def test_post_view_all_list(self): # 'View' button on list view: change displayed list f = entitylist_form_data("list_type", list_scope_all="all", list_id="View_list") u = entitydata_list_type_url("testcoll", "_type", list_id="Type_list") 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_list_type_url("testcoll", "_type", list_id="View_list") self.assertIn(v, r['location']) self.assertNotIn("continuation_url", r['location']) return
def test_post_customize(self): f = entitylist_form_data("customize", continuation_url="/xyzxy/") u = entitydata_list_all_url("testcoll") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + collection_edit_url("testcoll") c = continuation_url_param(u, continuation_url_param("/xyzxy/")) self.assertIn(v, r['location']) self.assertIn(c, r['location']) return
def test_post_close(self): # 'Close' button on list view c = "/xyzzy/" f = entitylist_form_data("close", entities=["testtype/entity1", "testtype/entity2"], continuation_url=c) u = entitydata_list_type_url("testcoll", "testtype") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + c self.assertEqual(v, r['location']) return
def test_post_delete_type_not_exists(self): f = entitylist_form_data("delete", entities=["_type/sitetype"]) u = entitydata_list_all_url("testcoll", list_id="Type_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") l = r['location'] self.assertIn(u, l) self.assertIn("error_head=Problem%20with%20input", l) # Absent entity assumed to be site level self.assertIn("error_message=Cannot%20remove%20site%20built-in%20entity%20sitetype", l) return
def test_post_new_type_entity(self): f = entitylist_form_data("new", list_id="Field_list") u = entitydata_list_type_url("testcoll", layout.FIELD_TYPEID, list_id="Field_list") 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", layout.FIELD_TYPEID, view_id="Field_view") c = continuation_url_param(u) self.assertIn(v, r['location']) self.assertIn(c, r['location']) return
def test_post_copy_type_entity_select_none(self): f = entitylist_form_data("copy") u = entitydata_list_type_url("testcoll", layout.FIELD_TYPEID, list_id="Field_list") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") c = "continuation_url" e = error_head="Problem%20with%20input&error_message=No%20data%20record%20selected%20to%20copy" self.assertIn(TestHostUri + u, r['location']) self.assertNotIn(c, r['location']) self.assertIn(e, r['location']) return
def test_post_copy_type_entity_select_many(self): f = entitylist_form_data( "copy", entities=[layout.FIELD_TYPEID+"/field1", "testtype/entity1", "testtype/entity2"] ) u = entitydata_list_type_url("testcoll", "testtype") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e = TestHostUri + u + "?error_head=Problem%20with%20input&error_message=" self.assertIn(e, r['location']) return
def test_post_delete_site_entity(self): f = entitylist_form_data("delete", entities=[layout.FIELD_TYPEID+"/Field_comment"]) u = entitydata_list_type_url("testcoll", layout.FIELD_TYPEID, list_id="Field_list") # log.info("entitydata_list_all_url: %s"%u) r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e1 = TestHostUri + u + "?error_head=Problem%20with%20input&error_message=" self.assertIn(e1, r['location']) e2 = "Cannot%20remove%20site%20built-in%20entity%20Field_comment" self.assertIn(e2, r['location']) return
def test_post_view_no_type(self): # Redisplay list with entries matching search string f = entitylist_form_data("list_all", list_id="Type_list") u = entitydata_list_all_url("testcoll", list_id="Default_list") 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_list_all_url("testcoll", list_id="Type_list") c = continuation_url_param(collection_edit_url("testcoll")) self.assertIn(v, r['location']) self.assertNotIn("continuation_url", r['location']) return
def test_post_copy_type_entity(self): # Also tests continuation_url parameter handling s = site_view_url() f = entitylist_form_data("copy", entities=[layout.FIELD_TYPEID+"/field1"], continuation_url=s) u = entitydata_list_type_url("testcoll", layout.FIELD_TYPEID, list_id="Field_list") 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("copy", "testcoll", layout.FIELD_TYPEID, "field1", view_id="Field_view") c = continuation_url_param(u, continuation_url_param(s)) self.assertIn(v, r['location']) self.assertIn(c, r['location']) return
def test_post_close_no_continuation(self): # 'Close' button on list view with no continuation URI given in form f = entitylist_form_data("close", entities=["testtype/entity1", "testtype/entity2"], continuation_url="" ) u = entitydata_list_type_url("testcoll", "testtype") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") v = TestHostUri + collection_view_url(coll_id="testcoll") self.assertEqual(v, r['location']) return
def test_post_edit_type_entity_select_many(self): f = entitylist_form_data("edit", entities=["testtype/entity1", "testtype/entity2"]) u = entitydata_list_type_url("testcoll", "testtype") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e1 = TestHostUri + u e2 = "error_head=%s"%(uri_quote_param(message.INPUT_ERROR),) e3 = "error_message=" self.assertIn(e1, r['location']) self.assertIn(e2, r['location']) self.assertIn(e3, r['location']) return
def test_post_copy_type_entity_select_none(self): f = entitylist_form_data("copy") u = entitydata_list_type_url("testcoll", "testtype") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") e1 = TestHostUri + u e2 = "error_head=%s"%(uri_quote_param(message.INPUT_ERROR),) e3 = "error_message=%s"%(uri_quote_param(message.NO_ENTITY_FOR_COPY),) self.assertIn(e1, r['location']) self.assertIn(e2, r['location']) self.assertIn(e3, r['location']) return
def test_post_new_all_entity(self): # Also tests continuation_url parameter handling #@@ s = site_view_url() s = collection_view_url(coll_id="testcoll") f = entitylist_form_data("new", list_id="Field_list", continuation_url=s) u = entitydata_list_all_url("testcoll", list_id="Field_list") 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", layout.FIELD_TYPEID, view_id="Field_view" ) c = continuation_url_param(u, continuation_url_param(s)) self.assertIn(v, r['location']) self.assertIn(c, r['location']) return
def test_post_default_list(self): # This button makes the current list view default for the collection f = entitylist_form_data("default_view", list_id="View_list") u = entitydata_list_type_url("testcoll", "_type", list_id="Type_list") 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_list_type_url("testcoll", "_type", list_id="Type_list") h = "info_head=Action%20completed" m = "info_message=.*view.*testcoll.*Type_list" c = continuation_url_param(collection_edit_url("testcoll")) self.assertIn(v, r['location']) self.assertIn(h, r['location']) self.assertMatch(r['location'], m) self.assertNotIn("continuation_url", r['location']) return
def test_post_view_search(self): # Redisplay list with entries matching search string f = entitylist_form_data("list_type", search="search&term", continuation_url="/xyzxy/") u = entitydata_list_type_url("testcoll", "testtype") 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_list_type_url( "testcoll", "testtype", list_id="Default_list" ) c = continuation_url_param("/xyzxy/") s = "search=search%26term" self.assertIn(v, r['location']) self.assertIn(c, r['location']) self.assertIn(s, r['location']) # Note: Search rendering tested by test_get_fields_list_search above return