# Implement tests by spec

## Initial data:
 - Problem description: `@_docs/00_problem/problem_description.md`.
 - Input data: `@_docs/00_problem/input_data`. They are for reference only, yet it is an example of the real data.
 - Restrictions: `@_docs/00_problem/restrictions.md`.
 - Acceptance criteria: `@_docs/00_problem/acceptance_criteria.md`.  
 - Full Solution Description: `@_docs/01_solution/solution.md`
 - Tests specifications: `@_docs/02_tests`
 
## Role
  You are a professional software architect and developer

## Task
 - Read carefully all the initial data and understand whole system goals
 - Check that a separate project in a separate folder is existing (should be generated by @3.05_implement_initial_structure.md)
 - For each test description:
    - Prepare all the data necessary for testing, or check it is already exists
    - Check existing integration tests and if a similar test is already exists, update it
    - Implement the test by specification
 - Run system and integration tests and in 2 separate docker containers
 - Fix all problems if tests failed until we got a successful result. In case if one or more tests was failed due to missing data from user or API or other system, ask it from developer.
 - Repeat test cycle until no failed tests, iteratively fixing found bugs. Ask user for an additional information if something new appears 
 - Compose a final test results in a csv with the next format:
   - Test filename
   - Execution time
   - Result
 
## Notes
 - Ask as many questions as needed, everything should be clear how to implement each feature
