fix: Adds default currency to store currencies on create (#982)
This commit is contained in:
1 parent
ec7c10e446
commit
a0a21d15ef
2 files changed
+44
-4
No files matched your search
@@ -1,7 +1,36 @@
|
|||||||
import StoreService from "../store"
|
|
||||||
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
|
||||||
|
import StoreService from "../store"
|
||||||
|
|
||||||
describe("StoreService", () => {
|
describe("StoreService", () => {
|
||||||
|
describe("create", () => {
|
||||||
|
const storeRepository = MockRepository({})
|
||||||
|
const currencyRepository = MockRepository({
|
||||||
|
findOne: () => Promise.resolve({ code: "usd" }),
|
||||||
|
})
|
||||||
|
|
||||||
|
const storeService = new StoreService({
|
||||||
|
manager: MockManager,
|
||||||
|
storeRepository,
|
||||||
|
currencyRepository,
|
||||||
|
})
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
jest.clearAllMocks()
|
||||||
|
})
|
||||||
|
|
||||||
|
it("successfully creates store with default currency", async () => {
|
||||||
|
await storeService.create()
|
||||||
|
|
||||||
|
expect(storeRepository.create).toHaveBeenCalledTimes(1)
|
||||||
|
expect(storeRepository.save).toHaveBeenCalledTimes(1)
|
||||||
|
expect(currencyRepository.findOne).toHaveBeenCalledTimes(1)
|
||||||
|
|
||||||
|
expect(storeRepository.save).toHaveBeenCalledWith({
|
||||||
|
currencies: [{ code: "usd" }],
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe("retrieve", () => {
|
describe("retrieve", () => {
|
||||||
const storeRepository = MockRepository({})
|
const storeRepository = MockRepository({})
|
||||||
|
|
||||||
@@ -75,7 +104,7 @@ describe("StoreService", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const currencyRepository = MockRepository({
|
const currencyRepository = MockRepository({
|
||||||
findOne: query => {
|
findOne: (query) => {
|
||||||
if (query.where.code === "sek") {
|
if (query.where.code === "sek") {
|
||||||
return Promise.resolve({ code: "sek" })
|
return Promise.resolve({ code: "sek" })
|
||||||
}
|
}
|
||||||
@@ -138,7 +167,7 @@ describe("StoreService", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const currencyRepository = MockRepository({
|
const currencyRepository = MockRepository({
|
||||||
findOne: query => {
|
findOne: (query) => {
|
||||||
if (query.where.code === "sek") {
|
if (query.where.code === "sek") {
|
||||||
return Promise.resolve({ code: "sek" })
|
return Promise.resolve({ code: "sek" })
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { MedusaError } from "medusa-core-utils"
|
import { MedusaError } from "medusa-core-utils"
|
||||||
import { BaseService } from "medusa-interfaces"
|
import { BaseService } from "medusa-interfaces"
|
||||||
|
|
||||||
import { currencies } from "../utils/currencies"
|
import { currencies } from "../utils/currencies"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,11 +52,23 @@ class StoreService extends BaseService {
|
|||||||
async create() {
|
async create() {
|
||||||
return this.atomicPhase_(async (manager) => {
|
return this.atomicPhase_(async (manager) => {
|
||||||
const storeRepository = manager.getCustomRepository(this.storeRepository_)
|
const storeRepository = manager.getCustomRepository(this.storeRepository_)
|
||||||
|
const currencyRepository = manager.getCustomRepository(
|
||||||
|
this.currencyRepository_
|
||||||
|
)
|
||||||
|
|
||||||
let store = await this.retrieve()
|
let store = await this.retrieve()
|
||||||
|
|
||||||
if (!store) {
|
if (!store) {
|
||||||
const s = await storeRepository.create()
|
const s = await storeRepository.create()
|
||||||
|
// Add default currency (USD) to store currencies
|
||||||
|
const usd = await currencyRepository.findOne({
|
||||||
|
code: "usd",
|
||||||
|
})
|
||||||
|
|
||||||
|
if (usd) {
|
||||||
|
s.currencies = [usd]
|
||||||
|
}
|
||||||
|
|
||||||
store = await storeRepository.save(s)
|
store = await storeRepository.save(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user