def test_update_time_sheet(self):
        ts_storage = TimeSheetsStorage(FakeDb().build())
        e_storage = EmployeesStorage(FakeDb().build())
        e_provider = EmployeeProvider()
        ts_provider = TimeSheetProvider()
        e_use_case = GetEmployeeUseCase(e_provider, e_storage)
        calculator = VacationCalculator()
        use_case = UpdateTimeSheetUseCase(ts_provider, e_use_case, calculator,
                                          ts_storage)

        use_case.update_time_sheet(0, sheet=fixtures.load('february'), norm=19)

        saved_time_sheet = ts_storage.find_by_id(0)
        self.assertEqual(saved_time_sheet.id, 0)
        self.assertEqual(saved_time_sheet.sheet, fixtures.load('february'))
        self.assertEqual(saved_time_sheet.norm, 19)
        self.assertNotEqual(saved_time_sheet.vacation, 1.0)

        use_case.update_time_sheet_for(0,
                                       2019,
                                       1,
                                       sheet=fixtures.load('full_january'))

        saved_time_sheet = ts_storage.find_first_by(employee_id=0,
                                                    year=2019,
                                                    month=1)
        self.assertEqual(saved_time_sheet.employee_id, 0)
        self.assertEqual(saved_time_sheet.sheet, fixtures.load('full_january'))
        self.assertEqual(saved_time_sheet.norm, 19)
        self.assertNotEqual(saved_time_sheet.vacation, 1.0)
    def test_get_time_sheet(self):
        ts_storage = TimeSheetsStorage(FakeDb().build())
        e_storage = EmployeesStorage(FakeDb().build())
        e_provider = EmployeeProvider()
        ts_provider = TimeSheetProvider()
        e_use_case = GetEmployeeUseCase(e_provider, e_storage)
        use_case = GetTimeSheetUseCase(ts_provider, e_use_case, ts_storage)

        time_sheet = use_case.get_for_employee(employee_id=0,
                                               year=2019,
                                               month=1)
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)

        time_sheet = use_case.get_by_id(time_sheet_id=0)
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)
    def test_update_time_sheet(self):
        time_sheet = TimeSheetProvider.create(
            date=datetime(2018, 1, 30),
            work_days_sheet=fixtures.load("january"),
            employee_id=0,
            employee_rate=RateCalculator.DAYS_FOR_3_YEARS,
            norm=22)
        time_sheet = TimeSheetProvider.update_with(time_sheet, norm=28)
        self.assertEqual(time_sheet.norm, 28)

        time_sheet = TimeSheetProvider.update_with(
            time_sheet, work_days_sheet=fixtures.load("february"))
        self.assertEqual(time_sheet.sheet, fixtures.load("february"))
    def test_create_time_sheet(self):
        storage = TimeSheetsStorage(FakeDb().build())
        controller = TimeSheetProvider()
        use_case = CreateTimeSheetUseCase(controller, storage)

        now = datetime(2019, 2, 1)
        use_case.create_time_sheet(now, fixtures.load('january'), 0, 10, 10)
        saved_time_sheet = storage.find_by_id(2)
        self.assertEqual(saved_time_sheet.year, 2019)
        self.assertEqual(saved_time_sheet.month, 2)
        self.assertEqual(saved_time_sheet.sheet, fixtures.load('january'))
        self.assertEqual(saved_time_sheet.employee_id, 0)
        self.assertEqual(saved_time_sheet.rate, 10)
        self.assertEqual(saved_time_sheet.norm, 10)
 def test_create_time_sheet(self):
     time_sheet = TimeSheetProvider.create(
         date=datetime(2018, 1, 30),
         work_days_sheet=fixtures.load("january"),
         employee_id=0,
         employee_rate=RateCalculator.DAYS_FOR_3_YEARS,
         norm=22)
     self.assertIsNotNone(time_sheet)
     self.assertEqual(time_sheet.id, None)
     self.assertEqual(time_sheet.norm, 22)
     self.assertEqual(time_sheet.rate, RateCalculator.DAYS_FOR_3_YEARS)
     self.assertEqual(time_sheet.sheet, fixtures.load("january"))
     self.assertEqual(time_sheet.year, 2018)
     self.assertEqual(time_sheet.month, 1)
     self.assertEqual(time_sheet.employee_id, 0)
     self.assertEqual(time_sheet.closed, False)
