示例#1
0
class TestCreateRoom(unittest.TestCase):
    """Write Docstring here """
    def setUp(self):
        self.dojo = Dojo()
        self.room_manager = RoomManager()
        self.person_manager = PersonManager()

    def test_created_office_successfully(self):
        initial_room_count = len(self.dojo.all_rooms)
        self.dojo.create_room("office", ['BLUE'])
        value = self.room_manager.get_room_with_a_room_name(
            'Blue', self.dojo.all_rooms)
        self.assertTrue(value)
        self.assertEqual(value.name, 'BLUE')
        self.assertEqual(value.room_type, 'office')
        new_room_count = len(self.dojo.all_rooms)
        room_count_diff = new_room_count - initial_room_count
        self.assertEqual(room_count_diff, 1)

    def test_created_living_space_successfully(self):
        initial_room_count = len(self.dojo.all_rooms)
        self.dojo.create_room('living_space', ['ORANGE'])
        value = self.room_manager.get_room_with_a_room_name(
            'orange', self.dojo.all_rooms)
        self.assertTrue(value)
        self.assertEqual(value.name, 'ORANGE')
        self.assertEqual(value.room_type, 'living_space')
        new_room_count = len(self.dojo.all_rooms)
        room_count_diff = new_room_count - initial_room_count
        self.assertEqual(room_count_diff, 1)

    def test_created_multi_offices_or_living_spaces(self):
        initial_room_count = len(self.dojo.all_rooms)
        self.dojo.create_room('office', ['Orion', 'Dev', 'fly'])
        new_room_count = len(self.dojo.all_rooms)
        room_count_diff = new_room_count - initial_room_count
        self.assertEqual(room_count_diff, 3)

    def test_room_uniqueness(self):
        initial_room_count = len(self.dojo.all_rooms)
        amigo_office = self.dojo.create_room('office', ['amigo', 'amigo'])
        new_room_count = len(self.dojo.all_rooms)
        room_count_diff = new_room_count - initial_room_count
        self.assertEqual(room_count_diff, 1)

    def test_create_room_is_only_for_offices_living_spaces(self):
        initial_room_count = len(self.dojo.all_rooms)
        self.dojo.create_room('kitchen', ['Puerto'])
        new_room_count = len(self.dojo.all_rooms)
        room_count_diff = new_room_count - initial_room_count
        self.assertEqual(room_count_diff, 0)

    def test_max_office_size(self):
        self.dojo.create_room('office', ['MAZE'])
        room = self.room_manager.get_room_with_a_room_name(
            'Maze', self.dojo.all_rooms)
        self.assertEqual(room.max_size, 6)
        self.assertEqual(len(room.occupants), 0)

    def test_max_living_space_size(self):
        self.dojo.create_room('living_space', ['ORION'])
        room = self.room_manager.get_room_with_a_room_name(
            'orion', self.dojo.all_rooms)
        self.assertEqual(room.max_size, 4)
        self.assertEqual(len(room.occupants), 0)

    def test_max_limit_added_office(self):
        self.dojo.create_room('office', ['DEV'])
        room = self.room_manager.get_room_with_a_room_name(
            'Dev', self.dojo.all_rooms)
        self.assertEqual(len(room.occupants), 0)
        self.dojo.add_person('ladi', 'adeniran', 'fellow')
        self.dojo.add_person('ade', 'poju', 'staff')
        self.dojo.add_person('ginu', 'whyne', 'fellow')
        self.dojo.add_person('mark', 'anthony', 'fellow')
        self.dojo.add_person('anthony', 'hamilton', 'fellow')
        self.dojo.add_person('game', 'truce', 'fellow')
        self.dojo.add_person('saliu', 'bryan', 'fellow')
        self.dojo.add_person('zuck', 'beast', 'fellow')
        self.assertEqual(len(room.occupants), 6)

    def tearDown(self):
        del self.dojo
        del self.room_manager
        del self.person_manager
