**What**
- Selects the correct tax line for an item given a calculation context.
**For later PR**
- Consider optimizations. Some thoughts:
- Even with global sales the number of rates in the DB is not likely to grow beyond ~1000.
- Can large orders with hundreds of items optimize somehow?
- Does it make sense to write a custom SQL query to do this?
- Support combined rate.
**Test cases covered**
The selection of tax rates take the following priority:
1. specific product rules - province
2. specific product type rules - province
3. default province rules
4. specific product rules - country
5. specific product type rules - country
6. default country rules
There are test cases for each of them under the following data seed structure:
### **US**
- **Default Rate**: 2%
- **Sub-Regions**
- CA
- Default Rate: 5%
- Overrides
- Reduced rate (for 3 product ids): 3%
- Reduced rate (for product type): 1%
- NY
- Default rate: 6%
- FL
- Default rate: 4%
- **Overrides**
- None
### **Denmark**
- **Default rate:** 25%
- **Sub-Regions**
- None
- **Overrides**
- None
### **Germany**
- **Default Rate:** 19%
- **Sub-Regions**
- None
- **Overrides:**
- Reduced Rate (for product type) - 7%
### **Canada**
- **Default rate**: 5%
- **Sub-Regions**
- QC
- Default rate: 2%
- Overrides:
- Reduced rate (for same product type as country reduced rate): 1%
- BC
- Default rate: 2%
- **Overrides**
- Reduced rate (for product id) - 3%
- Reduced rate (for product type) - 3.5%
21 lines
481 B
JavaScript
21 lines
481 B
JavaScript
module.exports = {
|
|
moduleNameMapper: {
|
|
"^@models": "<rootDir>/src/models",
|
|
"^@services": "<rootDir>/src/services",
|
|
"^@repositories": "<rootDir>/src/repositories",
|
|
"^@types": "<rootDir>/src/types",
|
|
},
|
|
transform: {
|
|
"^.+\\.[jt]s?$": [
|
|
"ts-jest",
|
|
{
|
|
tsConfig: "tsconfig.spec.json",
|
|
isolatedModules: true,
|
|
},
|
|
],
|
|
},
|
|
testEnvironment: `node`,
|
|
moduleFileExtensions: [`js`, `ts`],
|
|
modulePathIgnorePatterns: ["dist/"],
|
|
}
|