From a0a21d15efeda56d4245aa6937f4d67c673e5ab3 Mon Sep 17 00:00:00 2001 From: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Mon, 10 Jan 2022 16:08:26 +0100 Subject: [PATCH] fix: Adds default currency to store currencies on create (#982) --- .../medusa/src/services/__tests__/store.js | 35 +++++++++++++++++-- packages/medusa/src/services/store.js | 13 ++++++- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/packages/medusa/src/services/__tests__/store.js b/packages/medusa/src/services/__tests__/store.js index 7e9e70b8a6..e2630da040 100644 --- a/packages/medusa/src/services/__tests__/store.js +++ b/packages/medusa/src/services/__tests__/store.js @@ -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" }) } diff --git a/packages/medusa/src/services/store.js b/packages/medusa/src/services/store.js index 6eb85dc1fd..b3bcea71f3 100644 --- a/packages/medusa/src/services/store.js +++ b/packages/medusa/src/services/store.js @@ -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) }