Adds Regions (#33)
Regions are a collection of countries that share some common functionality, e.g., currency, available fulfillment and shipping providers and a taxrate. The store operator can have as many Regions as needed.
This commit is contained in:
1 parent
ea4185eddd
commit
b7557db9f9
31 files changed
+2686
-9
No files matched your search
@@ -0,0 +1,66 @@
|
||||
import { IdMap } from "medusa-test-utils"
|
||||
|
||||
export const regions = {
|
||||
testRegion: {
|
||||
_id: IdMap.getId("testRegion"),
|
||||
name: "Test Region",
|
||||
countries: ["DK", "US", "DE"],
|
||||
tax_rate: 0.25,
|
||||
payment_providers: ["default_provider", "unregistered"],
|
||||
fulfillment_providers: ["test_shipper"],
|
||||
currency_code: "usd",
|
||||
},
|
||||
regionFrance: {
|
||||
_id: IdMap.getId("region-france"),
|
||||
name: "France",
|
||||
countries: ["FR"],
|
||||
payment_providers: ["default_provider", "france-provider"],
|
||||
currency_code: "eur",
|
||||
},
|
||||
regionUs: {
|
||||
_id: IdMap.getId("region-us"),
|
||||
name: "USA",
|
||||
countries: ["US"],
|
||||
currency_code: "usd",
|
||||
},
|
||||
regionGermany: {
|
||||
_id: IdMap.getId("region-de"),
|
||||
name: "Germany",
|
||||
countries: ["DE"],
|
||||
currency_code: "eur",
|
||||
},
|
||||
regionSweden: {
|
||||
_id: IdMap.getId("region-se"),
|
||||
name: "Sweden",
|
||||
countries: ["SE"],
|
||||
payment_providers: ["sweden_provider"],
|
||||
fulfillment_providers: ["sweden_provider"],
|
||||
currency_code: "SEK",
|
||||
},
|
||||
}
|
||||
|
||||
export const RegionModelMock = {
|
||||
create: jest.fn().mockReturnValue(Promise.resolve()),
|
||||
updateOne: jest.fn().mockImplementation((query, update) => {}),
|
||||
deleteOne: jest.fn().mockReturnValue(Promise.resolve()),
|
||||
findOne: jest.fn().mockImplementation(query => {
|
||||
if (query.countries === "SE") {
|
||||
return Promise.resolve(regions.regionSweden)
|
||||
}
|
||||
|
||||
switch (query._id) {
|
||||
case IdMap.getId("testRegion"):
|
||||
return Promise.resolve(regions.testRegion)
|
||||
case IdMap.getId("region-france"):
|
||||
return Promise.resolve(regions.regionFrance)
|
||||
case IdMap.getId("region-us"):
|
||||
return Promise.resolve(regions.regionUs)
|
||||
case IdMap.getId("region-de"):
|
||||
return Promise.resolve(regions.regionGermany)
|
||||
case IdMap.getId("region-se"):
|
||||
return Promise.resolve(regions.regionSweden)
|
||||
default:
|
||||
return Promise.resolve(undefined)
|
||||
}
|
||||
}),
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import mongoose from "mongoose"
|
||||
import { BaseModel } from "medusa-interfaces"
|
||||
|
||||
class RegionModel extends BaseModel {
|
||||
static modelName = "Region"
|
||||
static schema = {
|
||||
name: { type: String, required: true },
|
||||
currency_code: { type: String, required: true },
|
||||
tax_rate: { type: Number, required: true, default: 0 },
|
||||
countries: { type: [String], default: [] },
|
||||
payment_providers: { type: [String], default: [] },
|
||||
fulfillment_providers: { type: [String], default: [] },
|
||||
metadata: { type: mongoose.Schema.Types.Mixed, default: {} },
|
||||
}
|
||||
}
|
||||
|
||||
export default RegionModel
|
||||
Reference in new issue
Block a user