class EMAPAClipboardsResource(Resource): clipboard_service = EMAPAClipboardService() @as_json def get(self): """ Get list of clipboard items """ results = SearchResults() if current_user.is_authenticated: results = self.clipboard_service.get_clipboard_items( current_user._user_key) return results.serialize() @api.marshal_with(clipboard_edit_model) def post(self): """ Add clipboard items """ args = request.get_json() # HACK: # ensure arguments are strings, not integers emapa_id = args['emapa_id'] if emapa_id: emapa_id = str(emapa_id) stagesToAdd = args['stagesToAdd'] if stagesToAdd: stagesToAdd = str(stagesToAdd) check_permission() set_members = self.clipboard_service.add_items(current_user._user_key, emapa_id, stagesToAdd) # return success with no content return clipboard_list_json(set_members) @as_json def delete(self): """ Delete all clipboard items """ check_permission() self.clipboard_service.delete_all_items(current_user._user_key) print("DELETE ALL THE ITEMS") return {"success": True}
class EmapaClipboardSortResource(Resource): clipboard_service = EMAPAClipboardService() @api.doc('sort_emapa_clipboard') def get(self): """ Sort EMAPA Clipboard """ check_permission() self.clipboard_service.sort_clipboard(current_user._user_key) return {"success": True}
class EMAPAClipboardResource(Resource): clipboard_service = EMAPAClipboardService() @as_json def delete(self, key): """ Delete single clipboard item """ check_permission() self.clipboard_service.delete_item(key, current_user._user_key) return {"success": True}
def setUp(self): self.clipboard_service = EMAPAClipboardService() self.seqnum = 1
class ClipboardSortTest(unittest.TestCase): """ Test stage, term sorting """ def setUp(self): self.clipboard_service = EMAPAClipboardService() self.seqnum = 1 def tearDown(self): self.seqnum = 1 def test_different_stage(self): l = [ self.mockClipboardItem("term1", 20), self.mockClipboardItem("term1", 9) ] self.clipboard_service._sort_items_by_alpha(l) self.assertClipboardOrder(["term1 TS9", "term1 TS20"], l) def test_different_term(self): l = [ self.mockClipboardItem("term12", 10), self.mockClipboardItem("term8", 10) ] self.clipboard_service._sort_items_by_alpha(l) self.assertClipboardOrder(["term8 TS10", "term12 TS10"], l) def test_smart_alpha(self): l = [ self.mockClipboardItem("somite 11", 10), self.mockClipboardItem("somite 5", 10) ] self.clipboard_service._sort_items_by_alpha(l) self.assertClipboardOrder(["somite 5 TS10", "somite 11 TS10"], l) # helper functions def assertClipboardOrder(self, expectedList, actualItems): """ Asserts that expectedList in format ["term TSstage", ...] matches the order of actualItems self.clipboard_service items """ # format actualList actualList = [] for item in actualItems: actualList.append("%s TS%d" % (item.emapa_term.term, item.emapa._stage_key)) self.assertEqual(expectedList, actualList) def mockClipboardItem(self, term, stage): """ Create a mock SetMember object for testing """ setMember = SetMember() # always set with and increment seqnum counter setMember.sequencenum = self.seqnum self.seqnum += 1 # set the term vocTerm = VocTerm() vocTerm.term = term setMember.emapa_term = vocTerm # set the stage setMemberEMAPA = SetMemberEMAPA() setMemberEMAPA._stage_key = stage setMember.emapa = setMemberEMAPA return setMember