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

This commit is contained in:
Oliver Windall Juhl authored and GitHub committed 2022-01-10 16:08:26 +01:00
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" })
} }
+12 -1
View File
@@ -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)
} }