fix: merge api

This commit is contained in:
Sebastian Rindom
2021-03-15 08:28:53 +01:00
35 changed files with 5117 additions and 2358 deletions
@@ -11,6 +11,9 @@ describe("POST /store/carts", () => {
subject = await request("POST", `/store/carts`, {
payload: {
region_id: IdMap.getId("testRegion"),
context: {
clientId: "test",
},
},
})
})
@@ -23,6 +26,11 @@ describe("POST /store/carts", () => {
expect(CartServiceMock.create).toHaveBeenCalledTimes(1)
expect(CartServiceMock.create).toHaveBeenCalledWith({
region_id: IdMap.getId("testRegion"),
context: {
ip: "::ffff:127.0.0.1",
user_agent: "node-superagent/3.8.3",
clientId: "test",
},
})
})
@@ -1,3 +1,4 @@
import reqIp from "request-ip"
import { Validator, MedusaError } from "medusa-core-utils"
import { defaultFields, defaultRelations } from "./"
@@ -31,6 +32,9 @@ import { defaultFields, defaultRelations } from "./"
* quantity:
* description: The quantity of the Product Variant to add
* type: integer
* context:
* description: "An optional object to provide context to the Cart. The `context` field is automatically populated with `ip` and `user_agent`"
* type: object
* tags:
* - Cart
* responses:
@@ -53,6 +57,7 @@ export default async (req, res) => {
quantity: Validator.number().required(),
})
.optional(),
context: Validator.object().optional(),
})
const { value, error } = schema.validate(req.body)
@@ -60,6 +65,11 @@ export default async (req, res) => {
throw new MedusaError(MedusaError.Types.INVALID_DATA, error.details)
}
const reqContext = {
ip: reqIp.getClientIp(req),
user_agent: req.get("user-agent"),
}
try {
const lineItemService = req.scope.resolve("lineItemService")
const cartService = req.scope.resolve("cartService")
@@ -77,6 +87,10 @@ export default async (req, res) => {
const toCreate = {
region_id: regionId,
context: {
...reqContext,
...value.context,
},
}
if (req.user && req.user.customer_id) {
@@ -51,6 +51,9 @@ import { defaultFields, defaultRelations } from "./"
* customer_id:
* description: "The id of the Customer to associate the Cart with."
* type: string
* context:
* description: "An optional object to provide context to the Cart."
* type: object
* tags:
* - Cart
* responses:
@@ -85,6 +88,7 @@ export default async (req, res) => {
})
.optional(),
customer_id: Validator.string().optional(),
context: Validator.object().optional(),
})
const { value, error } = schema.validate(req.body)
@@ -4,6 +4,7 @@
* summary: Retrieve Shipping Options
* description: "Retrieves a list of Shipping Options."
* parameters:
* - (query) is_return {boolean} Whether return Shipping Options should be included. By default all Shipping Options are returned.
* - (query) product_ids {string} A comma separated list of Product ids to filter Shipping Options by.
* - (query) region_id {string} the Region to retrieve Shipping Options from.
* tags:
@@ -31,6 +32,10 @@ export default async (req, res) => {
const query = {}
if ("is_return" in req.query) {
query.is_return = req.query.is_return === "true"
}
if (regionId) {
query.region_id = regionId
}