An open API service indexing awesome lists of open source software.

https://github.com/anonexistent/debtustesttask

Тестовое задание для компании Дебтус. opensource-demo orangehrmlive com
https://github.com/anonexistent/debtustesttask

Last synced: 8 months ago
JSON representation

Тестовое задание для компании Дебтус. opensource-demo orangehrmlive com

Awesome Lists containing this project

README

          

# DebtusTestTask
### Тестовое задание
Добавление сотрудника и создание претензии на сайте OrangeHRM Demo.
### Что требуется сделать
Нужно перейти на сайт https://opensource-demo.orangehrmlive.com и на форме авторизации ввести следующие данные:
- Username: Admin
- Password: admin123
### Добавить сотрудника
Для добавления сотрудника нужно:
1. Перейти в раздел PIM -> Add Employee.
2. Заполнить поля First Name, Middle Name, Last Name, Employee Id.
3. Нажать кнопку Save.
![Иллюстрация к проекту](https://ibb.co/gZkrXfzj)
4. В открывшемся окне перейти во вкладку Job и заполнить следующие поля: Joined Date, Job Title, Job Category, Sub Unit, Location, Employment Status.
5. После заполнения полей нужно нажать Save.
![Иллюстрация к проекту](https://ibb.co/gZkrXfzj)
### Создать запрос на претензию
Для создания претензии нужно:
1. Перейти в раздел Claim -> Assign Claim.
2. Ввести имя, фамилию и отчество только что добавленного сотрудника в поле Employee Name.
3. Заполнить Event, Currency и Remarks.
4. Нажать Create.
![Иллюстрация к проекту](https://ibb.co/gZkrXfzj)
После нажатия на кнопку Create появится Reference Id и другие детали претензии.
![Иллюстрация к проекту](https://ibb.co/gZkrXfzj)
### Детали реализации
В проекте ASP.NET Web API (без авторизации, без визуального оформления (Razor Pages)) должен быть один контроллер и два метода. Один метод предназначен для создания нового сотрудника, второй – для создания претензии.
### Задание 1. Добавление сотрудника
Метод добавления сотрудника должен принимать следующие значения:
Для создания нового сотрудника также понадобятся:
- Employee Id: случайно сгенерированная строка из 7 символов (буквы и/или цифры). Главное, чтобы значение прошло валидацию на странице добавления сотрудника.
- Joined Date: текущая дата (сегодня).
***
Примечание:
Имя, фамилию и отчество можно выдумать. Данные о работе (jobTitle, jobCategory, и т.д.) следует сверять со значениями в выпадающих списках на странице. Если значение не найдено, заполнение данных о работе нужно прекратить и вернуть сообщение об ошибке в ответе.
***
***
Подсказка:
Если сотрудник с таким Id уже существует, поле подсветится красным цветом, и под ним появится сообщение об ошибке. Пока не будет введено валидное значение, нельзя будет нажать кнопку «Save».
***
![Иллюстрация к проекту](https://ibb.co/gZkrXfzj)
Результат при успешном добавлении сотрудника:
```
{
"success": true,
"employeeId": "B5g783R"
}
```
Результат при неудаче:
```
{
"success": false,
"errorMessage": "Job title 'Handsome' not found"
}
```
### Задание 2. Создать запрос на претензию
Входные данные:
```
{
"employeeName": "Сотрудник Сотрудникович Сотрудников",
"event": "Accommodation",
"currency": "Russian Rouble",
"remarks": "Сотрудник Сотрудникович wants rubles for accommodation"
}
```
***
Примечание:
Имя сотрудника (employeeName) указывается такое, какое было добавлено в задании 1. Имя сотрудника можно указать неполное (только имя или часть имени, например), но оно должно соответствовать ранее добавленному сотруднику. Event и Currency также необходимо сверять со значениями в выпадающих списках на странице. Remarks – необязательное поле.
***
***
Подсказка:
При заполнении имени сотрудника появляется подсказка со списком. Если просто ввести имя в поле, оно не будет считаться заполненным. Необходимо выбрать имя из подсказки.
***
Результат при успешном создании претензии:
```
{
"success": true,
"referenceId": "202508140000024"
}
```
Результат при неудаче:
```
{
"success": false,
"errorMessage": "Currency 'Korona novigradzka' not found"
}
```
***
Подсказка:
ReferenceId появляется на странице после создания претензии.
***
## Дополнительное задание: Доработка заданий 1 и 2
После добавления нового сотрудника в задании 1 необходимо записать ФИО и ID сотрудника (First Name, Middle Name, Last Name, Employee Id) в базу данных SQLite. После этого входной объект для задания 2 следует изменить: вместо employeeName принимать employeeId и по нему искать ФИО сотрудника в базе.
Обновленный входной json для создания претензии:
```
{
"employeeId": "B5g783R",
"event": "Accommodation",
"currency": "Russian Rouble",
"remarks": "Сотрудник Сотрудникович wants rubles for accommodation"
}
```
### Технологии
Для выполнения тестового задания предлагается использовать Selenium WebDriver, HtmlAgilityPack и/или HttpClient. Вы можете использовать все из этого списка или ничего. Также допускается использование других технологий с обоснованием вашего выбора. Главное условие: для реализации используйте C#.
### Общее примечание:
Готовое тестовое задание будет оцениваться по следующим критериям:
- Готовность к запуску
- Работоспособность
- Соответствие ТЗ
- Структура проекта
- Качество кода
Если в процессе возникнут сложности, можете выполнить часть заданий, написать нам или описать проблему/замечания в комментариях. Удачи❤️