Example #1
0
    def setUp(self):
        db = Database(":memory:")
        stuffs = []
        for stuff_type, stuff_names in STUFFS.iteritems():
            stuffs.extend([Stuff(stuff_type, name, db)
                           for name in stuff_names])

        self.uut = Api(stuffs)
Example #2
0
class TestApi(unittest.TestCase):

    def setUp(self):
        db = Database(":memory:")
        stuffs = []
        for stuff_type, stuff_names in STUFFS.iteritems():
            stuffs.extend([Stuff(stuff_type, name, db)
                           for name in stuff_names])

        self.uut = Api(stuffs)

    def assertIsAvailable(self, result):
        self.assertIsNone(result.user_name)
        self.assertIsNone(result.reservation_start)

    def assertIsReserved(self, name, result):
        self.assertEqual(name, result.user_name)
        self.assertIsNotNone(result.reservation_start)

    def test_when_list_stuff_called_then_all_stuff_returned(self):
        result = self.uut.list_stuff()

        self.assertEquals(len(STUFFS), len(result))
        self.assertIsAvailable(result[TYPE_1][STUFF_1])
        self.assertIsAvailable(result[TYPE_2][STUFF_2])

    def test_when_status_called_and_stuff_exists_then_return_status_ok(self):
        self.assertIsAvailable(self.uut.status(STUFF_1))

    def test_when_status_called_and_stuff_not_exists_then_return_nok(self):
        self.assertEquals(Stuff.NOK, self.uut.status(STUFF_3))

    def test_when_stuff_reserved_then_return_status_nok(self):
        self.assertTrue(self.uut.reserve_stuff(STUFF_1, USER))

        result = self.uut.status(STUFF_1)
        self.assertEqual(result.type, TYPE_1)
        self.assertEqual(result.name, STUFF_1)
        self.assertEqual(result.user_name, USER)
        self.assertIsNotNone(result.reservation_start)

    def test_should_return_false_when_reserve_called_more_than_once(self):
        self.assertTrue(self.uut.reserve_stuff(STUFF_1, USER))
        self.assertFalse(self.uut.reserve_stuff(STUFF_1, USER))

    def test_when_stuff_not_exist_then_reserve_return_false(self):
        self.assertFalse(self.uut.reserve_stuff(STUFF_3, USER))

    def test_should_release_stuff_when_reserved(self):
        self.uut.reserve_stuff(STUFF_1, USER)
        self.assertTrue(self.uut.release(STUFF_1))

    def test_when_reservation_not_exist_then_return_false(self):
        self.assertFalse(self.uut.release(STUFF_1))

    def test_when_staff_reserved_then_list_should_be_updated(self):
        self.uut.reserve_stuff(STUFF_1, USER)

        result = self.uut.list_stuff()
        self.assertEquals(len(STUFFS), len(result))
        self.assertIsReserved(USER, result[TYPE_1][STUFF_1])
        self.assertIsAvailable(result[TYPE_2][STUFF_2])

    def test_when_no_available_stuff_with_given_type_then_return_false(self):
        self.assertFalse(self.uut.reserve(TYPE_3, USER))

    def test_should_return_stuff_name_when_is_available(self):
        self.assertEquals(STUFF_1, self.uut.reserve(TYPE_1, USER))
        self.assertFalse(self.uut.reserve(TYPE_1, USER))