def test_get_route_record_for_multi_routes(self): user_id = 1 route_id = [1, 2] dal = Dal.get_dal() create_sample_route_record(record_type=[1, 0]) route_record = dal = Dal.get_dal().get_route_record_for_user( user_id, route_id) # breakpoint() self.assertEqual(route_record['record_type'][0], 1) self.assertEqual(route_record['record_type'][1], 0)
def add_sample_route_set(gym_id, colour='black', grade=['high', 'medium'], down_date=None, up_date='03/06/2019'): dal = Dal.get_dal() dal.add_route_set(gym_id, colour, grade, up_date, down_date=down_date)
def test_record_num_climbed_for_user(self): user_id = 1 route_id = 1 record_type_arb = 1 user_2 = 2 route_id_2 = 2 record_type_is_climbed = conf.ClimbStatus.climbed.value create_auth_user() create_auth_user(name='new_user') add_sample_data() dal = Dal.get_dal() dal.set_route_record_for_user(user_2, route_id, record_type_arb) dal.set_route_record_for_user(user_2, route_id_2, record_type_is_climbed) dal.set_route_record_for_user(user_2, route_id_2, record_type_is_climbed) dal.set_route_record_for_user(user_2, route_id_2, record_type_is_climbed) breakpoint() data_2 = dal.get_records_for_active_routes(user_id=user_2) num_climbed = data_2['num_climbed'] self.assertEqual(num_climbed[0], 1) self.assertEqual(num_climbed[1], 3)
def test_get_records_for_active_routes_with_record_date(self): user_id = 1 route_id = 1 record_type = conf.ClimbStatus.climbed.value self.add_sample_data_active() create_auth_user() dal = Dal.get_dal() profile = Profile.objects.all().filter(user__id=user_id)[0] route = Route.objects.all().filter(id=route_id)[0] td = timedelta(days=30) date_base = datetime.now().date() RouteRecord.objects.create(user=profile, route=route, record_type=record_type) RouteRecord.objects.create(user=profile, route=route, record_type=record_type) RouteRecord.objects.filter(id=1).update(date=(date_base - td)) data = dal.get_records_for_active_routes(gym_id=1, user_id=1) self.assertEqual(data['date_climbed'][0], datetime.now().date())
def test_add_route_with_down_date(self): dal = Dal.get_dal() down_date = '04/07/2019' down_date_exp = datetime.strptime(down_date, "%d/%m/%Y").date() add_sample_data(down_date=down_date) data = dal.get_routes_all() self.assertEqual(data.get_down_date()[0], down_date_exp)
def test_record_is_climbed_for_user(self): user_id = 1 route_id = 1 record_type_arb = 1 user_2 = 2 route_id_2 = 2 record_type_is_climbed = conf.ClimbStatus.climbed.value create_auth_user() create_auth_user(name='new_user') add_sample_data() dal = Dal.get_dal() dal.set_route_record_for_user(user_id, route_id, record_type_arb) dal.set_route_record_for_user(user_2, route_id_2, record_type_is_climbed) dal.set_route_record_for_user(user_2, route_id_2, record_type_is_climbed) data = dal.get_records_for_active_routes(user_id=1) is_climbed = data['is_climbed'] self.assertEqual(is_climbed[0], True) self.assertEqual(is_climbed[1], False) data_2 = dal.get_records_for_active_routes(user_id=user_2) is_climbed_2 = data_2['is_climbed'] self.assertEqual(is_climbed_2[0], False) self.assertEqual(is_climbed_2[1], True)
def test_get_grade_that_is_active(self): ''' This test asserts that only an active date is returned''' up_date_old = '11/06/2019' up_date_active = '15/06/2019' up_date_future = '11/07/2020' colour_exp = 'red' # Add dates out of order to ensure that it simply is not picking # up the latest and is instead ordering query by date add_sample_data(up_date=up_date_active, grade=['medium'], colour=colour_exp) add_sample_data(up_date=up_date_future, grade=['medium'], colour=colour_exp) add_sample_data(up_date=up_date_old, grade=['medium'], colour=colour_exp) dal = Dal.get_dal() data = dal.get_active_route_set(colour_exp, is_active=True) colour_act = data.get_grade()[0] up_date_act = data.get_up_date()[0] self.assertEqual(colour_act, colour_exp) self.assertEqual(up_date_act, Utils.convert_str_to_datetime(up_date_active)) self.assertEqual(data.get_count(), 1)
def test_record_for_multi_route_sets(self): user_id = 1 route_id = 1 record_type_arb = 1 user_2 = 2 route_id_2 = 2 record_type_is_climbed = conf.ClimbStatus.climbed.value route_id_for_2nd_set = 3 create_auth_user() add_sample_data() add_sample_data(colour='red') dal = Dal.get_dal() dal.set_route_record_for_user(user_2, route_id, record_type_arb) dal.set_route_record_for_user(user_2, route_id_2, record_type_is_climbed) dal.set_route_record_for_user(user_2, route_id_2, record_type_is_climbed) dal.set_route_record_for_user(user_2, route_id_2, record_type_is_climbed) dal.set_route_record_for_user(user_2, route_id_for_2nd_set, record_type_is_climbed) data_2 = dal.get_records_for_active_routes(user_id=user_2) num_climbed = data_2['num_climbed'] self.assertEqual(num_climbed[0], 1) self.assertEqual(num_climbed[1], 3) self.fail()
def test_delete_gym(self): city = 'test' gym = add_sample_gym(city=city) self.assertEqual(Gym.objects.count(), 1) dal = Dal.get_dal() dal._delete_gym(gym.id) self.assertEqual(Gym.objects.count(), 0)
def test_get_records_for_active_routes(self): self.add_sample_data_active() self.add_sample_data_inactive(colour='black') dal = Dal.get_dal() data = dal.get_records_for_active_routes(gym_id=1, user_id=1) self.assertEqual(data['grade'], [conf.Grade.red.value] * 2)
def test_get_route_record_for_non_existent_user(self): user_id = 100 route_id = 1 create_sample_route_record(record_type=[1, 0]) dal = Dal.get_dal() route_record = dal.get_route_record_for_user(user_id, route_id) self.assertEqual(route_record['record_type'], [0])
def test_get_route_record(self): user_id = 1 route_id = 1 create_sample_route_record(record_type=[1, 0]) dal = Dal.get_dal() route_record = dal.get_route_record_for_user(user_id, route_id) self.assertEqual(route_record['record_type'][0], 1)
def test_get_route_set(self): dates = ['04/07/2019', '04/07/2021', '04/06/2019'] add_sample_data(grade=['medium'], up_date=dates[0]) add_sample_route_set(1) dal = Dal.get_dal() data = dal.get_route_set_data(gym_id=1) self.assertEqual(data['up_date'][0], Utils.convert_str_to_datetime(dates[0])) self.assertEqual(data['num_routes'][0], 1) self.assertEqual(data['num_routes'][1], 2) self.fail()
def test_update_gym(self): city = 'test' email = '*****@*****.**' email_new = '*****@*****.**' Gym.objects.raw('TRUNCATE TABLE route,routeset,gym RESTART IDENTITY;') add_sample_gym(city=city, email=email) dal = Dal.get_dal() dal.update_gym(1, email=email_new) self.assertNotEqual(email, email_new)
def test_create_gym(self): email = 'edinburgh@edenrockclimbing,com' city = 'Edinburgh' name = 'Eden Rock Edinburgh' dal = Dal.get_dal() dal.create_gym(name, email, city) gym = Gym.objects.all() self.assertEqual(gym[0].name, name) self.assertEqual(gym[0].city, city) self.assertEqual(gym[0].email, email)
def test_get_records_for_active_routes_with_record(self): user_id = 1 route_id = 1 record_type = conf.ClimbStatus.climbed.value self.add_sample_data_active() create_auth_user() dal = Dal.get_dal() dal.set_route_record_for_user(user_id, route_id, record_type) data = dal.get_records_for_active_routes(gym_id=1, user_id=1) self.assertEqual(data['is_climbed'], [True, False])
def test_add_route_set(self): dal = Dal.get_dal() data = dal.get_routes_all() self.assertEqual(data.get_count(), 0, 'ensure that there is zero routes in db initially') add_sample_data() dataNew = dal.get_routes_all() self.assertEqual(dataNew.get_count(), 2) self.assertEqual(dataNew.get_grade()[0], conf.Grade.black.name) self.assertEqual(dataNew.get_grade_sub()[0], conf.GradeSub.high.name)
def test_get_grade_name_of_last_recorded_climb__no_climbs_recorded(self): user_id = 10 gym_id = 1 create_sample_route_record(status=[1, 0]) dal = Dal.get_dal() grade_name = dal.get_grade_name_of_last_recorded_climb(user_id, gym_id) grade_name_check, id = dal._get_grade_name_of_last_recorded_climb( user_id, gym_id) self.assertEqual(grade_name, grade_name_check) self.assertEqual(grade_name, []) self.assertEqual(id, [])
def test_add_route_set_protecting_against_duplicates(self): dal = Dal.get_dal() data = dal.get_routes_all() self.assertEqual(data.get_count(), 0, 'ensure that there is zero routes in db initially') # breakpoint() add_sample_gym() add_sample_route_set(gym_id=1) add_sample_route_set(gym_id=1) dataNew = dal.get_routes_all() self.assertEqual(dataNew.get_count(), 2) self.assertEqual(dataNew.get_grade()[0], conf.Grade.black.name) self.assertEqual(dataNew.get_grade_sub()[0], conf.GradeSub.high.name)
def test_get_grade_name_of_last_recorded_climb(self): user_id = 1 route_id = 1 gym_id = 1 create_sample_route_record(record_type=[1, 0]) dal = Dal.get_dal() grade_name = dal.get_grade_name_of_last_recorded_climb(user_id, gym_id) grade_name_check, id = dal._get_grade_name_of_last_recorded_climb( user_id, gym_id) # breakpoint() self.assertEqual(grade_name, grade_name_check) self.assertEqual(grade_name, 'black') self.assertEqual(id, 2)
def test_get_all_routes_are_ordered_by_up_date(self): dates = ['04/07/2019', '04/07/2021', '04/06/2019'] add_sample_data(grade=['medium'], up_date=dates[0]) add_sample_data(grade=['medium'], up_date=dates[1]) add_sample_data(grade=['medium'], up_date=dates[2]) dal = Dal.get_dal() data = dal.get_routes_all() self.assertEqual(data.get_up_date()[0], Utils.convert_str_to_datetime(dates[1])) self.assertEqual(data.get_up_date()[1], Utils.convert_str_to_datetime(dates[0])) self.assertEqual(data.get_up_date()[2], Utils.convert_str_to_datetime(dates[2]))
def test_set_new_route_record(self): user_id = 1 route_id = 1 is_climbed = True record_type = 101 create_auth_user() add_sample_data() dal = Dal.get_dal() dal.set_route_record_for_user(user_id, route_id, record_type) rr = RouteRecord.objects.all().filter(user__id=user_id).filter( route__id=route_id) # breakpoint() self.assertEqual(rr[0].record_type, record_type)
def test_record_is_onsight(self): user_id = 1 route_id = 1 record_type_arb = conf.ClimbStatus.onsight.value create_auth_user() add_sample_data() dal = Dal.get_dal() dal.set_route_record_for_user(user_id, route_id, record_type_arb) data = dal.get_records_for_active_routes() is_onsight = data['is_onsight'] self.assertEqual(is_onsight[0], True)
def test_set_existing_route_record(self): user_id = 1 route_id = 1 is_climbed = True record_type = 101 create_auth_user() add_sample_data() dal = Dal.get_dal() dal.set_route_record_for_user(user_id, route_id, record_type) dal.set_route_record_for_user(user_id, route_id, 123) rr = RouteRecord.objects.all().filter(user__id=user_id).filter( route__id=route_id) self.assertEqual(rr[0].record_type, 101) self.assertEqual(rr.count(), 2)
def test_record_is_attempted(self): user_id = 1 route_id = 1 record_type_arb = conf.ClimbStatus.attempted.value create_auth_user() add_sample_data() dal = Dal.get_dal() dal.set_route_record_for_user(user_id, route_id, record_type_arb) data = dal.get_records_for_active_routes() is_att = data['is_attempted'] self.assertEqual(is_att[0], True) self.assertEqual(data['num_attempted'][0], 1)
def test_get_grade(self): up_date_old = '11/06/2019' up_date_new = '11/07/2019' colour_old = 'black' colour_new = 'red' add_sample_data(up_date=up_date_old, grade=['medium'], colour=colour_old) add_sample_data(up_date=up_date_new, grade=['medium'], colour=colour_new) dal = Dal.get_dal() data = dal.get_route_set_of_grade(colour_new, is_active=False) colour_act = data.get_grade() self.assertEqual(colour_act[0], colour_new) self.assertEqual(data.get_count(), 1)
def test_add_route_without_down_date(self): dal = Dal.get_dal() down_date_exp = None add_sample_data() data = dal.get_routes_all() self.assertEqual(data.get_down_date()[0], down_date_exp)
def add_sample_gym(city='Edinburgh', name='Eden Rocks Edinburgh', email='*****@*****.**'): dal = Dal.get_dal() gym = dal.create_gym(name, email, city) return gym
import routes.services.dal as Dal import routes.services.conf as conf import os from routes.models import RouteSet, Route, RouteRecord, Profile, Gym from datetime import datetime, timedelta dal = Dal.get_dal() def route_set(gym_id, colour='black', grade_sub=['high', 'medium'], down_date=None, up_date='03/06/2019'): dal.add_route_set(gym_id, colour, grade_sub, up_date, down_date=down_date) def gym_and_route_set(colour='black', grade_sub=['high', 'medium'], down_date=None, up_date='03/06/2019', city='Edinburgh', name='Eden Rocks Edinburgh', email='*****@*****.**'): g = add_gym(city=city, name=name, email=email) route_set(g.id, colour=colour, grade_sub=grade_sub, down_date=down_date, up_date=up_date)
def test_get_all_routes_with_zero_in_database(self): dal = Dal.get_dal() data = dal.get_routes_all() self.assertFalse(data.get_count())