Example #6
0
 def test_get_profile(self):
     employee = fixtures.load('admin_user')
     headers = self.__get_authorization_header_for(employee)
     response = self.client.simulate_get('/api/profile', headers=headers)
     del employee['password']
     employee['rate'] = 10
     self.assertEqual(response.json, employee)
Example #7
0
    def test_update_employee(self):
        serialized_employee = fixtures.load("unactivated_user")
        employee = EmployeeProvider.deserialize(serialized_employee)
        employee = EmployeeProvider.update_with(employee, name="New Name")
        self.assertEqual(employee.name, "New Name")

        employee = EmployeeProvider.update_with(employee,
                                                employment_date=datetime(
                                                    2019, 1, 30))
        self.assertEqual(employee.employment_date, datetime(2019, 1, 30))
        self.assertEqual(employee.rate, RateCalculator.MAX_DAYS)

        employee = EmployeeProvider.update_with(employee, email="*****@*****.**")
        self.assertEqual(employee.email, "*****@*****.**")

        employee = EmployeeProvider.update_with(employee,
                                                password="******")
        self.assertEqual(employee.password, "new_password")

        employee = EmployeeProvider.activate(employee)
        self.assertEqual(employee.activated, True)

        employee = EmployeeProvider.deactivate(employee)
        self.assertEqual(employee.activated, False)

        self.assertEqual(employee.is_admin, False)

        employee = EmployeeProvider.set_balance_vac(employee, 10)
        self.assertEqual(employee.vacation, 10)
 def load_data(self):
     self.__load_user('admin_user')
     self.__load_user('unaccepted_user')
     self.__load_user('unactivated_user')
     self.__load_user('user_with_vacation')
     self.__create_and_load_time_sheet()
     self.__create_and_load_time_sheet(employee_id=3)
     self.__create_and_load_time_sheet(
         date=datetime(2019, 2, 1),
         sheet=fixtures.load('february'),
         norm=20
     )
     self.__create_and_load_time_sheet(
         date=datetime(2019, 3, 1),
         sheet=[1, 1, 0, 0, 1,
                1, 1, 1, 1, 0,
                0, 1, 1, 1, 1,
                1, 0, 0, 1, 1,
                1, 1, 1, 0, 0,
                1, 1, 1, 1, 1,
                0],
         norm=22
     )
     self.__create_and_load_time_sheet(
         date=datetime(2018, 12, 1),
         sheet=[1, 0, 0, 1,
                1, 1, 1, 1, 0,
                0, 1, 1, 1, 1,
                1, 0, 0, 1, 1,
                1, 1, 1, 0, 0,
                1, 1, 1, 1, 1,
                0, 0],
         norm=21
     )
 def test_run(self):
     '''
     should run and give correct answers in trivial case
     '''
     X = fixtures.load('synthetic_fixation')
     r = fixationmodel.fit(X)
     self.assertEqual(r['centroid'], [0.0, 0.0])
     self.assertEqual(r['mean_squared_error'], 0.0)
 def test_gaps(self):
     '''
     should ignore [None, None] points
     '''
     X = fixtures.load('synthetic_gapped')  # Gaps added to microsaccade
     r = fixationmodel.fit(X)
     self.assertEqual(r['centroid'], [0.4, 0.4])
     self.assertAlmostEqual(r['mean_squared_error'], 3.68)
 def test_centroid(self):
     '''
     should give correct answers in nontrivial case
     '''
     X = fixtures.load('synthetic_microsaccade')
     r = fixationmodel.fit(X)
     self.assertEqual(r['centroid'], [0.4, 0.4])
     self.assertAlmostEqual(r['mean_squared_error'], 3.68)
