Add MyNumberValue type: enforce My Number format, API improvements, tests #106
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.
Add MyNumberValue type: enforce My Number format, API improvements, tests
Summary
This pull request introduces
MyNumberValue, an immutable value object that validates and enforces the correct My Number format (including the check digit) at construction time. It also updates the API controller to provide endpoints that accept and returnMyNumberValue, adds comprehensive unit tests, and updates the README with usage examples.Changes
MyNumberValuestruct toMyNumberNET(validation, parsing, formatting, conversions).MyNumberControllerto provide endpoints that create/format/verifyMyNumberValue.MyNumberValueTestsand update controller tests.README.mdwithMyNumberValueusage examples.Motivation
Using a strongly-typed, validated value object prevents invalid My Number data from propagating through the system and centralizes validation and formatting logic.
Testing
dotnet test(38 passing tests).dotnet buildsucceeds locally.Checklist
MyNumberValueand controller changes.Notes for reviewers
MyNumberNET/MyNumber.cs(newMyNumberValuestruct) andMyNumberNET_ApiServer/Controllers/MyNumberController.cs.ToStringformat options and conversion operators. Suggest changes if another representation or API surface is preferred.docs/tests/implementation).If you'd like me to add reviewers, labels, or a milestone, tell me which and I'll add them.