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:
Sebastian Rindom authored and GitHub committed 2020-04-08 09:44:41 +02:00
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)
}
}),
}
+17
View File
@@ -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