Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR delivers a full implementation of the currency exchange API based on the provided test suite and specifications.
The project initially contained only automated tests. The solution was developed in a test-driven manner, ensuring full compliance with the expected behaviors.
Scope
Implemented endpoint: /exchange/{amount}/{from}/{to}/{rate}
Deterministic conversion using the provided rate
Input validation (amount, currencies, rate)
Response contract aligned with requirements
Support for:
BRL ↔ USD
BRL ↔ EUR
Implementation notes
OOP-based structure with clear separation of concerns (Controller, Validator, Service)
Resilient route parsing to handle variations from the PHP built-in server and test environment
No external dependencies or exchange rate providers (rate is treated as input)
Quality
All tests passing (composer test)
Code compliant with lint rules (composer lint)
Result
The implementation satisfies all functional requirements and is fully aligned with the existing automated test suite.