Merge branch 'integration/dummy-project' of github.com:medusajs/medusa into integration/dummy-project

This commit is contained in:
Sebastian Rindom committed 2020-07-09 18:19:21 +02:00
commit d58a994ef0
15 files changed
+195 -11

No files matched your search

@@ -15,7 +15,7 @@ export default async (req, res) => {
const orderService = req.scope.resolve("orderService")
const cart = await cartService.retrieve(value.cartId)
let order = await orderService.create(cart)
let order = await orderService.createFromCart(cart)
order = await orderService.decorate(order, [
"status",
"fulfillment_status",
@@ -63,6 +63,9 @@ export const orders = {
fulfillment_status: "not_fulfilled",
payment_status: "awaiting",
status: "pending",
metadata: {
cart_id: IdMap.getId("test-cart"),
},
},
processedOrder: {
_id: IdMap.getId("processed-order"),
@@ -237,6 +240,9 @@ export const OrderModelMock = {
orders.orderToRefund.payment_status = "captured"
return Promise.resolve(orders.orderToRefund)
}
if (query.metadata.cart_id === IdMap.getId("test-cart")) {
return Promise.resolve(orders.testOrder)
}
return Promise.resolve(undefined)
}),
}
@@ -1,5 +1,6 @@
import { IdMap } from "medusa-test-utils"
import { OrderModelMock, orders } from "../../models/__mocks__/order"
import { carts } from "../../models/__mocks__/cart"
import OrderService from "../order"
import { PaymentProviderServiceMock } from "../__mocks__/payment-provider"
import { FulfillmentProviderServiceMock } from "../__mocks__/fulfillment-provider"
@@ -30,6 +31,27 @@ describe("OrderService", () => {
})
})
describe("createFromCart", () => {
const orderService = new OrderService({
orderModel: OrderModelMock,
eventBusService: EventBusServiceMock,
})
beforeEach(async () => {
jest.clearAllMocks()
})
it("calls order model functions", async () => {
await orderService.createFromCart(carts.completeCart)
expect(OrderModelMock.create).toHaveBeenCalledTimes(1)
expect(OrderModelMock.create).toHaveBeenCalledWith({
...carts.completeCart,
metadata: { cart_id: carts.completeCart._id },
})
})
})
describe("retrieve", () => {
let result
const orderService = new OrderService({
@@ -53,6 +75,29 @@ describe("OrderService", () => {
})
})
describe("retrieveByCartId", () => {
let result
const orderService = new OrderService({
orderModel: OrderModelMock,
})
beforeAll(async () => {
jest.clearAllMocks()
result = await orderService.retrieveByCartId(IdMap.getId("test-cart"))
})
it("calls order model functions", async () => {
expect(OrderModelMock.findOne).toHaveBeenCalledTimes(1)
expect(OrderModelMock.findOne).toHaveBeenCalledWith({
metadata: { cart_id: IdMap.getId("test-cart") },
})
})
it("returns correct order", async () => {
expect(result._id).toEqual(IdMap.getId("test-order"))
})
})
describe("update", () => {
const orderService = new OrderService({
orderModel: OrderModelMock,
+39
View File
@@ -153,6 +153,27 @@ class OrderService extends BaseService {
return order
}
/**
* Gets an order by cart id.
* @param {string} cartId - cart id to find order
* @return {Promise<Order>} the order document
*/
async retrieveByCartId(cartId) {
const order = await this.orderModel_
.findOne({ metadata: { cart_id: cartId } })
.catch(err => {
throw new MedusaError(MedusaError.Types.DB_ERROR, err.message)
})
if (!order) {
throw new MedusaError(
MedusaError.Types.NOT_FOUND,
`Order with cart id ${cartId} was not found`
)
}
return order
}
/**
* @param {Object} selector - the query object for find
* @return {Promise} the result of the find operation
@@ -161,6 +182,24 @@ class OrderService extends BaseService {
return this.orderModel_.find(selector)
}
/**
* Creates an order from a cart
* @param {object} order - the order to create
* @return {Promise} resolves to the creation result.
*/
async createFromCart(cart) {
return this.orderModel_
.create({ ...cart, metadata: { cart_id: cart._id } })
.then(result => {
// Notify subscribers
this.eventBus_.emit(OrderService.Events.PLACED, result)
return result
})
.catch(err => {
throw new MedusaError(MedusaError.Types.DB_ERROR, err.message)
})
}
/**
* Creates an order
* @param {object} order - the order to create