def test_total_month_payment(self): month_payment = MonthPayment(project_id=1, rate=500, work_days=self.worked_days) self.assertEqual(month_payment.total, 5000) self.worked_days.append( WorkedDay(month_payment_id=1, day=datetime.now().date() - timedelta(days=1), paid=False)) month_payment = MonthPayment(project_id=1, rate=500, work_days=self.worked_days) self.assertEqual(month_payment.total, 5000)
def test_method_update(self): month_payment = MonthPayment( project_id=self.project.id, rate=100, ) month_payment_create = self.month_payment_repo.create(month_payment) month_payment_update_1 = MonthPayment( id=month_payment_create.id, rate=500 ) month_payment_update = self.month_payment_repo.update(month_payment_update_1) self.assertEqual(month_payment_update.id, month_payment_create.id) self.assertEqual(month_payment_update.rate, 500) self.assertEqual(month_payment_update.project_id, month_payment_create.project_id)
def test_method__get_worked_days_filter_paid(self): month_payment = MonthPayment( rate=100, project_id=self.project.id, ) month_payment = self.month_payment_repo.create(month_payment) for i in range(self.COUNT_WORK_DAY): worked_day = WorkedDay( month_payment_id=month_payment.id, paid=i % 2 == 0, day=datetime.datetime.now().date() + timedelta(days=i) ) self.worked_day_repo.create(worked_day) worked_days = self.month_payment_repo._get_worked_days(month_payment.id, paid=True) self.assertEqual(type(worked_days), list) self.assertEqual(len(worked_days), 5) for worked_day in worked_days: self.assertEqual(worked_day.paid, True) worked_days = self.month_payment_repo._get_worked_days(month_payment.id, paid=False) self.assertEqual(type(worked_days), list) self.assertEqual(len(worked_days), 5) for worked_day in worked_days: self.assertEqual(worked_day.paid, False)
def _decode_db_month_payment(self, db_month_payment): fileds = { 'id': db_month_payment.id, 'project_id': db_month_payment.project.id, 'rate': db_month_payment.rate, } return MonthPayment(**fileds)
def test_method_create(self): month_payment = MonthPayment( project_id=self.project.id, rate=100, ) month_payment_create = self.month_payment_repo.create(month_payment) db_month_payment = MonthPaymentORM.objects.get(id=month_payment_create.id) self.assertEqual(month_payment_create.id, db_month_payment.id) self.assertEqual(month_payment_create.project_id, db_month_payment.project.id) self.assertEqual(month_payment_create.rate, db_month_payment.rate)
def test_project_total_month_payment(self): month_payments = [] for i in range(5): month_payment = MonthPayment(id=i, project_id=1, rate=1000, work_days=self.worked_days) month_payments.append(month_payment) project = Project(title="Test Project", description="Testing project", type_of_payment='M_P', entity_type_list=month_payments) self.assertEqual(project.total, 50000)
def test_method_get(self): month_payment = MonthPayment( project_id=self.project.id, rate=100, ) month_payment_create = self.month_payment_repo.create(month_payment) month_payment_get = self.month_payment_repo.get(month_payment_id=month_payment_create.id) with self.assertRaises(EntityDoesNotExistException): self.month_payment_repo.get(month_payment_id=month_payment_create.id+5665) self.assertEqual(month_payment_create.id, month_payment_get.id) self.assertEqual(month_payment_create.project_id, month_payment_get.project_id) self.assertEqual(month_payment_create.rate, month_payment_get.rate)
def test_get_all(self): for i in range(10): month_payment = MonthPayment( project_id=self.project.id, rate=100, ) self.month_payment_repo.create(month_payment) month_payments = self.month_payment_repo.get_all(project_id=self.project.id) self.assertEqual(type(month_payments), list) self.assertEqual(len(month_payments), 10) for month_payment in month_payments: self.assertEqual(month_payment.project_id, self.project.id) self.assertEqual(month_payment.rate, 100)
def test_method__get_worked_days_filter_last_month_days(self): month_payment = MonthPayment( rate=100, project_id=self.project.id, ) month_payment = self.month_payment_repo.create(month_payment) for i in range(20): worked_day = WorkedDay( month_payment_id=month_payment.id, paid=i % 2 == 0, day=datetime.datetime.now().date() - timedelta(days=(datetime.datetime.now().day - 10) - i + 30) ) self.worked_day_repo.create(worked_day) worked_days = self.month_payment_repo._get_worked_days(month_payment.id, last_month_days=timezone.now().replace(day=1).date()) self.assertEqual(type(worked_days), list) self.assertEqual(len(worked_days), 10) worked_days = self.month_payment_repo._get_worked_days(month_payment.id, last_month_days=timezone.now().replace(day=1).date(), paid=True) self.assertEqual(type(worked_days), list) self.assertEqual(len(worked_days), 10) month_payment2 = self.month_payment_repo.create(month_payment) for i in range(20): worked_day = WorkedDay( month_payment_id=month_payment2.id, paid=i % 2 == 0, day=datetime.datetime.now().replace(day=1).date() + timedelta(days=i) ) self.worked_day_repo.create(worked_day) worked_days = self.month_payment_repo._get_worked_days(month_payment2.id, last_month_days=timezone.now().replace(day=1).date()) self.assertEqual(type(worked_days), list) self.assertEqual(len(worked_days), 0) worked_days = self.month_payment_repo._get_worked_days(month_payment2.id, last_month_days=timezone.now().date()) self.assertEqual(type(worked_days), list) self.assertEqual(len(worked_days), 5)
def test_method_delete(self): month_payment = MonthPayment( project_id=self.project.id, rate=100, ) month_payment_create = self.month_payment_repo.create(month_payment) id = month_payment_create.id self.assertIsNotNone(self.month_payment_repo.get(id)) self.assertIsNotNone(MonthPaymentORM.objects.get(id=id)) month_payment_delete = self.month_payment_repo.delete(id) with self.assertRaises(EntityDoesNotExistException): self.month_payment_repo.get(id) with self.assertRaises(MonthPaymentORM.DoesNotExist): MonthPaymentORM.objects.get(id=id) self.assertEqual(month_payment_delete.id, id)
def test_method___get_entity_type_list_month_of_payment(self): COUNT_MONTH_PAYMENT = 5 COUNT_WORKED_DAY = 10 project = Project( title='Test Project', description='My Test project', type_of_payment='' 'M_P', start_date=datetime.datetime.now(), user_id=self.user.id ) project_create = self.project_repo.create(project) month_payment_repo = MonthPaymentRepo() for i in range(COUNT_MONTH_PAYMENT): month_payment = MonthPayment( project_id=project_create.id, rate=100, ) month_payment = month_payment_repo.create(month_payment) for j in range(COUNT_WORKED_DAY): worked_day = WorkedDay( month_payment_id=month_payment.id, paid=False, day=datetime.datetime.now().date()-timedelta(days=i) ) WorkedDayRepo().create(worked_day) month_payments = self.project_repo._get_entity_type_list(project_id=project_create.id) self.assertEqual(type(month_payments), list) self.assertEqual(len(month_payments), COUNT_MONTH_PAYMENT) self.assertEqual(type(month_payments.pop()), MonthPayment) self.assertEqual(type(month_payments.pop()._work_days), list) self.assertEqual(len(month_payments.pop()._work_days), COUNT_WORKED_DAY) self.assertEqual(type(month_payments.pop()._work_days.pop()), WorkedDay)
def create(**kwargs): return MonthPayment(**kwargs)