Refactored InvoiceService | Removed Repetitive Code | Created Interface & Private Methods | Added Caching | Added Mock Unit Tests #61
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.
… for clear readability & flexible to add new Constants.
2.Added NULL & Zero Invoice checks to avoid Exceptions & to achieve Test coverage. 3.Reduce Nested IfElse to avoid confusion and improve readability 4.Repeated calculations are stored in seperate variables to reduce DB calls & improve Page Performance 5.Created private method to Calculate the payment & save the invoice (Removed repetitive code & calculations). 6.Clear variable & method names for better understanding. 7.Used repository to save instead of direct DB save (inv.Save()). 8.Added Cache to store the invoice & to avoid multiple DB calls for the same invoice reference. 9.Installed Moq & added Unit Tests. Achived Test Coverage (Positive/Negative/NULL/Empty/EdgeCase Scenarios) & all Unit Tests Passed.