class TestPrintRoom(unittest.TestCase):
    """Test suite for the print_room functionality"""
    def setUp(self):
        self.dojo = Dojo()

    def test_print_room_when_no_rooms(self):
        self.dojo.print_room('Blue')
        value = sys.stdout.getvalue().strip()
        self.assertEqual(value, 'BLUE not a room in Dojo.')

    def test_print_room_invalid_room(self):
        self.dojo.print_room('Valor')
        value = sys.stdout.getvalue().strip()
        self.assertEqual(value, 'VALOR not a room in Dojo.')

    def test_print_room_valid_empty_room(self):
        self.dojo.create_room('living_space', ['Maze'])
        self.dojo.print_room('Maze')
        result = sys.stdout.getvalue().strip()
        self.assertEqual(result[61:], 'MAZE currently has no occupant(s)!')

    def test_print_room_with_office_occupants(self):
        self.dojo.create_room('office', ['Blue'])
        self.dojo.add_person('ladi', 'adeniran', 'fellow')
        self.dojo.add_person('ab', 'soul', 'staff')
        self.dojo.print_room('Blue')
        result = sys.stdout.getvalue().strip()
        self.assertTrue(result)
        self.assertEqual(result[226:],
                         'Ladi Adeniran (FELLOW), Ab Soul (STAFF)')

    def test_print_room_with_living_space_occupants(self):
        self.dojo.create_room('living_space', ['orion'])
        self.dojo.add_person('ladi', 'adeniran', 'fellow', 'y')
        self.dojo.print_room('Orion')
        result = sys.stdout.getvalue().strip()
        self.assertEqual(result[185:], 'Ladi Adeniran (FELLOW)')

    def tearDown(self):
        del self.dojo
 def setUp(self):
     self.dojo = Dojo()
     self.HOME_DIR = expanduser('~')
class TestPrintUnallocated(unittest.TestCase):
    """Test suite for the print_unallocated dojo function"""
    def setUp(self):
        self.dojo = Dojo()
        self.HOME_DIR = expanduser('~')

    def test_print_unallocated_for_no_people(self):
        result = self.dojo.print_unallocated()
        self.assertTrue(result)
        self.assertEqual(result, 'No person in the System Yet!')

    def test_print_no_unallocated_person(self):
        self.dojo.create_room('office', ['QB'])
        self.dojo.add_person('nas', 'escobar', 'fellow')
        result = self.dojo.print_unallocated()
        self.assertFalse(result)

    def test_print_unallocated_to_screen(self):
        self.dojo.add_person('rukky', 'remy', 'staff')
        self.dojo.print_unallocated()
        result = sys.stdout.getvalue().strip()
        self.assertTrue(result)
        self.assertEqual(result[108:128], '1 Rukky Remy (STAFF)')

    def test_print_unallocated_to_file(self):
        self.dojo.add_person('ric', 'hassani', 'fellow')
        value = self.dojo.print_unallocated('unallocated.txt')
        self.assertTrue(value)
        filename = self.HOME_DIR + '/.dojo_data/unallocated.txt'
        self.assertEqual(value, filename)
        unallocated_line1 = linecache.getline(value, 1).strip()
        unallocated_line2 = linecache.getline(value, 2).strip()
        self.assertEqual(unallocated_line1,
                         '(ID) UNALLOCATED LIST OFFICE SPACE')
        self.assertEqual(unallocated_line2, '1 Ric Hassani (FELLOW)')

    def test_valid_people_id(self):
        self.dojo.add_person('remy', 'ma', 'staff')
        self.dojo.add_person('travis', 'greene', 'staff')
        self.dojo.add_person('temmy', 'orwase', 'fellow')
        self.dojo.people_id()
        result = sys.stdout.getvalue().strip()
        self.assertTrue(result)

    def tearDown(self):
        del self.dojo
