class AirportTestCase(unittest.TestCase):

    def setUp(self):
        self.airport = Airport(20,[])
        self.plane = MagicMock()

    def test_planes_default_empty(self):
        self.assertEqual(self.airport.planes,[])

    def test_planes_can_be_overriden(self):
        self.airport = Airport(20, [self.plane])
        self.assertEqual(self.airport.planes,[self.plane])

    def test_capacity_default(self):
        self.assertEqual(self.airport.capacity, self.airport._DEFAULTCAPACITY)

    def test_capacity_can_be_overriden(self):
        self.random_capacity = 100
        self.airport = Airport(self.random_capacity)
        self.assertEqual(self.airport.capacity, self.random_capacity)

    def test_isFull_returns_true_when_airport_at_capacity(self):
        self.airport = Airport(1, [self.plane])
        self.assertTrue(self.airport.is_full())

    def test_isFull_returns_false_when_airport_not_full(self):
        self.assertFalse(self.airport.is_full())

    def test_land_plane_stores_plane_in_airport(self):
        self.airport.land_plane(self.plane)
        self.assertEqual(self.airport.planes, [self.plane])

    def test_land_plane_prevented_when_is_full_True(self):
        self.airport = Airport(1, [self.plane])
        with self.assertRaisesRegexp(Exception, 'Airport is Full'):
            self.airport.land_plane(self.plane)

    def test_take_off_plane_causes_plane_to_leave(self):
        self.airport.land_plane(self.plane)
        self.airport.take_off_plane(self.plane)
        self.assertEqual(self.airport.planes, [])