Example #12
0
 def test_get_employees(self):
     employee = fixtures.load('admin_user')
     headers = self.__get_authorization_header_for(employee)
     response = self.client.simulate_get('/api/employees/', headers=headers)
     self.assertTrue(response.json.__len__() > 0)
     first_employee = response.json[0]
     del employee['password']
     self.assertEqual(first_employee, employee)
 def test_create_time_sheet_without_norm(self):
     time_sheet = TimeSheetProvider.create(
         date=datetime(2018, 1, 30),
         work_days_sheet=fixtures.load("january"),
         employee_id=0,
         employee_rate=RateCalculator.DAYS_FOR_3_YEARS)
     self.assertIsNotNone(time_sheet)
     self.assertIsNone(time_sheet.norm)
Example #14
0
    def test_update_profile(self):
        employee = fixtures.load('admin_user')
        headers = self.__get_authorization_header_for(employee)
        to_hash = ToHash()

        body = json.dumps({
            'name': 'new name',
            'old_password': '******',
            'new_password': '******'
        })
        response = self.client.simulate_patch('/api/profile',
                                              headers=headers,
                                              body=body)

        profile = response.json['profile']
        self.assertEqual(profile['name'], 'new name')
        self.assertEqual(profile['email'], employee['email'])
        token = response.json['token']
        self.assertIsNotNone(token)

        updated_employee = self.factory.employee_storage.find_by_id(0)
        self.assertTrue(
            to_hash.check_with_hash('new pass', updated_employee.password))

        body = json.dumps({'name': 'the newest name'})
        response = self.client.simulate_patch('/api/profile',
                                              headers=headers,
                                              body=body)

        profile = response.json['profile']
        self.assertEqual(profile['name'], 'the newest name')
        self.assertEqual(profile['email'], employee['email'])
        token = response.json['token']
        self.assertIsNotNone(token)

        updated_employee = self.factory.employee_storage.find_by_id(0)
        self.assertTrue(
            to_hash.check_with_hash('new pass', updated_employee.password))

        body = json.dumps({
            'name': 'admin',
            'email': '*****@*****.**',
            'old_password': '******',
            'new_password': '******',
        })
        response = self.client.simulate_patch('/api/profile',
                                              headers=headers,
                                              body=body)

        profile = response.json['profile']
        self.assertEqual(profile['name'], 'admin')
        self.assertEqual(profile['email'], '*****@*****.**')
        token = response.json['token']
        self.assertIsNotNone(token)

        updated_employee = self.factory.employee_storage.find_by_id(0)
        self.assertTrue(
            to_hash.check_with_hash('admin', updated_employee.password))
Example #15
0
 def __load_user(self, name):
     serialized_employee = fixtures.load(name)
     password = ToHash().to_hash(serialized_employee['password'])
     serialized_employee['password'] = password
     employee = self.employee_provider.deserialize(serialized_employee)
     self.employee_storage.save(employee)
     email = serialized_employee['email']
     data = {'email': email, 'password': password}
     self.tokens[email] = self.tokenizer.get_token_by_data(data)
 def test_run(self):
     '''
     should be capable to analyze the synthetic saccade
     '''
     X = fixtures.load('synthetic')
     r = saccademodel.fit(X)
     self.assertEqual(len(r['source_points']), 2)
     self.assertEqual(len(r['saccade_points']), 6)
     self.assertEqual(len(r['target_points']), 2)
Example #17
0
 def __create_and_load_time_sheet(self,
                                  date: datetime = datetime(2019, 1, 1),
                                  sheet=fixtures.load('january'),
                                  employee_id=0,
                                  rate=RateCalculator.MIN_DAYS,
                                  norm=23):
     self.app.create_time_sheet_use_case.create_time_sheet(
         date=date, sheet=sheet, employee_id=employee_id, rate=rate, norm=norm
     )
