class SportServiceTest(unittest.TestCase): def setUp(self): self.mock_ddbb = mock.Mock(spec=Sql) self.sport_service = SportService(self.mock_ddbb) def test_store_sport_should_insert_row_when_sport_has_no_id(self): def mock_select(table, columns, where): call_count = self.mock_ddbb.select.call_count if call_count == 2: return [[1]] return [] self.mock_ddbb.select = mock.Mock(wraps=mock_select) sport = Sport() sport.name = u"Test name" self.sport_service.store_sport(sport) self.mock_ddbb.insert.assert_called_with("sports", "name,weight,met,max_pace,color", [u"Test name", 0.0, None, None, "0000ff"]) def test_store_sport_should_update_row_when_sport_has_id(self): def mock_select(table, columns, where): if columns == "id_sports": return [[1]] else: return [(1, u"", 0, 0, 0, "0")] self.mock_ddbb.select = mock.Mock(wraps=mock_select) sport = Sport() sport.id = 1 sport.name = u"New name" self.sport_service.store_sport(sport) self.mock_ddbb.update.assert_called_with("sports", "name,weight,met,max_pace,color", [u"New name", 0.0, None, None, "0000ff"], "id_sports=1") def test_store_sport_should_return_stored_sport(self): sport_ids = [] def update_sport_ids(*args): sport_ids.append([1]) self.mock_ddbb.insert.side_effect = update_sport_ids def mock_select(table, columns, where): if columns == "id_sports": return sport_ids else: return [(2, u"", 0, 0, 0, "0")] self.mock_ddbb.select = mock.Mock(wraps=mock_select) sport = Sport() stored_sport = self.sport_service.store_sport(sport) self.assertEquals(2, stored_sport.id) def test_store_sport_should_error_when_sport_has_unknown_id(self): self.mock_ddbb.select.return_value = [] sport = Sport() sport.id = 100 try: self.sport_service.store_sport(sport) except(SportServiceException): pass else: self.fail() def test_store_sport_should_error_when_new_sport_has_duplicate_name(self): self.mock_ddbb.select.return_value = [(1, u"Test name", 150, 12.5, 200, "0")] sport = Sport() sport.name = u"Test name" try: self.sport_service.store_sport(sport) except(SportServiceException): pass else: self.fail() def test_store_sport_should_error_when_existing_sport_has_duplicate_name(self): def mock_select(table, columns, where): if columns == pytrainer.core.sport._ID_COLUMN: return [[2]] else: return [(1, u"Test name", 0, 0.0, "0"), (2, u"New name", 0, 0.0, "0")] self.mock_ddbb.select = mock.Mock(wraps=mock_select) sport = Sport() sport.id = 1 sport.name = u"New name" try: self.sport_service.store_sport(sport) except(SportServiceException): pass else: self.fail() def test_get_sport_returns_none_for_nonexistant_sport(self): self.mock_ddbb.select.return_value = [] sport = self.sport_service.get_sport(1) self.assertEquals(None, sport) def test_get_sport_returns_sport_with_id(self): self.mock_ddbb.select.return_value = [(1, u"", 0, 0, 0, "0")] sport = self.sport_service.get_sport(1) self.assertEquals(1, sport.id) def test_get_sport_raises_error_for_id_none(self): try: self.sport_service.get_sport(None) except(ValueError): pass else: self.fail() def test_get_sport_by_name_returns_none_for_nonexistant_sport(self): self.mock_ddbb.select.return_value = [] sport = self.sport_service.get_sport("no such sport") self.assertEquals(None, sport) def test_get_sport_by_name_returns_sport_with_name(self): def mock_select(table, columns, where): if columns == "id_sport": return [(1)] else: return [(1, u"rugby", 0, 0, 0, "0")] self.mock_ddbb.select = mock.Mock(wraps=mock_select) sport = self.sport_service.get_sport("rugby") self.assertEquals(u"rugby", sport.name) def test_get_sport_by_name_raises_error_for_none_sport_name(self): try: self.sport_service.get_sport_by_name(None) except(ValueError): pass else: self.fail() def test_get_all_sports_should_return_all_sports_in_query_result(self): self.mock_ddbb.select.return_value = [(1, u"Test name", 0, 0, 0, "0"), (2, u"Test name 2", 0, 0, 0, "0")] sports = self.sport_service.get_all_sports() self.assertEquals(2, len(sports)) sport1 = sports[0] self.assertEquals(1, sport1.id) sport2 = sports[1] self.assertEquals(2, sport2.id) def test_get_all_sports_should_return_no_sports_when_query_result_empty(self): self.mock_ddbb.select.return_value = [] sports = self.sport_service.get_all_sports() self.assertEquals(0, len(sports)) def test_remove_sport_should_error_when_sport_has_no_id(self): self.mock_ddbb.select.return_value = [(1, u"Test name", 150, 12.5, 200, "0")] sport = Sport() try: self.sport_service.remove_sport(sport) except(SportServiceException): pass else: self.fail() def test_remove_sport_should_error_when_sport_has_unknown_id(self): self.mock_ddbb.select.return_value = [] sport = Sport() sport.id = 100 try: self.sport_service.remove_sport(sport) except(SportServiceException): pass else: self.fail() def test_remove_sport_should_delete_sport_with_specified_id(self): self.mock_ddbb.select.return_value = [[1]] sport = Sport() sport.id = 1 self.sport_service.remove_sport(sport) self.mock_ddbb.delete.assert_called_with("sports", "id_sports=1") def test_remove_sport_should_remove_associated_entries(self): self.mock_ddbb.select.return_value = [[1]] sport = Sport() sport.id = 1 delete_arguments = [] def mock_delete(*args): delete_arguments.append(args) self.mock_ddbb.delete = mock.Mock(wraps=mock_delete) self.sport_service.remove_sport(sport) self.assertEquals(("records", "sport=1"), delete_arguments[0])
class ListviewTest(TestCase): def setUp(self): env = Environment() env.data_path = os.curdir env.create_directories() self.main = mock.Mock() self.main.ddbb = DDBB() self.main.ddbb.connect() self.main.ddbb.create_tables() self.main.profile = Profile() self.main.uc = UC() self.sport_service = SportService(self.main.ddbb) non_linear_sport = self.sport_service.get_sport(1) self.main.ddbb.session.delete(non_linear_sport) self.main.ddbb.session.commit() make_transient(non_linear_sport) non_linear_sport.id = None self.main.ddbb.session.add(non_linear_sport) self.main.ddbb.session.commit() self.main.record = Record(self.sport_service, parent=self.main) self.parent = Main(self.sport_service, parent=self.main) self.main.ddbb.session.add( Activity(sport=non_linear_sport, date=datetime.datetime(2018, 5, 6, 10, 0, 0), duration=1000, distance=25)) self.main.ddbb.session.add( Activity(sport=non_linear_sport, date=datetime.datetime(2018, 1, 6, 10, 0, 0), duration=10000, distance=150)) self.main.ddbb.session.add( Activity(sport=self.sport_service.get_sport(2), date=datetime.datetime(2018, 1, 6, 10, 0, 0), duration=10000, distance=100)) self.main.ddbb.session.commit() def tearDown(self): self.main.ddbb.disconnect() self.main.ddbb.drop_tables() def test_listsearch_all(self): self.assertEqual( len(list(self.main.record.getRecordListByCondition(None))), 3) def test_listsearch_defaults(self): self.assertEqual( len( list( self.main.record.getRecordListByCondition( self.parent.listsearch.condition))), 3) def test_listsearch_sport(self): self.parent.lsa_sport.set_active(3) active = gtk_str(self.parent.lsa_sport.get_active_text()) by_sport = list( self.main.record.getRecordListByCondition( self.parent.listsearch.condition)) self.assertEqual(len(by_sport), 2) self.assertEqual(by_sport[0].sport.name, active) def test_listsearch_distance(self): self.parent.lsa_distance.set_active(4) self.assertEqual( len( list( self.main.record.getRecordListByCondition( self.parent.listsearch.condition))), 1) def test_listsearch_duration(self): self.parent.lsa_duration.set_active(1) self.assertEqual( len( list( self.main.record.getRecordListByCondition( self.parent.listsearch.condition))), 1)
class SportServiceTest(unittest.TestCase): def setUp(self): self.mock_ddbb = DDBB() self.mock_ddbb.connect() self.mock_ddbb.create_tables(add_default=False) self.sport_service = SportService(self.mock_ddbb) def tearDown(self): self.mock_ddbb.disconnect() self.mock_ddbb.drop_tables() def test_store_sport_should_insert_row_when_sport_has_no_id(self): sport = Sport() sport.name = u"Test name" sport = self.sport_service.store_sport(sport) self.assertEqual(1, sport.id) def test_store_sport_should_update_row_when_sport_has_id(self): sport = Sport() sport.name = u"Test name" sport = self.sport_service.store_sport(sport) sport.name = u"New name" self.sport_service.store_sport(sport) sport = self.sport_service.get_sport(1) self.assertEqual(sport.name, u"New name") def test_store_sport_should_return_stored_sport(self): sport = Sport() stored_sport = self.sport_service.store_sport(sport) self.assertEqual(1, stored_sport.id) def test_store_sport_should_error_when_new_sport_has_duplicate_name(self): sport1 = Sport() sport1.name = u"Test name" self.sport_service.store_sport(sport1) sport2 = Sport() sport2.name = u"Test name" try: self.sport_service.store_sport(sport2) except(SportServiceException): pass else: self.fail() def test_store_sport_should_error_when_existing_sport_has_duplicate_name(self): sport1 = Sport() sport1.name = u"Test name" self.sport_service.store_sport(sport1) sport2 = Sport() sport2.name = u"New name" self.sport_service.store_sport(sport2) sport1.name = u"New name" try: self.sport_service.store_sport(sport1) except(SportServiceException): pass else: self.fail() def test_get_sport_returns_none_for_nonexistant_sport(self): sport = self.sport_service.get_sport(1) self.assertEqual(None, sport) def test_get_sport_returns_sport_with_id(self): sport = Sport() sport.name = u"Test name" self.sport_service.store_sport(sport) sport = self.sport_service.get_sport(1) self.assertEqual(1, sport.id) def test_get_sport_raises_error_for_id_none(self): try: self.sport_service.get_sport(None) except(ValueError): pass else: self.fail() def test_get_sport_by_name_returns_none_for_nonexistant_sport(self): sport = self.sport_service.get_sport_by_name("no such sport") self.assertEqual(None, sport) def test_get_sport_by_name_returns_sport_with_name(self): sport1 = Sport() sport1.name = u"rugby" self.sport_service.store_sport(sport1) sport2 = self.sport_service.get_sport_by_name("rugby") self.assertEqual(u"rugby", sport2.name) def test_get_sport_by_name_raises_error_for_none_sport_name(self): try: self.sport_service.get_sport_by_name(None) except(ValueError): pass else: self.fail() def test_get_all_sports_should_return_all_sports_in_query_result(self): sport1 = Sport() sport1.name = u"Test name" self.sport_service.store_sport(sport1) sport2 = Sport() sport2.name = u"Test name 2" self.sport_service.store_sport(sport2) sports = self.sport_service.get_all_sports() self.assertEqual(2, len(sports)) sport1 = sports[0] self.assertEqual(1, sport1.id) sport2 = sports[1] self.assertEqual(2, sport2.id) def test_get_all_sports_should_return_no_sports_when_query_result_empty(self): sports = self.sport_service.get_all_sports() self.assertEqual(0, len(sports)) def test_remove_sport_should_error_when_sport_has_no_id(self): sport = Sport() try: self.sport_service.remove_sport(sport) except(SportServiceException): pass else: self.fail() def test_remove_sport_should_error_when_sport_has_unknown_id(self): sport = Sport() sport.id = 100 try: self.sport_service.remove_sport(sport) except(SportServiceException): pass else: self.fail() def test_remove_sport_should_remove_associated_entries(self): sport = Sport() sport.name = u"Test name" sport = self.sport_service.store_sport(sport) self.sport_service.remove_sport(sport) result = self.sport_service.get_sport(1) self.assertEqual(result, None)
class SportServiceTest(unittest.TestCase): def setUp(self): self.mock_ddbb = DDBB() self.mock_ddbb.connect() self.mock_ddbb.create_tables(add_default=False) self.sport_service = SportService(self.mock_ddbb) def tearDown(self): self.mock_ddbb.disconnect() self.mock_ddbb.drop_tables() def test_store_sport_should_insert_row_when_sport_has_no_id(self): sport = Sport() sport.name = u"Test name" sport = self.sport_service.store_sport(sport) self.assertEquals(1, sport.id) def test_store_sport_should_update_row_when_sport_has_id(self): sport = Sport() sport.name = u"Test name" sport = self.sport_service.store_sport(sport) sport.name = u"New name" self.sport_service.store_sport(sport) sport = self.sport_service.get_sport(1) self.assertEquals(sport.name, u"New name") def test_store_sport_should_return_stored_sport(self): sport = Sport() stored_sport = self.sport_service.store_sport(sport) self.assertEquals(1, stored_sport.id) def test_store_sport_should_error_when_new_sport_has_duplicate_name(self): sport1 = Sport() sport1.name = u"Test name" self.sport_service.store_sport(sport1) sport2 = Sport() sport2.name = u"Test name" try: self.sport_service.store_sport(sport2) except (SportServiceException): pass else: self.fail() def test_store_sport_should_error_when_existing_sport_has_duplicate_name( self): sport1 = Sport() sport1.name = u"Test name" self.sport_service.store_sport(sport1) sport2 = Sport() sport2.name = u"New name" self.sport_service.store_sport(sport2) sport1.name = u"New name" try: self.sport_service.store_sport(sport1) except (SportServiceException): pass else: self.fail() def test_get_sport_returns_none_for_nonexistant_sport(self): sport = self.sport_service.get_sport(1) self.assertEquals(None, sport) def test_get_sport_returns_sport_with_id(self): sport = Sport() sport.name = u"Test name" self.sport_service.store_sport(sport) sport = self.sport_service.get_sport(1) self.assertEquals(1, sport.id) def test_get_sport_raises_error_for_id_none(self): try: self.sport_service.get_sport(None) except (ValueError): pass else: self.fail() def test_get_sport_by_name_returns_none_for_nonexistant_sport(self): sport = self.sport_service.get_sport_by_name("no such sport") self.assertEquals(None, sport) def test_get_sport_by_name_returns_sport_with_name(self): sport1 = Sport() sport1.name = u"rugby" self.sport_service.store_sport(sport1) sport2 = self.sport_service.get_sport_by_name("rugby") self.assertEquals(u"rugby", sport2.name) def test_get_sport_by_name_raises_error_for_none_sport_name(self): try: self.sport_service.get_sport_by_name(None) except (ValueError): pass else: self.fail() def test_get_all_sports_should_return_all_sports_in_query_result(self): sport1 = Sport() sport1.name = u"Test name" self.sport_service.store_sport(sport1) sport2 = Sport() sport2.name = u"Test name 2" self.sport_service.store_sport(sport2) sports = self.sport_service.get_all_sports() self.assertEquals(2, len(sports)) sport1 = sports[0] self.assertEquals(1, sport1.id) sport2 = sports[1] self.assertEquals(2, sport2.id) def test_get_all_sports_should_return_no_sports_when_query_result_empty( self): sports = self.sport_service.get_all_sports() for i in sports: print i.name self.assertEquals(0, len(sports)) def test_remove_sport_should_error_when_sport_has_no_id(self): sport = Sport() try: self.sport_service.remove_sport(sport) except (SportServiceException): pass else: self.fail() def test_remove_sport_should_error_when_sport_has_unknown_id(self): sport = Sport() sport.id = 100 try: self.sport_service.remove_sport(sport) except (SportServiceException): pass else: self.fail() def test_remove_sport_should_remove_associated_entries(self): sport = Sport() sport.name = u"Test name" sport = self.sport_service.store_sport(sport) self.sport_service.remove_sport(sport) result = self.sport_service.get_sport(1) self.assertEquals(result, None)