Exemple #1
0
class TestRoom(unittest.TestCase):
    def setUp(self):
        self.person_1 = Guest("Singy McSingface", 36, 50,
                              "Never Gonna Give You Up", "Beer")
        self.person_2 = Guest("Dancy McDanceface", 30, 60, "Sandstorm", "Wine")
        self.song_1 = Song("Never Gonna Give You Up", "Rick Astley", "Pop")
        self.song_2 = Song("Sandstorm", "Darude", "Dance")
        self.room = Room("Room 1", 5, 10)
        drinks = {"Beer": 4, "Wine": 8, "Whiskey": 5, "Vodka": 2}
        self.bar = Bar("Karaoke Bar", 100, drinks)

    def test_room_capacity(self):
        self.assertEqual(5, self.room.capacity)

    def test_room_name(self):
        self.assertEqual("Room 1", self.room.room_name)

    def test_check_in_guest(self):
        self.room.check_in_guest(self.person_1)
        self.assertEqual("Singy McSingface", self.room.guests[0].name)

    def test_check_out_guest(self):
        self.room.check_in_guest(self.person_1)
        self.room.check_out_guest(self.person_1)
        self.assertEqual([], self.room.guests)

    def test_add_song(self):
        self.room.add_song(self.song_1)
        self.assertEqual("Never Gonna Give You Up", self.room.songs[0].name)

    def test_check_in_guest__reached_capacity(self):
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.assertEqual(5, len(self.room.guests))

    def test_check_in_guest__returns_string(self):
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_1)
        self.assertEqual("Sorry, room is full",
                         self.room.check_in_guest(self.person_1))

    def test_remove_cash_on_check_in(self):
        self.room.check_in_guest(self.person_1)
        self.assertEqual(40, self.person_1.cash)

    def test_play_song__title_and_artist(self):
        self.assertEqual(
            "Next up we have Singy McSingface with Never Gonna Give You Up by Rick Astley",
            self.room.play_song(self.song_1, self.person_1))

    def test_get_song_by_name(self):
        self.room.add_song(self.song_1)
        self.assertEqual(self.song_1,
                         self.room.get_song_by_name("Never Gonna Give You Up"))

    def test_add_favourite_songs(self):
        self.room.add_song(self.song_1)
        self.room.add_song(self.song_2)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_2)
        self.room.add_fav_songs_to_playlist()
        self.assertEqual(2, len(self.room.playlist))

    def test_add_favourite_songs__song_not_found(self):
        self.room.add_song(self.song_2)
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_2)
        self.room.add_fav_songs_to_playlist()
        self.assertEqual(1, len(self.room.playlist))

    def test_customer_buys_drink__bar(self):
        self.bar.customer_buys_drink_pay_at_bar(self.person_1)
        self.assertEqual(46, self.person_1.cash)

    def test_customer_buys_drink__tab(self):
        self.bar.customer_buys_drink_add_to_tab(self.room, self.person_1)
        self.assertEqual(4, self.room.tab)

    def test_split_tab(self):
        self.room.check_in_guest(self.person_1)
        self.room.check_in_guest(self.person_2)
        self.bar.customer_buys_drink_add_to_tab(self.room, self.person_1)
        self.bar.customer_buys_drink_add_to_tab(self.room, self.person_2)
        self.room.split_tab()
        self.assertEqual(0, self.room.tab)
        self.assertEqual(34, self.person_1.cash)
        self.assertEqual(44, self.person_2.cash)