Example #18
0
    def test_register_user(self):
        admin = fixtures.load('admin_user')
        headers = self.__get_authorization_header_for(admin)

        unaccepted = fixtures.load('unaccepted_user')
        path = '/api/employees/{}/register'.format(unaccepted['id'])

        body = json.dumps({'employment_date': '2018.1.2', 'vacation': '1'})
        response = self.client.simulate_post(path=path,
                                             body=body,
                                             headers=headers)
        self.assertEqual(response.status, falcon.HTTP_201)
        accepted_employee = self.factory.employee_storage.find_by_email(
            unaccepted['email'])
        self.assertEqual(accepted_employee.vacation, 1)
        self.assertEqual(accepted_employee.employment_date.year, 2018)
        self.assertEqual(accepted_employee.employment_date.month, 1)
        self.assertEqual(accepted_employee.employment_date.day, 2)
        self.assertTrue(accepted_employee.activated)
Example #19
0
    def build(self):
        session = super().build()
        admin_user = EmployeeProvider.deserialize(fixtures.load("admin_user"))
        unaccepted_user = EmployeeProvider.deserialize(
            fixtures.load("unaccepted_user"))
        user_with_vacation = EmployeeProvider.deserialize(
            fixtures.load("user_with_vacation"))
        session.add(admin_user)
        session.add(unaccepted_user)
        session.add(user_with_vacation)
        session.commit()

        january_ts = TimeSheetProvider.deserialize(
            fixtures.load('january_time_sheet'))
        half_january_ts = TimeSheetProvider.deserialize(
            fixtures.load('half_january_time_sheet'))
        session.add(january_ts)
        session.add(half_january_ts)
        session.commit()
        return session
    def test_register_employee(self):
        storage = EmployeesStorage(FakeDb().build())
        controller = EmployeeProvider()
        use_case = RegisterEmployeeUseCase(controller, storage)

        now = datetime.now()
        serialized_employee = fixtures.load("unaccepted_user")
        use_case.register_employee(serialized_employee["id"], employment_date=now)

        saved_employee = storage.find_by_email(serialized_employee["email"])
        self.assertEqual(saved_employee.employment_date, now)
        self.assertEqual(saved_employee.vacation, 0)
        self.assertEqual(saved_employee.activated, True)
 def test_close_time_sheet(self):
     time_sheet = TimeSheetProvider.create(
         date=datetime(2018, 1, 30),
         work_days_sheet=fixtures.load("january"),
         employee_id=0,
         employee_rate=RateCalculator.DAYS_FOR_3_YEARS,
         norm=22)
     time_sheet = TimeSheetProvider.close(time_sheet)
     try:
         TimeSheetProvider.update_with(time_sheet, 10)
         raise Exception("Closed time sheet has been updated")
     except AccessDeniedToUpdateTimeSheetError:
         self.assertEqual(time_sheet.closed, True)
    def test_deserialize_time_sheet(self):
        time_sheet = TimeSheetProvider.create(
            date=datetime(2018, 1, 30),
            work_days_sheet=fixtures.load("february"),
            employee_id=0,
            employee_rate=RateCalculator.DAYS_FOR_3_YEARS,
            norm=22)
        serialized_time_sheet = TimeSheetProvider.serialize(time_sheet)
        time_sheet = TimeSheetProvider.deserialize(serialized_time_sheet)
        self.assertEqual(time_sheet.id, None)
        self.assertEqual(time_sheet.year, 2018)
        self.assertEqual(time_sheet.month, 1)
        self.assertEqual(time_sheet.norm, 22)
        self.assertEqual(time_sheet.rate, RateCalculator.DAYS_FOR_3_YEARS)
        self.assertEqual(time_sheet.vacation, None)
        self.assertEqual(time_sheet.employee_id, 0)
        self.assertEqual(time_sheet.closed, False)
        self.assertEqual(time_sheet.sheet, fixtures.load("february"))

        time_sheet = TimeSheetProvider.close(time_sheet)
        serialized_time_sheet = TimeSheetProvider.serialize(time_sheet)
        time_sheet = TimeSheetProvider.deserialize(serialized_time_sheet)
        self.assertEqual(time_sheet.closed, True)
