fix: Adds default currency to store currencies on create (#982)

This commit is contained in:
Oliver Windall Juhl
2022-01-10 16:08:26 +01:00
committed by GitHub
parent ec7c10e446
commit a0a21d15ef
2 changed files with 44 additions and 4 deletions

View File

@@ -1,7 +1,36 @@
import StoreService from "../store"
import { IdMap, MockManager, MockRepository } from "medusa-test-utils"
import StoreService from "../store"
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", () => {
const storeRepository = MockRepository({})
@@ -75,7 +104,7 @@ describe("StoreService", () => {
})
const currencyRepository = MockRepository({
findOne: query => {
findOne: (query) => {
if (query.where.code === "sek") {
return Promise.resolve({ code: "sek" })
}
@@ -138,7 +167,7 @@ describe("StoreService", () => {
})
const currencyRepository = MockRepository({
findOne: query => {
findOne: (query) => {
if (query.where.code === "sek") {
return Promise.resolve({ code: "sek" })
}

View File

@@ -1,6 +1,5 @@
import { MedusaError } from "medusa-core-utils"
import { BaseService } from "medusa-interfaces"
import { currencies } from "../utils/currencies"
/**
@@ -53,11 +52,23 @@ class StoreService extends BaseService {
async create() {
return this.atomicPhase_(async (manager) => {
const storeRepository = manager.getCustomRepository(this.storeRepository_)
const currencyRepository = manager.getCustomRepository(
this.currencyRepository_
)
let store = await this.retrieve()
if (!store) {
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)
}