class TestPrintAllocations(unittest.TestCase):
    """This test suite tests the Print Allocations functionality."""
    def setUp(self):
        self.dojo = Dojo()
        self.HOME_DIR = expanduser('~')

    def test_print_allocations_when_no_room(self):
        self.dojo.print_allocations()
        result = sys.stdout.getvalue().strip()
        self.assertEqual(result, 'There are currently no rooms in Dojo.')

    def test_print_allocations_to_screen(self):
        self.dojo.create_room('office', ['idanre'])
        self.dojo.print_allocations()
        result = sys.stdout.getvalue().strip()
        self.assertTrue(result)
        self.assertEqual(result[104:], 'IDANRE has no occupants')

    def test_print_allocations_to_file(self):
        # test that file is valid and was written into.
        self.dojo.create_room('office', ['Blue'])
        self.dojo.add_person('ladi', 'ade', 'fellow')
        result = self.dojo.print_allocations('allocations')
        self.assertTrue(result)
        file_name = self.HOME_DIR + '/.dojo_data/allocations.txt'
        self.assertEqual(result, file_name)
        room_name = linecache.getline(result, 1).strip()
        allocations_line = linecache.getline(result, 3).strip()
        self.assertEqual(room_name, 'BLUE office')
        self.assertEqual(allocations_line, 'Ladi Ade (FELLOW)')

    def tearDown(self):
        del self.dojo
class TestReallocatePerson(unittest.TestCase):
    """Test suite for the reallocate person functionality"""
    def setUp(self):
        self.dojo = Dojo()

    def test_index_id_room(self):
        self.dojo.reallocate_person(1, 'Blue')
        result = sys.stdout.getvalue().strip()
        self.assertEqual(result, 'Id/Room_Name not found!')

    def test_not_reallocate_to_present_room(self):
        self.dojo.create_room('office', ['Orion'])
        self.dojo.add_person('ladi', 'adeniran', 'fellow')
        self.dojo.reallocate_person(1, 'ORION')
        result = sys.stdout.getvalue().strip()
        self.assertEqual(result[147:],
                         'You cannot reallocate person to current room.')

    def test_reallocate_fellow_staff_with_office(self):
        self.dojo.create_room('office', ['Naples'])
        self.dojo.add_person('brian', 'houston', 'fellow')
        self.dojo.add_person('ben', 'ayade', 'staff')
        fellow = self.dojo.people[0]
        staff = self.dojo.people[1]
        self.assertEqual(fellow.office, 'NAPLES')
        self.assertEqual(staff.office, 'NAPLES')
        self.dojo.create_room('office', ['Vienna'])
        self.dojo.reallocate_person(1, 'Vienna')
        self.dojo.reallocate_person(2, 'Vienna')
        self.assertEqual(fellow.office, 'VIENNA')
        self.assertEqual(staff.office, 'VIENNA')

    def test_reallocate_fellow_staff_with_no_office(self):
        self.dojo.add_person('ladi', 'adeniran', 'fellow')
        self.dojo.add_person('bayo', 'emmanuel', 'staff')
        fellow = self.dojo.people[0]
        staff = self.dojo.people[1]
        self.dojo.create_room('office', ['Blue'])
        self.assertFalse(fellow.office)
        self.assertFalse(staff.office)
        self.dojo.reallocate_person(1, 'Blue')
        self.dojo.reallocate_person(2, 'Blue')
        self.assertEqual(fellow.office, 'BLUE')
        self.assertEqual(staff.office, 'BLUE')

    def test_cannot_reallocate_to_full_room(self):
        self.dojo.create_room('office', ['Orion'])
        self.dojo.add_person('vie', 'ajah', 'fellow')
        self.dojo.add_person('dave', 'ajah', 'fellow')
        self.dojo.add_person('vie', 'emma', 'fellow')
        self.dojo.add_person('sojay', 'ajah', 'fellow')
        self.dojo.add_person('vie', 'beor', 'fellow')
        self.dojo.add_person('victor', 'anichebe', 'staff')
        self.dojo.add_person('kuti', 'mane', 'fellow')
        fellow = self.dojo.people[6]
        self.assertFalse(fellow.office)

    def test_invalid_person_id(self):
        self.dojo.add_person('ladi', 'adeniran', 'staff')
        self.dojo.create_room('office', ['Mane'])
        self.dojo.reallocate_person('1', 'orion')
        msg = sys.stdout.getvalue().strip()
        self.assertEqual(msg[130:], 'Person cannot be reallocated the room')

    def tearDown(self):
        del self.dojo