From a6f39fbcd09f5441e94563ae999170e503b488d1 Mon Sep 17 00:00:00 2001 From: Sam Tolmay Date: Mon, 24 Jan 2022 14:05:48 +0200 Subject: [PATCH] chore(build): Refactor writeBuildArtifact function. --- .gitignore | 1 - .../build/src/build/cleanBuildDirectory.js | 2 +- packages/build/src/build/writeApp.js | 5 +-- packages/build/src/build/writeApp.test.js | 24 ++--------- packages/build/src/build/writeConfig.js | 5 +-- packages/build/src/build/writeConfig.test.js | 24 ++--------- packages/build/src/build/writeConnections.js | 8 ++-- .../build/src/build/writeConnections.test.js | 18 +++----- packages/build/src/build/writeGlobal.js | 5 +-- packages/build/src/build/writeGlobal.test.js | 24 ++--------- packages/build/src/build/writeMenus.js | 5 +-- packages/build/src/build/writeMenus.test.js | 15 ++----- packages/build/src/build/writePages.js | 8 ++-- packages/build/src/build/writePages.test.js | 18 +++----- .../writePluginImports/writeBlockImports.js | 10 ++--- .../writeConnectionImports.js | 10 ++--- .../writePluginImports/writeIconImports.js | 5 +-- .../writeOperatorImports.js | 20 ++++----- .../writePluginImports/writeStyleImports.js | 8 ++-- packages/build/src/build/writeRequests.js | 8 ++-- .../build/src/build/writeRequests.test.js | 30 +++++--------- packages/build/src/build/writeTypes.js | 5 +-- packages/build/src/index.js | 4 +- .../utils/files/writeBuildArtifact.test.js | 41 ------------------- .../src/utils/{files => }/readConfigFile.js | 0 .../utils/{files => }/readConfigFile.test.js | 0 .../utils/{files => }/writeBuildArtifact.js | 4 +- .../src/utils/writeBuildArtifact.test.js | 33 +++++++++++++++ 28 files changed, 117 insertions(+), 223 deletions(-) delete mode 100644 packages/build/src/utils/files/writeBuildArtifact.test.js rename packages/build/src/utils/{files => }/readConfigFile.js (100%) rename packages/build/src/utils/{files => }/readConfigFile.test.js (100%) rename packages/build/src/utils/{files => }/writeBuildArtifact.js (85%) create mode 100644 packages/build/src/utils/writeBuildArtifact.test.js diff --git a/.gitignore b/.gitignore index 9ce5c90e8..7131d947a 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,6 @@ packages/server-dev/build/** .DS_Store -packages/build/src/test/writeFile.txt packages/build/build/** packages/plugins/connections/connection-mongodb/mongod-* diff --git a/packages/build/src/build/cleanBuildDirectory.js b/packages/build/src/build/cleanBuildDirectory.js index 25ca99136..cc2d3fb2a 100644 --- a/packages/build/src/build/cleanBuildDirectory.js +++ b/packages/build/src/build/cleanBuildDirectory.js @@ -17,7 +17,7 @@ import { cleanDirectory } from '@lowdefy/node-utils'; async function cleanBuildDirectory({ context }) { - return cleanDirectory(context.directories.build); + await cleanDirectory(context.directories.build); } export default cleanBuildDirectory; diff --git a/packages/build/src/build/writeApp.js b/packages/build/src/build/writeApp.js index a0973262c..703b3c80b 100644 --- a/packages/build/src/build/writeApp.js +++ b/packages/build/src/build/writeApp.js @@ -15,10 +15,7 @@ */ async function writeApp({ components, context }) { - await context.writeBuildArtifact({ - filePath: 'app.json', - content: JSON.stringify(components.app || {}, null, 2), - }); + await context.writeBuildArtifact('app.json', JSON.stringify(components.app || {}, null, 2)); } export default writeApp; diff --git a/packages/build/src/build/writeApp.test.js b/packages/build/src/build/writeApp.test.js index 1d1793028..4ef7a8cbb 100644 --- a/packages/build/src/build/writeApp.test.js +++ b/packages/build/src/build/writeApp.test.js @@ -34,12 +34,10 @@ test('writeApp', async () => { await writeApp({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'app.json', - content: `{ + 'app.json', + `{ "key": "value" }`, - }, ], ]); }); @@ -49,25 +47,11 @@ test('writeApp empty config', async () => { app: {}, }; await writeApp({ components, context }); - expect(mockWriteBuildArtifact.mock.calls).toEqual([ - [ - { - filePath: 'app.json', - content: `{}`, - }, - ], - ]); + expect(mockWriteBuildArtifact.mock.calls).toEqual([['app.json', `{}`]]); }); test('writeApp config undefined', async () => { const components = {}; await writeApp({ components, context }); - expect(mockWriteBuildArtifact.mock.calls).toEqual([ - [ - { - filePath: 'app.json', - content: `{}`, - }, - ], - ]); + expect(mockWriteBuildArtifact.mock.calls).toEqual([['app.json', `{}`]]); }); diff --git a/packages/build/src/build/writeConfig.js b/packages/build/src/build/writeConfig.js index 238cca03f..391889fd2 100644 --- a/packages/build/src/build/writeConfig.js +++ b/packages/build/src/build/writeConfig.js @@ -15,10 +15,7 @@ */ async function writeConfig({ components, context }) { - await context.writeBuildArtifact({ - filePath: 'config.json', - content: JSON.stringify(components.config || {}, null, 2), - }); + await context.writeBuildArtifact('config.json', JSON.stringify(components.config || {}, null, 2)); } export default writeConfig; diff --git a/packages/build/src/build/writeConfig.test.js b/packages/build/src/build/writeConfig.test.js index 5116d54a1..68d09e350 100644 --- a/packages/build/src/build/writeConfig.test.js +++ b/packages/build/src/build/writeConfig.test.js @@ -34,12 +34,10 @@ test('writeConfig', async () => { await writeConfig({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'config.json', - content: `{ + 'config.json', + `{ "key": "value" }`, - }, ], ]); }); @@ -49,25 +47,11 @@ test('writeConfig empty config', async () => { config: {}, }; await writeConfig({ components, context }); - expect(mockWriteBuildArtifact.mock.calls).toEqual([ - [ - { - filePath: 'config.json', - content: `{}`, - }, - ], - ]); + expect(mockWriteBuildArtifact.mock.calls).toEqual([['config.json', `{}`]]); }); test('writeConfig config undefined', async () => { const components = {}; await writeConfig({ components, context }); - expect(mockWriteBuildArtifact.mock.calls).toEqual([ - [ - { - filePath: 'config.json', - content: `{}`, - }, - ], - ]); + expect(mockWriteBuildArtifact.mock.calls).toEqual([['config.json', `{}`]]); }); diff --git a/packages/build/src/build/writeConnections.js b/packages/build/src/build/writeConnections.js index 8d4e24faf..d5c346674 100644 --- a/packages/build/src/build/writeConnections.js +++ b/packages/build/src/build/writeConnections.js @@ -22,10 +22,10 @@ async function writeConnections({ components, context }) { throw new Error(`Connections is not an array.`); } const writePromises = components.connections.map(async (connection) => { - await context.writeBuildArtifact({ - filePath: `connections/${connection.connectionId}.json`, - content: JSON.stringify(connection, null, 2), - }); + await context.writeBuildArtifact( + `connections/${connection.connectionId}.json`, + JSON.stringify(connection, null, 2) + ); }); return Promise.all(writePromises); } diff --git a/packages/build/src/build/writeConnections.test.js b/packages/build/src/build/writeConnections.test.js index 9fcbc4b41..dc3d1e09f 100644 --- a/packages/build/src/build/writeConnections.test.js +++ b/packages/build/src/build/writeConnections.test.js @@ -40,16 +40,14 @@ test('writeConnections write connection', async () => { await writeConnections({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'connections/connection1.json', - content: `{ + 'connections/connection1.json', + `{ "id": "connection:connection1", "connectionId": "connection1", "properties": { "prop": "val" } }`, - }, ], ]); }); @@ -70,22 +68,18 @@ test('writeConnections multiple connection', async () => { await writeConnections({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'connections/connection1.json', - content: `{ + 'connections/connection1.json', + `{ "id": "connection:connection1", "connectionId": "connection1" }`, - }, ], [ - { - filePath: 'connections/connection2.json', - content: `{ + 'connections/connection2.json', + `{ "id": "connection:connection2", "connectionId": "connection2" }`, - }, ], ]); }); diff --git a/packages/build/src/build/writeGlobal.js b/packages/build/src/build/writeGlobal.js index 0c286b817..41ab392cf 100644 --- a/packages/build/src/build/writeGlobal.js +++ b/packages/build/src/build/writeGlobal.js @@ -23,10 +23,7 @@ async function writeGlobal({ components, context }) { if (!type.isObject(components.global)) { throw new Error('Global is not an object.'); } - await context.writeBuildArtifact({ - filePath: 'global.json', - content: JSON.stringify(components.global, null, 2), - }); + await context.writeBuildArtifact('global.json', JSON.stringify(components.global, null, 2)); } export default writeGlobal; diff --git a/packages/build/src/build/writeGlobal.test.js b/packages/build/src/build/writeGlobal.test.js index 60983f62f..499f728fe 100644 --- a/packages/build/src/build/writeGlobal.test.js +++ b/packages/build/src/build/writeGlobal.test.js @@ -34,12 +34,10 @@ test('writeGlobal', async () => { await writeGlobal({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'global.json', - content: `{ + 'global.json', + `{ "key": "value" }`, - }, ], ]); }); @@ -49,27 +47,13 @@ test('writeGlobal empty global', async () => { global: {}, }; await writeGlobal({ components, context }); - expect(mockWriteBuildArtifact.mock.calls).toEqual([ - [ - { - filePath: 'global.json', - content: `{}`, - }, - ], - ]); + expect(mockWriteBuildArtifact.mock.calls).toEqual([['global.json', `{}`]]); }); test('writeGlobal global undefined', async () => { const components = {}; await writeGlobal({ components, context }); - expect(mockWriteBuildArtifact.mock.calls).toEqual([ - [ - { - filePath: 'global.json', - content: `{}`, - }, - ], - ]); + expect(mockWriteBuildArtifact.mock.calls).toEqual([['global.json', `{}`]]); }); test('writeGlobal global not an object', async () => { diff --git a/packages/build/src/build/writeMenus.js b/packages/build/src/build/writeMenus.js index 373d88a0f..e170954d1 100644 --- a/packages/build/src/build/writeMenus.js +++ b/packages/build/src/build/writeMenus.js @@ -20,10 +20,7 @@ async function writeMenus({ components, context }) { if (!type.isArray(components.menus)) { throw new Error('Menus is not an array.'); } - await context.writeBuildArtifact({ - filePath: 'menus.json', - content: JSON.stringify(components.menus, null, 2), - }); + await context.writeBuildArtifact('menus.json', JSON.stringify(components.menus, null, 2)); } export default writeMenus; diff --git a/packages/build/src/build/writeMenus.test.js b/packages/build/src/build/writeMenus.test.js index 4a2417653..ff8bb670b 100644 --- a/packages/build/src/build/writeMenus.test.js +++ b/packages/build/src/build/writeMenus.test.js @@ -38,16 +38,14 @@ test('writeMenus', async () => { await writeMenus({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'menus.json', - content: `[ + 'menus.json', + `[ { "id": "menu:default", "menuId": "default", "links": [] } ]`, - }, ], ]); }); @@ -57,14 +55,7 @@ test('writeMenus empty menus', async () => { menus: [], }; await writeMenus({ components, context }); - expect(mockWriteBuildArtifact.mock.calls).toEqual([ - [ - { - filePath: 'menus.json', - content: `[]`, - }, - ], - ]); + expect(mockWriteBuildArtifact.mock.calls).toEqual([['menus.json', `[]`]]); }); test('writeMenus menus undefined', async () => { diff --git a/packages/build/src/build/writePages.js b/packages/build/src/build/writePages.js index 3938f4fa5..0602077cf 100644 --- a/packages/build/src/build/writePages.js +++ b/packages/build/src/build/writePages.js @@ -20,10 +20,10 @@ async function writePage({ page, context }) { if (!type.isObject(page)) { throw new Error(`Page is not an object. Received ${JSON.stringify(page)}`); } - await context.writeBuildArtifact({ - filePath: `pages/${page.pageId}/${page.pageId}.json`, - content: JSON.stringify(page, null, 2), - }); + await context.writeBuildArtifact( + `pages/${page.pageId}/${page.pageId}.json`, + JSON.stringify(page, null, 2) + ); } async function writePages({ components, context }) { diff --git a/packages/build/src/build/writePages.test.js b/packages/build/src/build/writePages.test.js index 7f525ae5e..8a4d8daa8 100644 --- a/packages/build/src/build/writePages.test.js +++ b/packages/build/src/build/writePages.test.js @@ -39,15 +39,13 @@ test('writePages write page', async () => { await writePages({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'pages/page1/page1.json', - content: `{ + 'pages/page1/page1.json', + `{ "id": "page:page1", "pageId": "page1", "blockId": "page1", "requests": [] }`, - }, ], ]); }); @@ -72,26 +70,22 @@ test('writePages multiple pages', async () => { await writePages({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'pages/page1/page1.json', - content: `{ + 'pages/page1/page1.json', + `{ "id": "page:page1", "pageId": "page1", "blockId": "page1", "requests": [] }`, - }, ], [ - { - filePath: 'pages/page2/page2.json', - content: `{ + 'pages/page2/page2.json', + `{ "id": "page:page2", "pageId": "page2", "blockId": "page2", "requests": [] }`, - }, ], ]); }); diff --git a/packages/build/src/build/writePluginImports/writeBlockImports.js b/packages/build/src/build/writePluginImports/writeBlockImports.js index 921a9086c..a08cd7543 100644 --- a/packages/build/src/build/writePluginImports/writeBlockImports.js +++ b/packages/build/src/build/writePluginImports/writeBlockImports.js @@ -17,13 +17,13 @@ import generateImportFile from './generateImportFile.js'; async function writeBlockImports({ components, context }) { - await context.writeBuildArtifact({ - filePath: 'plugins/blocks.js', - content: generateImportFile({ + await context.writeBuildArtifact( + 'plugins/blocks.js', + generateImportFile({ types: components.types.blocks, importPath: 'blocks', - }), - }); + }) + ); } export default writeBlockImports; diff --git a/packages/build/src/build/writePluginImports/writeConnectionImports.js b/packages/build/src/build/writePluginImports/writeConnectionImports.js index a3dd03b22..e825db7e5 100644 --- a/packages/build/src/build/writePluginImports/writeConnectionImports.js +++ b/packages/build/src/build/writePluginImports/writeConnectionImports.js @@ -17,13 +17,13 @@ import generateImportFile from './generateImportFile.js'; async function writeConnectionImports({ components, context }) { - await context.writeBuildArtifact({ - filePath: 'plugins/connections.js', - content: generateImportFile({ + await context.writeBuildArtifact( + 'plugins/connections.js', + generateImportFile({ types: components.types.connections, importPath: 'connections', - }), - }); + }) + ); } export default writeConnectionImports; diff --git a/packages/build/src/build/writePluginImports/writeIconImports.js b/packages/build/src/build/writePluginImports/writeIconImports.js index be5101552..b39f77a8b 100644 --- a/packages/build/src/build/writePluginImports/writeIconImports.js +++ b/packages/build/src/build/writePluginImports/writeIconImports.js @@ -28,10 +28,7 @@ export default { async function writeIconImports({ components, context }) { const templateFn = nunjucksFunction(template); - await context.writeBuildArtifact({ - filePath: 'plugins/icons.js', - content: templateFn({ packages: components.icons }), - }); + await context.writeBuildArtifact('plugins/icons.js', templateFn({ packages: components.icons })); } export default writeIconImports; diff --git a/packages/build/src/build/writePluginImports/writeOperatorImports.js b/packages/build/src/build/writePluginImports/writeOperatorImports.js index aa486ccb0..060061eb8 100644 --- a/packages/build/src/build/writePluginImports/writeOperatorImports.js +++ b/packages/build/src/build/writePluginImports/writeOperatorImports.js @@ -18,20 +18,20 @@ import generateImportFile from './generateImportFile.js'; async function writeOperatorImports({ components, context }) { // TODO: import _not and _type for validation. - await context.writeBuildArtifact({ - filePath: 'plugins/operatorsClient.js', - content: generateImportFile({ + await context.writeBuildArtifact( + 'plugins/operatorsClient.js', + generateImportFile({ types: components.types.operators.client, importPath: 'operators/client', - }), - }); - await context.writeBuildArtifact({ - filePath: 'plugins/operatorsServer.js', - content: generateImportFile({ + }) + ); + await context.writeBuildArtifact( + 'plugins/operatorsServer.js', + generateImportFile({ types: components.types.operators.server, importPath: 'operators/server', - }), - }); + }) + ); } export default writeOperatorImports; diff --git a/packages/build/src/build/writePluginImports/writeStyleImports.js b/packages/build/src/build/writePluginImports/writeStyleImports.js index b29b2d166..b26d6899f 100644 --- a/packages/build/src/build/writePluginImports/writeStyleImports.js +++ b/packages/build/src/build/writePluginImports/writeStyleImports.js @@ -24,10 +24,10 @@ const template = `@import '@lowdefy/layout/style.less'; async function writeStyleImports({ components, context }) { const templateFn = nunjucksFunction(template); - await context.writeBuildArtifact({ - filePath: 'plugins/styles.less', - content: templateFn({ styles: components.styles }), - }); + await context.writeBuildArtifact( + 'plugins/styles.less', + templateFn({ styles: components.styles }) + ); } export default writeStyleImports; diff --git a/packages/build/src/build/writeRequests.js b/packages/build/src/build/writeRequests.js index 300c26b6d..683a95424 100644 --- a/packages/build/src/build/writeRequests.js +++ b/packages/build/src/build/writeRequests.js @@ -19,10 +19,10 @@ import { type } from '@lowdefy/helpers'; async function writeRequestsOnPage({ page, context }) { return Promise.all( page.requests.map(async (request) => { - await context.writeBuildArtifact({ - filePath: `pages/${page.pageId}/requests/${request.requestId}.json`, - content: JSON.stringify(request, null, 2), - }); + await context.writeBuildArtifact( + `pages/${page.pageId}/requests/${request.requestId}.json`, + JSON.stringify(request, null, 2) + ); delete request.properties; delete request.type; delete request.connectionId; diff --git a/packages/build/src/build/writeRequests.test.js b/packages/build/src/build/writeRequests.test.js index 9cb3e6296..0c1d87991 100644 --- a/packages/build/src/build/writeRequests.test.js +++ b/packages/build/src/build/writeRequests.test.js @@ -49,9 +49,8 @@ test('writeRequests write request', async () => { await writeRequests({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'pages/page1/requests/request1.json', - content: `{ + 'pages/page1/requests/request1.json', + `{ "id": "request:page1:request1", "requestId": "request1", "pageId": "page1", @@ -65,7 +64,6 @@ test('writeRequests write request', async () => { "key": "value" } }`, - }, ], ]); }); @@ -104,9 +102,8 @@ test('writeRequests write multiple requests on a page', async () => { await writeRequests({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'pages/page1/requests/request1.json', - content: `{ + 'pages/page1/requests/request1.json', + `{ "id": "request:page1:request1", "requestId": "request1", "pageId": "page1", @@ -120,12 +117,10 @@ test('writeRequests write multiple requests on a page', async () => { "key": "value" } }`, - }, ], [ - { - filePath: 'pages/page1/requests/request2.json', - content: `{ + 'pages/page1/requests/request2.json', + `{ "id": "request:page1:request2", "requestId": "request2", "pageId": "page1", @@ -139,7 +134,6 @@ test('writeRequests write multiple requests on a page', async () => { "key": "value" } }`, - }, ], ]); }); @@ -184,9 +178,8 @@ test('writeRequests write requests on a for multiple pages', async () => { await writeRequests({ components, context }); expect(mockWriteBuildArtifact.mock.calls).toEqual([ [ - { - filePath: 'pages/page1/requests/request1.json', - content: `{ + 'pages/page1/requests/request1.json', + `{ "id": "request:page1:request1", "requestId": "request1", "pageId": "page1", @@ -200,12 +193,10 @@ test('writeRequests write requests on a for multiple pages', async () => { "key": "value" } }`, - }, ], [ - { - filePath: 'pages/page2/requests/request1.json', - content: `{ + 'pages/page2/requests/request1.json', + `{ "id": "request:page2:request1", "requestId": "request1", "pageId": "page2", @@ -219,7 +210,6 @@ test('writeRequests write requests on a for multiple pages', async () => { "key": "value" } }`, - }, ], ]); }); diff --git a/packages/build/src/build/writeTypes.js b/packages/build/src/build/writeTypes.js index 487ed8bf6..c9a54b183 100644 --- a/packages/build/src/build/writeTypes.js +++ b/packages/build/src/build/writeTypes.js @@ -15,10 +15,7 @@ */ async function writeTypes({ components, context }) { - await context.writeBuildArtifact({ - filePath: 'types.json', - content: JSON.stringify(components.types, null, 2), - }); + await context.writeBuildArtifact('types.json', JSON.stringify(components.types, null, 2)); } export default writeTypes; diff --git a/packages/build/src/index.js b/packages/build/src/index.js index eebfaa50a..3c8e7832f 100644 --- a/packages/build/src/index.js +++ b/packages/build/src/index.js @@ -19,8 +19,8 @@ import { readFile } from '@lowdefy/node-utils'; import createCounter from './utils/createCounter.js'; -import createReadConfigFile from './utils/files/readConfigFile.js'; -import createWriteBuildArtifact from './utils/files/writeBuildArtifact.js'; +import createReadConfigFile from './utils/readConfigFile.js'; +import createWriteBuildArtifact from './utils/writeBuildArtifact.js'; import addDefaultPages from './build/addDefaultPages/addDefaultPages.js'; import buildAuth from './build/buildAuth/buildAuth.js'; diff --git a/packages/build/src/utils/files/writeBuildArtifact.test.js b/packages/build/src/utils/files/writeBuildArtifact.test.js deleted file mode 100644 index 5f52c26cf..000000000 --- a/packages/build/src/utils/files/writeBuildArtifact.test.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - Copyright 2020-2021 Lowdefy, Inc - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -import fs from 'fs'; -import path from 'path'; -import createWriteBuildArtifact from './writeBuildArtifact.js'; - -const directories = { build: path.resolve(process.cwd(), 'src/test/fileSetter') }; - -test('writeFile', async () => { - const filePath = path.resolve(directories.build, 'writeFile.txt'); - try { - fs.unlinkSync(filePath); - } catch (error) { - //pass - } - expect(fs.existsSync(filePath)).toBe(false); - const writeBuildArtifact = createWriteBuildArtifact({ directories }); - - await writeBuildArtifact({ - filePath: 'writeFile.txt', - content: 'Test fileSetter file', - }); - const res = fs.readFileSync(filePath, 'utf8'); - expect(res).toEqual('Test fileSetter file'); - try { - fs.unlinkSync(filePath); - } catch (error) { - //pass - } -}); diff --git a/packages/build/src/utils/files/readConfigFile.js b/packages/build/src/utils/readConfigFile.js similarity index 100% rename from packages/build/src/utils/files/readConfigFile.js rename to packages/build/src/utils/readConfigFile.js diff --git a/packages/build/src/utils/files/readConfigFile.test.js b/packages/build/src/utils/readConfigFile.test.js similarity index 100% rename from packages/build/src/utils/files/readConfigFile.test.js rename to packages/build/src/utils/readConfigFile.test.js diff --git a/packages/build/src/utils/files/writeBuildArtifact.js b/packages/build/src/utils/writeBuildArtifact.js similarity index 85% rename from packages/build/src/utils/files/writeBuildArtifact.js rename to packages/build/src/utils/writeBuildArtifact.js index e8c749c71..7b6e14a5e 100644 --- a/packages/build/src/utils/files/writeBuildArtifact.js +++ b/packages/build/src/utils/writeBuildArtifact.js @@ -18,8 +18,8 @@ import path from 'path'; import { writeFile } from '@lowdefy/node-utils'; function createWriteBuildArtifact({ directories }) { - async function writeBuildArtifact({ filePath, content }) { - return writeFile(path.resolve(directories.build, filePath), content); + async function writeBuildArtifact(filePath, content) { + await writeFile(path.join(directories.build, filePath), content); } return writeBuildArtifact; } diff --git a/packages/build/src/utils/writeBuildArtifact.test.js b/packages/build/src/utils/writeBuildArtifact.test.js new file mode 100644 index 000000000..3a906a432 --- /dev/null +++ b/packages/build/src/utils/writeBuildArtifact.test.js @@ -0,0 +1,33 @@ +/* + Copyright 2020-2021 Lowdefy, Inc + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +jest.mock('@lowdefy/node-utils', () => { + return { + writeFile: jest.fn(), + }; +}); + +const directories = { build: '/build' }; + +test('Write build artifact.', async () => { + const nodeUtils = await import('@lowdefy/node-utils'); + nodeUtils.readFile.mockImplementation(() => Promise.resolve(null)); + const createWriteBuildArtifact = (await import('./writeBuildArtifact.js')).default; + + const writeBuildArtifact = createWriteBuildArtifact({ directories }); + + await writeBuildArtifact('artifact.txt', 'Test artifact content'); + expect(nodeUtils.writeFile.mock.calls).toEqual([ + ['/build/artifact.txt', 'Test artifact content'], + ]); +});