fix(medusa): PluginLoaders when loading services should only look for js files (#1473)
This commit is contained in:
1 parent
525910f72a
commit
c67d6bee30
2 files changed
+63
-2
No files matched your search
@@ -0,0 +1,61 @@
|
|||||||
|
import { createContainer, asValue } from "awilix"
|
||||||
|
import { mkdirSync, rmSync, rmdirSync, writeFileSync } from "fs"
|
||||||
|
import { resolve } from "path"
|
||||||
|
import Logger from "../logger"
|
||||||
|
import { registerServices } from "../plugins"
|
||||||
|
import { MedusaContainer } from "../../types/global"
|
||||||
|
|
||||||
|
const distTestTargetDirectorPath = resolve(__dirname, "__pluginsLoaderTest__")
|
||||||
|
const servicesTestTargetDirectoryPath = resolve(distTestTargetDirectorPath, "services")
|
||||||
|
const buildServiceTemplate = (name: string) => {
|
||||||
|
return `
|
||||||
|
import { BaseService } from "medusa-interfaces"
|
||||||
|
export default class ${name}Service extends BaseService {}
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('plugins loader', () => {
|
||||||
|
const container = createContainer() as MedusaContainer
|
||||||
|
const pluginsDetails = {
|
||||||
|
resolve: resolve(__dirname, "__pluginsLoaderTest__"),
|
||||||
|
name: `project-plugin`,
|
||||||
|
id: "fakeId",
|
||||||
|
options: {},
|
||||||
|
version: '"fakeVersion',
|
||||||
|
}
|
||||||
|
|
||||||
|
describe("registerServices", function() {
|
||||||
|
beforeAll(() => {
|
||||||
|
container.register("logger", asValue(Logger))
|
||||||
|
mkdirSync(servicesTestTargetDirectoryPath, { mode: "777", recursive: true })
|
||||||
|
writeFileSync(resolve(servicesTestTargetDirectoryPath, "test.js"), buildServiceTemplate("test"))
|
||||||
|
writeFileSync(resolve(servicesTestTargetDirectoryPath, "test2.js"), buildServiceTemplate("test2"))
|
||||||
|
writeFileSync(resolve(servicesTestTargetDirectoryPath, "test2.js.map"), "map:file")
|
||||||
|
writeFileSync(resolve(servicesTestTargetDirectoryPath, "test2.d.ts"), "export interface Test {}")
|
||||||
|
})
|
||||||
|
|
||||||
|
afterAll(() => {
|
||||||
|
rmSync(distTestTargetDirectorPath, { recursive: true, force: true })
|
||||||
|
jest.clearAllMocks()
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should load the services from the services directory but only js files', async () => {
|
||||||
|
let err;
|
||||||
|
try {
|
||||||
|
await registerServices(pluginsDetails, container)
|
||||||
|
} catch (e) {
|
||||||
|
err = e
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(err).toBeFalsy()
|
||||||
|
|
||||||
|
const testService: (...args: unknown[]) => any = container.resolve("testService")
|
||||||
|
const test2Service: (...args: unknown[]) => any = container.resolve("test2Service")
|
||||||
|
|
||||||
|
expect(testService).toBeTruthy()
|
||||||
|
expect(testService.constructor.name).toBe("testService")
|
||||||
|
expect(test2Service).toBeTruthy()
|
||||||
|
expect(test2Service.constructor.name).toBe("test2Service")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -245,8 +245,8 @@ function registerApi(
|
|||||||
* registered
|
* registered
|
||||||
* @return {void}
|
* @return {void}
|
||||||
*/
|
*/
|
||||||
async function registerServices(pluginDetails: PluginDetails, container: MedusaContainer): Promise<void> {
|
export async function registerServices(pluginDetails: PluginDetails, container: MedusaContainer): Promise<void> {
|
||||||
const files = glob.sync(`${pluginDetails.resolve}/services/[!__]*`, {})
|
const files = glob.sync(`${pluginDetails.resolve}/services/[!__]*.js`, {})
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
files.map(async (fn) => {
|
files.map(async (fn) => {
|
||||||
const loaded = require(fn).default
|
const loaded = require(fn).default
|
||||||
|
|||||||
Reference in new issue
Block a user