# Copyright 2014 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import email import time import unittest import distixlib class TicketTests(unittest.TestCase): def test_has_empty_metadata_initially(self): ticket = distixlib.Ticket() self.assertListEqual(ticket.get_metadata_keys(), []) def test_has_metadata_object(self): ticket = distixlib.Ticket() self.assertIsInstance( ticket.get_ticket_metadata(), distixlib.Metadata) def test_replaces_all_metadata(self): ticket = distixlib.Ticket() metadata = distixlib.Metadata() ticket.set_ticket_metadata(metadata) self.assertEqual(ticket.get_ticket_metadata(), metadata) def test_returns_None_as_ticket_id_initially(self): ticket = distixlib.Ticket() self.assertIsNone(ticket.get_ticket_id()) def test_returns_ticket_id_as_set(self): ticket = distixlib.Ticket() ticket.set_ticket_id('this-is-my-id') self.assertEqual(ticket.get_ticket_id(), 'this-is-my-id') def test_returns_ticket_id_None_instead_of_words_if_unset(self): ticket = distixlib.Ticket() self.assertEqual(ticket.get_ticket_id_as_words(), None) def test_returns_ticket_id_as_words(self): ticket = distixlib.Ticket() ticket.set_ticket_id('010203') self.assertEqual( ticket.get_ticket_id_as_words(), 'absurd aftermath acme') def test_raises_error_if_setting_id_of_ticket_with_id(self): ticket = distixlib.Ticket() ticket.set_ticket_id('this-is-my-id') self.assertRaises( distixlib.TicketAlreadyHasId, ticket.set_ticket_id, 'other-id') def test_returns_None_as_title_initially(self): ticket = distixlib.Ticket() self.assertIsNone(ticket.get_title()) def test_returns_title_as_set(self): ticket = distixlib.Ticket() ticket.set_title('a title it is') self.assertEqual(ticket.get_title(), 'a title it is') def test_removes_all_existing_titles_when_setting_title(self): ticket = distixlib.Ticket() ticket.add_metadata_key_value_pair('title', 'one') ticket.add_metadata_key_value_pair('title', 'two') ticket.set_title('a title it is') self.assertEqual(ticket.get_title(), 'a title it is') def test_has_no_messages_initially(self): ticket = distixlib.Ticket() self.assertListEqual(ticket.get_messages(), []) def test_adds_a_message(self): ticket = distixlib.Ticket() msg = 'this is a fake message' ticket.add_message(msg) self.assertListEqual(ticket.get_messages(), [msg]) def test_adding_a_message_makes_ticket_dirty(self): ticket = distixlib.Ticket() msg = 'this is a fake message' ticket.add_message(msg) self.assertTrue(ticket.is_dirty()) def test_remembers_added_messages(self): ticket = distixlib.Ticket() msg = 'this is a fake message' ticket.add_message(msg) self.assertListEqual(ticket.get_dirty_messages(), [msg]) def test_making_ticket_clean_forgets_added_messages(self): ticket = distixlib.Ticket() msg = 'this is a fake message' ticket.add_message(msg) ticket.make_clean() self.assertListEqual(ticket.get_dirty_messages(), []) def test_get_dirty_messages_returns_only_added_messags(self): ticket = distixlib.Ticket() msg1 = 'msg1' msg2 = 'msg2' ticket.add_message(msg1) ticket.make_clean() ticket.add_message(msg2) self.assertListEqual(ticket.get_dirty_messages(), [msg2]) def test_is_clean_initially(self): ticket = distixlib.Ticket() self.assertFalse(ticket.is_dirty()) def test_setting_metadata_makes_ticket_dirty(self): ticket = distixlib.Ticket() metadata = distixlib.Metadata() ticket.set_ticket_metadata(metadata) self.assertTrue(ticket.is_dirty()) def test_setting_metadata_key_value_pair_makes_ticket_dirty(self): ticket = distixlib.Ticket() ticket.add_metadata_key_value_pair('foo', 'bar') self.assertTrue(ticket.is_dirty()) def test_setting_ticket_id_makes_ticket_dirty(self): ticket = distixlib.Ticket() ticket.set_ticket_id('foo') self.assertTrue(ticket.is_dirty()) def test_setting_ticket_title_makes_ticket_dirty(self): ticket = distixlib.Ticket() ticket.set_title('foo') self.assertTrue(ticket.is_dirty()) def test_can_be_made_clean(self): ticket = distixlib.Ticket() ticket.set_title('foo') ticket.make_clean() self.assertFalse(ticket.is_dirty()) def test_returns_None_for_newest_message_time_if_no_messages(self): ticket = distixlib.Ticket() self.assertEqual(ticket.get_newest_message_timestamp(), None) def test_returns_time_of_newest_message(self): msg = email.message.Message() msg['Date'] = 'Wed, 09 Mar 2016 15:37:05 +0200' ticket = distixlib.Ticket() ticket.add_message(msg) t = ticket.get_newest_message_timestamp() tm = time.gmtime(t) self.assertEqual(tm.tm_year, 2016) self.assertEqual(tm.tm_mon, 3) self.assertEqual(tm.tm_mday, 9) self.assertEqual(tm.tm_hour, 13) self.assertEqual(tm.tm_min, 37) self.assertEqual(tm.tm_sec, 5)