Example #23
0
    def test_deserialize_employee(self):
        serialized_employee = fixtures.load("unactivated_user")
        employee = EmployeeProvider.deserialize(serialized_employee)

        self.assertIsNotNone(employee)
        self.assertEqual(employee.id, 2)
        self.assertEqual(employee.name, 'Unactivated User')
        self.assertEqual(employee.password, 'user')
        self.assertEqual(employee.email, '*****@*****.**')
        self.assertEqual(datetime(2019, 1, 1), employee.employment_date)
        self.assertEqual(datetime(2019, 1, 1), employee.acceptance_date)
        self.assertEqual(employee.vacation, 1.0)
        self.assertEqual(employee.activated, False)
        self.assertEqual(employee.is_admin, False)
    def test_update_time_sheet_for_not_exist(self):
        ts_storage = TimeSheetsStorage(FakeDb().build())
        e_storage = EmployeesStorage(FakeDb().build())
        e_provider = EmployeeProvider()
        ts_provider = TimeSheetProvider()
        e_use_case = GetEmployeeUseCase(e_provider, e_storage)
        calculator = VacationCalculator()
        use_case = UpdateTimeSheetUseCase(ts_provider, e_use_case, calculator,
                                          ts_storage)
        try:
            ts_storage.find_first_by(employee_id=3, year=2019, month=5)
            raise Exception('Time sheet should not exist')
        except NotFoundError:
            pass
        use_case.update_time_sheet_for(employee_id=3,
                                       year=2019,
                                       month=5,
                                       sheet=fixtures.load('february'))

        saved_time_sheet = ts_storage.find_first_by(employee_id=3,
                                                    year=2019,
                                                    month=5)
        self.assertEqual(saved_time_sheet.sheet, fixtures.load('february'))
    def test_serialize_time_sheet(self):
        time_sheet = TimeSheetProvider.create(
            date=datetime(2018, 1, 30),
            work_days_sheet=fixtures.load("january"),
            employee_id=0,
            employee_rate=RateCalculator.DAYS_FOR_3_YEARS,
            norm=22)
        serialized_time_sheet = TimeSheetProvider.serialize(time_sheet)
        self.assertEqual(serialized_time_sheet['id'], None)
        self.assertEqual(serialized_time_sheet['year'], 2018)
        self.assertEqual(serialized_time_sheet['month'], 1)
        self.assertEqual(serialized_time_sheet['norm'], 22)
        self.assertEqual(serialized_time_sheet['rate'],
                         RateCalculator.DAYS_FOR_3_YEARS)
        self.assertEqual(serialized_time_sheet['vacation'], None)
        self.assertEqual(serialized_time_sheet['employee_id'], 0)
        self.assertEqual(serialized_time_sheet['closed'], False)
        self.assertEqual(serialized_time_sheet['sheet'],
                         fixtures.load("january"))

        time_sheet = TimeSheetProvider.close(time_sheet)
        serialized_time_sheet = TimeSheetProvider.serialize(time_sheet)
        self.assertEqual(serialized_time_sheet['closed'], True)
Example #26
0
    def test_deserialize_unaccepted_employee(self):
        serialized_employee = fixtures.load("unaccepted_user")
        employee = EmployeeProvider.deserialize(serialized_employee)

        self.assertIsNotNone(employee)
        self.assertEqual(employee.id, 1)
        self.assertEqual(employee.name, 'Unregistered User')
        self.assertEqual(employee.password, 'user')
        self.assertEqual(employee.email, '*****@*****.**')
        self.assertFalse(employee.activated)
        self.assertFalse(employee.is_admin)
        self.assertIsNone(employee.vacation)
        self.assertIsNone(employee.employment_date)
        self.assertIsNone(employee.acceptance_date)
