Thank you for taking the assessment. We will have you work with a sample Pet Adoption Service. We'll outline below the current features, and ask you to implement some new information on our pets. The intent here is to get as far as you can within 2-4 hours. Please don't feel like you need to spend anymore time on it.
Notes
- You may choose to add or change any libraries you want, as well as any decision required.
- For tests you can choose MiniTest or Rspec and create tests as you develop the new features. We'll also ask you to use an external API to use one of our pets and get more information.
- We will run the tests locally on our machines. Please provide any documentation in the README you think might be needed for us to be able to follow the steps to do that.
- Clone this repository.
- Navigate to the project directory and review it.
- Run migrations and seeds.
- Create a personal repository where you can use our clone as the main branch.
- Create a feature branch for you to submit changes. Do not commit directly on the main branch.
- Create a pull request and send us the link for review.
The functionalities and tests below already exist on the project:
- We can create a pet with the fields 'name', 'kind' and 'breed'.
- We can list, view, edit and update the pet.
- Controller tests
- System tests
We do not need any frontend changes, just make sure the new features are correctly working when using the Rails Console.
- Add the ability to give the pet a weight.
- Add a model for owners with any basic information you choose.
- Make sure an owner can have many pets.
- Integrate with the DogAPI to retrieve the pet breed information, using the GET breeds endpoint.
- Add ability for the Owner to pick a pet and get breed information about that pet.
- Create tests for the models.
- Create tests to cover the new features added to the code.
- Feel free to add any extra/missing test or refactor if you believe it makes sense.
- Update the documentation and add all the required steps in order to successfuly run and test your application.
- You may add any extra section in case you feel it is needed.
- In case you encounter any assumption or decision to be made, you can choose yourself the best option, and add an extra section explaining about your decisions.
- In case you are not able to complete the requirements or think there is something to be done afterwards, you may add an extra section with the explanation.
- Code Quality: Maintainable, well-structured code following Ruby and Rails best practices.
- Functionality: The features you choose to finish should be functional.
- Testing: Extensive test coverage ensures the application's reliability and stability.
- Documentation: Clear and concise documentation covering setup instructions, usage guidelines, and any notable design decisions.
- Adherence to Best Practices: Consistent use of Rails conventions, adherence to RESTful principles, and implementation of secure coding practices.
- Push your changes to the feature branch you created in the setup.
- Create a pull request and share the link with us.
- After you submit your solution, we'll review it and talk it over with you.