Adds dynamic coupon codes and segment plugin

This commit is contained in:
Sebastian Rindom
2020-07-17 14:06:55 +02:00
parent ec6a538877
commit 3710f7f80a
41 changed files with 11784 additions and 109 deletions
@@ -1,6 +1,17 @@
import { IdMap } from "medusa-test-utils"
export const discounts = {
dynamic: {
_id: IdMap.getId("dynamic"),
code: "Something",
is_dynamic: true,
discount_rule: {
type: "percentage",
allocation: "total",
value: 10,
},
regions: [IdMap.getId("region-france")],
},
total10Percent: {
_id: IdMap.getId("total10"),
code: "10%OFF",
@@ -117,6 +128,9 @@ export const DiscountModelMock = {
}),
deleteOne: jest.fn().mockReturnValue(Promise.resolve()),
findOne: jest.fn().mockImplementation(query => {
if (query._id === IdMap.getId("dynamic")) {
return Promise.resolve(discounts.dynamic)
}
if (query._id === IdMap.getId("total10")) {
return Promise.resolve(discounts.total10Percent)
}
@@ -0,0 +1,25 @@
import { IdMap } from "medusa-test-utils"
export const dynamicDiscounts = {
dynamicOff: {
_id: IdMap.getId("dynamicOff"),
discount_id: IdMap.getId("dynamic"),
code: "DYNAMICOFF",
disabled: false,
usage_count: 0,
},
}
export const DynamicDiscountCodeModelMock = {
create: jest.fn().mockReturnValue(Promise.resolve()),
updateOne: jest.fn().mockImplementation((query, update) => {
return Promise.resolve()
}),
deleteOne: jest.fn().mockReturnValue(Promise.resolve()),
findOne: jest.fn().mockImplementation(query => {
if (query.code === "DYNAMICOFF") {
return Promise.resolve(dynamicDiscounts.dynamicOff)
}
return Promise.resolve(undefined)
}),
}
+1
View File
@@ -7,6 +7,7 @@ class DiscountModel extends BaseModel {
static schema = {
code: { type: String, required: true, unique: true },
is_dynamic: { type: Boolean, default: false },
discount_rule: { type: DiscountRule, required: true },
usage_count: { type: Number, default: 0 },
disabled: { type: Boolean, default: false },
@@ -0,0 +1,16 @@
import mongoose from "mongoose"
import { BaseModel } from "medusa-interfaces"
class DynamicDiscountCode extends BaseModel {
static modelName = "DynamicDiscountCode"
static schema = {
code: { type: String, required: true, unique: true },
discount_id: { type: String, required: true },
usage_count: { type: Number, default: 0 },
disabled: { type: Boolean, default: false },
metadata: { type: mongoose.Schema.Types.Mixed, default: {} },
}
}
export default DynamicDiscountCode
+1
View File
@@ -28,6 +28,7 @@ class OrderModel extends BaseModel {
customer_id: { type: String },
payment_method: { type: PaymentMethodSchema, required: true },
shipping_methods: { type: [ShippingMethodSchema], required: true },
created: { type: String, default: Date.now },
metadata: { type: mongoose.Schema.Types.Mixed, default: {} },
}
}