Example #27
0
 def test_register_employee_without_balance_vacation(self):
     serialized_employee = fixtures.load("unaccepted_user")
     employee = EmployeeProvider.deserialize(serialized_employee)
     now_date = datetime.now()
     employee = EmployeeProvider.register(employee=employee,
                                          employment_date=now_date)
     self.assertIsNotNone(employee)
     self.assertEqual(employee.acceptance_date.year, now_date.year)
     self.assertEqual(employee.acceptance_date.month, now_date.month)
     self.assertEqual(employee.acceptance_date.day, now_date.day)
     self.assertEqual(employee.employment_date, now_date)
     self.assertEqual(employee.activated, True)
     self.assertEqual(employee.is_admin, False)
     self.assertEqual(employee.vacation, 0)
Example #28
0
    def test_get_calculation(self):
        employee = fixtures.load('admin_user')
        saved_employee = self.factory.employee_storage.find_by_email(
            employee['email'])
        saved_employee.employment_date = datetime(2016, 8, 1)
        self.factory.employee_storage.update(saved_employee)
        headers = self.__get_authorization_header_for(employee)
        path = '/api/employees/{}/vacation'.format(employee['id'])
        body = json.dumps({'year': 2019, 'month': 1})
        response = self.client.simulate_post(path=path,
                                             body=body,
                                             headers=headers)

        self.assertEqual(response.status, falcon.HTTP_200)
        month_vacation = response.json['month_vacation']
        total_vacation = response.json['total_vacation']
        self.assertEqual(month_vacation, 3.29)
        self.assertEqual(total_vacation, 4.29)
Example #29
0
    def test_calculate_with_compensation_sheet(self):
        time_sheet = self.january_time_sheet
        time_sheet.sheet = fixtures.load("compensation_january")
        calculator = VacationCalculator()

        time_sheet.rate = RateCalculator.MIN_DAYS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, 3.29)

        time_sheet.rate = RateCalculator.DAYS_FOR_3_YEARS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, 2.88)

        time_sheet.rate = RateCalculator.DAYS_FOR_2_YEARS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, 2.56)

        time_sheet.rate = RateCalculator.MAX_DAYS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, 2.3)
Example #30
0
    def test_calculate_with_half_time_sheet(self):
        time_sheet = self.january_time_sheet
        time_sheet.sheet = fixtures.load("half_january")
        calculator = VacationCalculator()

        time_sheet.rate = RateCalculator.MIN_DAYS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, -5.86)

        time_sheet.rate = RateCalculator.DAYS_FOR_3_YEARS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, -6.12)

        time_sheet.rate = RateCalculator.DAYS_FOR_2_YEARS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, -6.33)

        time_sheet.rate = RateCalculator.MAX_DAYS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, -6.5)
Example #31
0
    def test_calculate_with_full_sheet(self):
        time_sheet = self.january_time_sheet
        time_sheet.sheet = fixtures.load("full_january")
        calculator = VacationCalculator()

        time_sheet.rate = RateCalculator.MIN_DAYS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, 4.43)

        time_sheet.rate = RateCalculator.DAYS_FOR_3_YEARS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, 3.88)

        time_sheet.rate = RateCalculator.DAYS_FOR_2_YEARS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, 3.44)

        time_sheet.rate = RateCalculator.MAX_DAYS
        time_sheet = calculator.calculate_vacation(time_sheet)
        self.assertEqual(time_sheet.vacation, 3.1)
