コード例 #1
0
class TestClientService(unittest.TestCase):
    def setUp(self):
        self._client_validator = ClientValidator()
        self._client_repository = Repository({})
        self._client_service = ClientService(self._client_repository, self._client_validator)
        self._client_service.add_client('1', 'King Arthur')
        self._client_service.add_client('2', 'Im Somebody')
        self._client_service.add_client('3', 'Some random dude')
        try:
            self._client_service.add_client('4', '43')
        except ClientValidatorException:
            pass

    def test_client_add(self):
        a = self._client_repository.get_entities()

        self.assertEqual(len(a), 3)
        self.assertEqual(a['1'].name, 'King Arthur')
        self.assertEqual(a['2'].name, 'Im Somebody')
        self.assertEqual(a['3'].name, 'Some random dude')

    def test_client_remove(self):
        self._client_service.remove_client('1')
        a = self._client_repository.get_entities()
        assert len(a) == 2
        self.assertEqual(self._client_repository.find_by_id('1'), None)

    def test_search_by_id(self):
        a = self._client_service.search_client_by_id('1')
        self.assertEqual(a[0].id, '1')
        self.assertEqual(a[0].name, 'King Arthur')

    def test_search_by_name(self):
        a = self._client_service.search_client_by_name('King')
        self.assertEqual(a[0].id, '1')
        self.assertEqual(a[0].name, 'King Arthur')
        self.assertEqual(len(a), 1)
コード例 #2
0
class TestUndoService(unittest.TestCase):
    def setUp(self):
        """
        Prepare tests
        """
        self.rental_repository = Repository({})
        self.validator2 = RentalValidator()
        self.book_repository = Repository({})
        self.validator = BookValidator()
        self.client_repository = Repository({})
        self.validatorc = ClientValidator()
        self.undo_service = UndoService()
        self.redo_service = RedoService()
        self.book_service = BookService(self.book_repository, self.validator)
        self.client_service = ClientService(self.client_repository, self.validatorc)
        self.rental_service = RentalService(self.rental_repository, self.validator2, self.book_repository,
                                            self.client_repository)

    def test_undo_controller(self):
        """
        Tests for undo controller
        """
        self.assertRaises(UndoException, self.undo_service.do_undo)
        self.assertRaises(RedoException, self.redo_service.do_redo)

        self.book_service.add_book('12', "the name", 'By me')
        self.undo_service.store_operation(self.book_service, UndoHandler.UNDO_ADD_BOOK, '12')
        self.undo_service.do_undo()
        self.assertTrue(len(self.book_service.get_entities()) == 0)
        self.redo_service.store_operation(self.book_service, RedoHandler.REDO_ADD_BOOK, '12', "the name", "By me")

        self.redo_service.do_redo()
        self.assertTrue(len(self.book_service.get_entities()) == 1)
        self.book_service.add_book('2', "the name", 'By me')
        self.book_service.remove_book('2')
        self.undo_service.store_operation(self.book_service, UndoHandler.UNDO_REMOVE_BOOK, '2', "The Mandalorian", "Didu")
        self.undo_service.do_undo()

        self.undo_service.store_operation(self.book_service, UndoHandler.UNDO_UPDATE_BOOK, '2', "The Mandalorian","Didu")
        self.undo_service.do_undo()
        self.redo_service.store_operation(self.book_service, RedoHandler.REDO_UPDATE_BOOK, '2', "The Mandalorian","Didu")
        self.redo_service.do_redo()

        self.client_service.add_client("10", "andrei")
        self.undo_service.store_operation(self.client_service, UndoHandler.UNDO_ADD_CLIENT, '10')
        self.undo_service.do_undo()
        self.assertTrue(len(self.client_service.get_entities()) == 0)
        self.redo_service.store_operation(self.client_service, RedoHandler.REDO_ADD_CLIENT, "10", "andrei")
        self.redo_service.do_redo()
        self.assertTrue(len(self.client_service.get_entities()) == 1)

        self.client_service.remove_client('10')
        self.undo_service.store_operation(self.client_service, UndoHandler.UNDO_REMOVE_CLIENT, '10', 'andrei')
        self.undo_service.do_undo()
        self.redo_service.store_operation(self.client_service, RedoHandler.REDO_REMOVE_CLIENT, '10')
        self.redo_service.do_redo()

        self.client_service.add_client('2', "Didu")
        self.undo_service.store_operation(self.client_service, UndoHandler.UNDO_UPDATE_CLIENT, '2', "Didu")
        self.undo_service.do_undo()
        self.redo_service.store_operation(self.client_service, RedoHandler.REDO_UPDATE_CLIENT, '2', 'Didu')
        self.redo_service.do_redo()

        self.rental_service.add_rental('1', '2', '2', '20/10/2020')
        self.undo_service.store_operation(self.rental_service, UndoHandler.UNDO_ADD_RENTAL, '1')
        self.undo_service.do_undo()
        self.redo_service.store_operation(self.rental_service, RedoHandler.REDO_ADD_RENTAL, '1', '2', '2', '20/10/2020','')
        self.redo_service.do_redo()

        self.book_service.add_book('20', "book", 'By me')
        self.book_service.remove_book('20')
        self.undo_service.store_operation(self.book_service, UndoHandler.UNDO_REMOVE_BOOK, '20', "book", "By me")
        self.undo_service.do_undo()
        self.redo_service.store_operation(self.book_service, RedoHandler.REDO_REMOVE_BOOK, '20')
        self.redo_service.do_redo()

        self.redo_service.clear()
