Example #1
0
def test_resource_inequality():
    employee_1 = Employee.from_dict(employee_dict)
    employee_dict_mod = get_employee_dict_mod(id=7, first_name='Beta')
    employee_2 = Employee.from_dict(employee_dict_mod)
    assert employee_2.id_ == 7
    assert employee_2.last_name == 'Lovelace'
    assert employee_1 != employee_2
    assert hash(employee_1) != hash(employee_2)
Example #2
0
def test_resource_ordering():
    employee_1 = Employee.from_dict(employee_dict)
    employee_dict_mod = get_employee_dict_mod(id=7, first_name='Beta')
    employee_2 = Employee.from_dict(employee_dict_mod)
    assert employee_1 != employee_2
    # id 42 > id 7
    assert employee_1 > employee_2
    assert employee_2 < employee_1
Example #3
0
def test_parse_employee_dyn_changes():
    employee = Employee.from_dict(employee_dict, dynamic_fields=dyn_mapping)
    employee.dynamic['hobbies'].append('horse races')
    assert 'horse races' in employee.dynamic['hobbies']
    d = employee.to_dict()
    assert d['attributes']['dynamic_44'][
        'value'] == 'math,analytical thinking,music,horse races'
Example #4
0
    def get_employees(self) -> List[Employee]:
        """
        Get a list of all employee records in your account.

        :return: list of ``Employee`` instances
        """
        response = self.request_json('company/employees')
        employees = [Employee.from_dict(d, self) for d in response['data']]
        return employees
Example #5
0
    def get_employee(self, employee_id: int) -> Employee:
        """
        Get a single employee with the specified ID.

        :param employee_id: the Personio ID of the employee to fetch
        :return: an ``Employee`` instance or a PersonioApiError, if the employee does not exist
        """
        response = self.request_json(f'company/employees/{employee_id}')
        employee = Employee.from_dict(response['data'], self)
        return employee
Example #6
0
def test_parse_employee():
    employee = Employee.from_dict(employee_dict)
    assert employee.id_ == 42
    assert len(employee.dynamic_raw) == 3
    assert employee.first_name == 'Ada'
    assert employee.created_at == datetime(1835,
                                           1,
                                           2,
                                           13,
                                           0,
                                           0,
                                           tzinfo=timezone.utc)
    serialized = employee.to_dict()
    assert serialized
Example #7
0
def test_parse_employee_dyn_typed():
    employee = Employee.from_dict(employee_dict, dynamic_fields=dyn_mapping)
    assert employee.dynamic
    assert employee.dynamic['birthday'] == datetime(1815,
                                                    12,
                                                    10,
                                                    0,
                                                    0,
                                                    0,
                                                    tzinfo=timezone.utc)
    assert employee.dynamic['hobbies'] == [
        'math', 'analytical thinking', 'music'
    ]
    assert len(employee.dynamic_raw) == 3
def test_create_absence():
    mock_absence_types()
    mock_create_absence_no_halfdays()
    personio = mock_personio()
    absence_type = personio.get_absence_types()[0]
    employee = Employee(first_name="Alan",
                        last_name='Turing',
                        email='*****@*****.**')
    absence = Absence(client=personio,
                      employee=employee,
                      start_date=date(2020, 1, 1),
                      end_date=date(2020, 1, 10),
                      half_day_start=False,
                      half_day_end=False,
                      time_off_type=absence_type)
    absence.create()
    assert absence.id_
Example #9
0
def test_create_employee():
    ada = Employee(
        first_name='Ada',
        last_name='Lovelace',
        email='*****@*****.**',
        gender='female',
        position='first programmer ever',
        department=Department(name='Operations'),
        hire_date=datetime(1835, 2, 1),
        weekly_working_hours="35",
    )
    ada_created = personio.create_employee(ada, refresh=True)
    assert ada.first_name == ada_created.first_name
    assert ada.email == ada_created.email
    assert ada_created.id_
    assert ada_created.last_modified_at.isoformat()[:10] == datetime.now(
    ).isoformat()[:10]
    assert ada_created.status == 'active'
Example #10
0
 def create_employee(self, employee: Employee, refresh=True) -> Employee:
     """
     placeholder; not ready to be used
     """
     # TODO warn about limited selection of fields
     data = {
         'employee[email]': employee.email,
         'employee[first_name]': employee.first_name,
         'employee[last_name]': employee.last_name,
         'employee[gender]': employee.gender,
         'employee[position]': employee.position,
         'employee[department]': employee.department.name,
         'employee[hire_date]': employee.hire_date.isoformat()[:10],
         'employee[weekly_hours]': employee.weekly_working_hours,
     }
     response = self.request_json('company/employees', method='POST', data=data)
     employee.id_ = response['data']['id']
     if refresh:
         return self.get_employee(employee.id_)
     else:
         return employee
Example #11
0
def test_get_employee_picture():
    employee = Employee(client=personio, id_=2007207)
    picture = employee.picture()
    assert picture
Example #12
0
def test_map_types():
    kwargs = Employee._map_fields(employee_dict['attributes'])
    assert kwargs['id_'] == 42
    assert kwargs['dynamic']
    assert kwargs['dynamic'][1].label == 'birthday'
Example #13
0
def test_resource_equality():
    employee_1 = Employee.from_dict(employee_dict)
    employee_2 = Employee.from_dict(employee_dict)
    assert id(employee_1) != id(employee_2)
    assert employee_1 == employee_2
    assert hash(employee_1) == hash(employee_2)
Example #14
0
def test_tuple_view():
    employee = Employee.from_dict(employee_dict)
    employee_tuple = employee.to_tuple()
    assert isinstance(employee_tuple, tuple)
    assert len(employee_tuple) > 20
    assert employee_tuple.id_ == 42
Example #15
0
def test_serialize_employee():
    employee = Employee.from_dict(employee_dict, dynamic_fields=dyn_mapping)
    d = employee.to_dict()
    assert d == employee_dict