Adds dynamic coupon codes and segment plugin
This commit is contained in:
@@ -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)
|
||||
}),
|
||||
}
|
||||
@@ -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
|
||||
@@ -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: {} },
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user