コード例 #3
0
class TestRentalService(unittest.TestCase):
    def setUp(self):
        self._book_validator = BookValidator()
        self._book_repository = Repository({})
        self._book_service = BookService(self._book_repository, self._book_validator)
        self._client_validator = ClientValidator()
        self._client_repository = Repository({})
        self._client_service = ClientService(self._client_repository, self._client_validator)
        self._rental_validator = RentalValidator()
        self._rental_repository = Repository({})
        self._rental_service = RentalService(self._rental_repository, self._rental_validator, self._book_repository,self._client_repository)

        self._book_service.add_book('1', 'The Book', 'King Arthur')
        self._book_service.add_book('2', 'The Prize', 'Im Somebody')
        self._book_service.add_book('3', 'Im Out Of Ideeas', 'Some random dude')

        self._client_service.add_client('1', 'Raiu Madalin')
        self._client_service.add_client('2', 'Ristei Elena')
        self._client_service.add_client('3', 'Another random dude')

        self._rental_service.add_rental('1', '2', '3', '10/10/2019')
        self._rental_service.add_rental('2', '1', '2', '02/03/2019')
        try:
            self._rental_service.add_rental('2', '1', '2', '02/03/2019')
        except RentalValidatorException as ve:
            pass
        except RepositoryException:
            pass
        self._rental_service.set_return_date('2', '02/03/2020')
        self._rental_service.add_rental('3', '1', '3', '02/03/2019')
        try:
            self._rental_service.add_rental('4', '3', '1223', '02/03/2019')
        except RentalValidatorException:
            pass
        try:
            self._rental_service.add_rental('134', '444', '1223', '02/03/2019')

        except RentalValidatorException:
            pass
        try:
            self._rental_service.add_rental('134', '3', '2', '02/03/2019')
            self._rental_service.add_rental('134', '3', '2', '02/03/2019')
        except RentalValidatorException:
            pass
        except RepositoryException:
            pass

        try:
            self._rental_service.add_rental('134', '3', '2', '0d/s3/2019')

        except RentalValidatorException:
            pass

    def test_rental_add(self):
        a = self._rental_repository.get_entities()
        self.assertEqual(len(a), 4)
        self.assertEqual(a['1'].book_id, '2')
        self.assertEqual(a['1'].client_id, '3')
        self.assertEqual(a['1'].rented_date, '10/10/2019')
        self.assertEqual(a['1'].data, 'This book is not returned yet')

    def test_rental_return(self):
        a = self._rental_repository.get_entities()
        self.assertEqual(a['1'].data, 'This book is not returned yet')

        self._rental_service.set_return_date('1', '20/10/2020')
        self.assertEqual(a['1'].data, '20/10/2020')
        self.assertEqual(a['3'].data, 'This book is not returned yet')
        try:
            self._rental_service.set_return_date('1', '20/10/2020')
        except RentalValidatorException:
            pass
        try:
            self._rental_service.set_return_date('3', '01/03/2019')
        except RentalValidatorException:
            pass
        try:
            self._rental_service.set_return_date('3', '02/02/2019')

        except RentalValidatorException:
            pass
        try:
            self._rental_service.set_return_date('3', '02/03/2018')

        except RentalValidatorException:
            pass

    def test_most_rented_books(self):
        self._rental_service.set_return_date('1', '20/10/2020')
        a, b = self._rental_service.most_rented_books()
        self.assertEqual(a[0], 'The Book')
        self.assertEqual(b[0], 2)

    def test_most_rented_authors(self):
        a, b = self._rental_service.most_rented_authors()
        self.assertEqual(a[0], 'King Arthur')
        self.assertEqual(b[0], 2)
        self.assertEqual(a[1], 'Im Somebody')
        self.assertEqual(b[1], 1)

    def test_most_active_clients(self):
        self._rental_service.set_return_date('1', '20/10/2020')
        a, b = self._rental_service.most_active_clients()
        self.assertEqual(a[0], 'Another random dude')
        self.assertEqual(b[0], 376)

    def test_rental_print(self):
        a = self._rental_service.print_rentals()
        self.assertNotEqual(len(a), 0)