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