Example #32
0
    def test_update_employee(self):
        employee = fixtures.load('admin_user')
        headers = self.__get_authorization_header_for(employee)

        body = json.dumps({'name': 'new name', 'password': '******'})
        response = self.client.simulate_patch('/api/employees/0',
                                              headers=headers,
                                              body=body)

        self.assertEqual(response.json['name'], 'new name')
        self.assertEqual(response.json['email'], employee['email'])

        updated_employee = self.factory.employee_storage.find_by_id(0)
        self.assertEqual(updated_employee.password, 'new pass')

        body = json.dumps({'name': 'the newest name'})
        response = self.client.simulate_patch('/api/employees/0',
                                              headers=headers,
                                              body=body)

        self.assertEqual(response.json['name'], 'the newest name')
        self.assertEqual(response.json['email'], employee['email'])

        updated_employee = self.factory.employee_storage.find_by_id(0)
        self.assertEqual(updated_employee.password, 'new pass')

        body = json.dumps({
            'name': 'admin',
            'email': '*****@*****.**',
            'password': '******'
        })
        response = self.client.simulate_patch('/api/employees/0',
                                              headers=headers,
                                              body=body)

        self.assertEqual(response.json['name'], 'admin')
        self.assertEqual(response.json['email'], '*****@*****.**')

        updated_employee = self.factory.employee_storage.find_by_id(0)
        self.assertEqual(updated_employee.password, 'admin')
Example #33
0
    def test_calculate_with_half_time_sheet_for_day(self):
        time_sheet = self.january_time_sheet
        time_sheet.sheet = fixtures.load("half_january")
        calculator = VacationCalculator()

        time_sheet.rate = RateCalculator.MIN_DAYS
        time_sheet = calculator.calculate_vacation(time_sheet, 12)
        self.assertEqual(time_sheet.vacation, 2.14)
        self.assertEqual(time_sheet.norm, 23)

        time_sheet.rate = RateCalculator.DAYS_FOR_3_YEARS
        time_sheet = calculator.calculate_vacation(time_sheet, 12)
        self.assertEqual(time_sheet.vacation, 1.88)
        self.assertEqual(time_sheet.norm, 23)

        time_sheet.rate = RateCalculator.DAYS_FOR_2_YEARS
        time_sheet = calculator.calculate_vacation(time_sheet, 12)
        self.assertEqual(time_sheet.vacation, 1.67)
        self.assertEqual(time_sheet.norm, 23)

        time_sheet.rate = RateCalculator.MAX_DAYS
        time_sheet = calculator.calculate_vacation(time_sheet, 12)
        self.assertEqual(time_sheet.vacation, 1.5)
        self.assertEqual(time_sheet.norm, 23)
    def test_get_time_sheets(self):
        storage = TimeSheetsStorage(FakeDb().build())
        controller = TimeSheetProvider()
        e_storage = EmployeesStorage(FakeDb().build())
        e_provider = EmployeeProvider()
        e_use_case = GetEmployeeUseCase(e_provider, e_storage)
        use_case = GetTimeSheetsUseCase(controller, e_use_case, storage)

        time_sheets = use_case.get_for_employee(employee_id=0,
                                                year=2019,
                                                month=1)
        time_sheet = time_sheets[0]
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)

        time_sheets = use_case.get_for_employee(employee_id=0, year=2019)
        time_sheet = time_sheets[0]
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)

        time_sheets = use_case.get_for_all_employees(year=2019)
        time_sheet = time_sheets[0]
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)

        time_sheets = use_case.get_for_all_employees(year=2019, month=1)
        time_sheet = time_sheets[0]
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)

        time_sheets = use_case.get_for_all_employees(month=1)
        time_sheet = time_sheets[0]
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)

        time_sheets = use_case.get_for_employee(employee_id=0, month=1)
        time_sheet = time_sheets[0]
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)

        time_sheets = use_case.get_for_employee(employee_id=0)
        time_sheet = time_sheets[0]
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)

        time_sheets = use_case.get_all()
        time_sheet = time_sheets[0]
        self.assertEqual(time_sheet['year'], 2019)
        self.assertEqual(time_sheet['month'], 1)
        self.assertEqual(time_sheet['sheet'], fixtures.load('january'))
        self.assertEqual(time_sheet['employee_id'], 0)
        self.assertEqual(time_sheet['rate'], 10)
        self.assertEqual(time_sheet['norm'], 23)