From 6e42b52414bb1438c6f8bbf272786ea49b03498f Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Wed, 9 Oct 2024 08:48:53 +0000 Subject: [PATCH] refactor(app-config): rename canConnect as connectionAllowed --- ...ersist_virtual_attributes_in_app_config.js | 14 +++++++---- .../__snapshots__/app-config.test.js.snap | 2 +- .../backend/src/models/app-auth-client.js | 2 +- packages/backend/src/models/app-config.js | 24 ++++++++++--------- .../backend/src/models/app-config.test.js | 12 +++++----- .../backend/src/serializers/app-config.js | 2 +- .../src/serializers/app-config.test.js | 2 +- .../test/mocks/rest/api/v1/apps/get-config.js | 2 +- .../ChooseConnectionSubstep/index.jsx | 2 +- packages/web/src/pages/Application/index.jsx | 6 ++--- packages/web/src/propTypes/propTypes.js | 2 +- 11 files changed, 38 insertions(+), 32 deletions(-) diff --git a/packages/backend/src/db/migrations/20241002121145_persist_virtual_attributes_in_app_config.js b/packages/backend/src/db/migrations/20241002121145_persist_virtual_attributes_in_app_config.js index 2559c66d..e2e94670 100644 --- a/packages/backend/src/db/migrations/20241002121145_persist_virtual_attributes_in_app_config.js +++ b/packages/backend/src/db/migrations/20241002121145_persist_virtual_attributes_in_app_config.js @@ -1,6 +1,6 @@ export async function up(knex) { await knex.schema.alterTable('app_configs', (table) => { - table.boolean('can_connect').defaultTo(false); + table.boolean('connectionAllowed').defaultTo(false); }); const appConfigs = await knex('app_configs').select('*'); @@ -17,17 +17,21 @@ export async function up(knex) { const shared = appConfig.shared; const active = appConfig.disabled === false; - const canConnectConditions = [hasSomeActiveAppAuthClients, shared, active]; - const canConnect = canConnectConditions.every(Boolean); + const connectionAllowedConditions = [ + hasSomeActiveAppAuthClients, + shared, + active, + ]; + const connectionAllowed = connectionAllowedConditions.every(Boolean); await knex('app_configs') .where('id', appConfig.id) - .update({ can_connect: canConnect }); + .update({ connection_allowed: connectionAllowed }); } } export async function down(knex) { await knex.schema.alterTable('app_configs', (table) => { - table.dropColumn('can_connect'); + table.dropColumn('connectionAllowed'); }); } diff --git a/packages/backend/src/models/__snapshots__/app-config.test.js.snap b/packages/backend/src/models/__snapshots__/app-config.test.js.snap index d92ce25f..7542159e 100644 --- a/packages/backend/src/models/__snapshots__/app-config.test.js.snap +++ b/packages/backend/src/models/__snapshots__/app-config.test.js.snap @@ -7,7 +7,7 @@ exports[`AppConfig model > jsonSchema should have correct validations 1`] = ` "default": false, "type": "boolean", }, - "canConnect": { + "connectionAllowed": { "default": false, "type": "boolean", }, diff --git a/packages/backend/src/models/app-auth-client.js b/packages/backend/src/models/app-auth-client.js index 72882685..0696051c 100644 --- a/packages/backend/src/models/app-auth-client.js +++ b/packages/backend/src/models/app-auth-client.js @@ -63,7 +63,7 @@ class AppAuthClient extends Base { async triggerAppConfigUpdate() { const appConfig = await this.$relatedQuery('appConfig').select('*'); - await appConfig?.updateCanConnectProperty(); + await appConfig?.updateConnectionAllowedProperty(); } // TODO: Make another abstraction like beforeSave instead of using diff --git a/packages/backend/src/models/app-config.js b/packages/backend/src/models/app-config.js index e36cd437..7a95f1de 100644 --- a/packages/backend/src/models/app-config.js +++ b/packages/backend/src/models/app-config.js @@ -12,7 +12,7 @@ class AppConfig extends Base { properties: { id: { type: 'string', format: 'uuid' }, key: { type: 'string' }, - canConnect: { type: 'boolean', default: false }, + connectionAllowed: { type: 'boolean', default: false }, allowCustomConnection: { type: 'boolean', default: false }, shared: { type: 'boolean', default: false }, disabled: { type: 'boolean', default: false }, @@ -46,7 +46,7 @@ class AppConfig extends Base { return await App.findOneByKey(this.key); } - async computeCanConnectProperty(oldAppConfig) { + async computeConnectionAllowedProperty(oldAppConfig) { const appAuthClients = await oldAppConfig.$relatedQuery('appAuthClients'); const hasSomeActiveAppAuthClients = !!appAuthClients?.some( (appAuthClient) => appAuthClient.active @@ -57,27 +57,29 @@ class AppConfig extends Base { const conditions = [hasSomeActiveAppAuthClients, shared, active]; - const canConnect = conditions.every(Boolean); + const connectionAllowed = conditions.every(Boolean); - return canConnect; + return connectionAllowed; } - async updateCanConnectProperty() { - const canConnect = await this.computeCanConnectProperty(this); + async updateConnectionAllowedProperty() { + const connectionAllowed = await this.computeConnectionAllowedProperty(this); return await this.$query().patch({ - canConnect, + connectionAllowed, }); } - async computeAndAssignCanConnectProperty(oldAppConfig) { - this.canConnect = await this.computeCanConnectProperty(oldAppConfig); + async computeAndAssignConnectionAllowedProperty(oldAppConfig) { + this.connectionAllowed = await this.computeConnectionAllowedProperty( + oldAppConfig + ); } async $beforeInsert(queryContext) { await super.$beforeInsert(queryContext); - await this.computeAndAssignCanConnectProperty(this); + await this.computeAndAssignConnectionAllowedProperty(this); } async $beforeUpdate(opt, queryContext) { @@ -85,7 +87,7 @@ class AppConfig extends Base { const oldAppConfig = opt.old; - await this.computeAndAssignCanConnectProperty(oldAppConfig); + await this.computeAndAssignConnectionAllowedProperty(oldAppConfig); } } diff --git a/packages/backend/src/models/app-config.test.js b/packages/backend/src/models/app-config.test.js index 11a37acd..26f08077 100644 --- a/packages/backend/src/models/app-config.test.js +++ b/packages/backend/src/models/app-config.test.js @@ -65,7 +65,7 @@ describe('AppConfig model', () => { }); }); - describe('canConnect', () => { + describe('connectionAllowed', () => { it('should return true when app is enabled, shared and allows custom connection with an active app auth client at least', async () => { await createAppAuthClient({ appKey: 'deepl', @@ -84,7 +84,7 @@ describe('AppConfig model', () => { key: 'deepl', }); - expect(appConfig.canConnect).toBe(true); + expect(appConfig.connectionAllowed).toBe(true); }); it('should return true when app is enabled, shared and allows custom connection with no active app auth client', async () => { @@ -100,7 +100,7 @@ describe('AppConfig model', () => { key: 'deepl', }); - expect(appConfig.canConnect).toBe(false); + expect(appConfig.connectionAllowed).toBe(false); }); it('should return false when app is enabled, shared and allows custom connection without any app auth clients', async () => { @@ -111,7 +111,7 @@ describe('AppConfig model', () => { key: 'deepl', }); - expect(appConfig.canConnect).toBe(false); + expect(appConfig.connectionAllowed).toBe(false); }); it('should return false when app is disabled', async () => { @@ -120,7 +120,7 @@ describe('AppConfig model', () => { allowCustomConnection: true, }); - expect(appConfig.canConnect).toBe(false); + expect(appConfig.connectionAllowed).toBe(false); }); it(`should return false when app doesn't allow custom connection`, async () => { @@ -129,7 +129,7 @@ describe('AppConfig model', () => { allowCustomConnection: false, }); - expect(appConfig.canConnect).toBe(false); + expect(appConfig.connectionAllowed).toBe(false); }); }); diff --git a/packages/backend/src/serializers/app-config.js b/packages/backend/src/serializers/app-config.js index 0efd562b..56e6243e 100644 --- a/packages/backend/src/serializers/app-config.js +++ b/packages/backend/src/serializers/app-config.js @@ -5,7 +5,7 @@ const appConfigSerializer = (appConfig) => { allowCustomConnection: appConfig.allowCustomConnection, shared: appConfig.shared, disabled: appConfig.disabled, - canConnect: appConfig.canConnect, + connectionAllowed: appConfig.connectionAllowed, canCustomConnect: appConfig.canCustomConnect, createdAt: appConfig.createdAt.getTime(), updatedAt: appConfig.updatedAt.getTime(), diff --git a/packages/backend/src/serializers/app-config.test.js b/packages/backend/src/serializers/app-config.test.js index c0ede918..9ade2769 100644 --- a/packages/backend/src/serializers/app-config.test.js +++ b/packages/backend/src/serializers/app-config.test.js @@ -16,7 +16,7 @@ describe('appConfig serializer', () => { allowCustomConnection: appConfig.allowCustomConnection, shared: appConfig.shared, disabled: appConfig.disabled, - canConnect: appConfig.canConnect, + connectionAllowed: appConfig.connectionAllowed, canCustomConnect: appConfig.canCustomConnect, createdAt: appConfig.createdAt.getTime(), updatedAt: appConfig.updatedAt.getTime(), diff --git a/packages/backend/test/mocks/rest/api/v1/apps/get-config.js b/packages/backend/test/mocks/rest/api/v1/apps/get-config.js index 5faee118..4cc6e011 100644 --- a/packages/backend/test/mocks/rest/api/v1/apps/get-config.js +++ b/packages/backend/test/mocks/rest/api/v1/apps/get-config.js @@ -6,7 +6,7 @@ const getAppConfigMock = (appConfig) => { allowCustomConnection: appConfig.allowCustomConnection, shared: appConfig.shared, disabled: appConfig.disabled, - canConnect: appConfig.canConnect, + connectionAllowed: appConfig.connectionAllowed, canCustomConnect: appConfig.canCustomConnect, createdAt: appConfig.createdAt.getTime(), updatedAt: appConfig.updatedAt.getTime(), diff --git a/packages/web/src/components/ChooseConnectionSubstep/index.jsx b/packages/web/src/components/ChooseConnectionSubstep/index.jsx index 4792045e..345e0dac 100644 --- a/packages/web/src/components/ChooseConnectionSubstep/index.jsx +++ b/packages/web/src/components/ChooseConnectionSubstep/index.jsx @@ -100,7 +100,7 @@ function ChooseConnectionSubstep(props) { }); } - if (appConfig?.data?.canConnect) { + if (appConfig?.data?.connectionAllowed) { options.push({ label: formatMessage('chooseConnectionSubstep.addNewSharedConnection'), value: ADD_SHARED_CONNECTION_VALUE, diff --git a/packages/web/src/pages/Application/index.jsx b/packages/web/src/pages/Application/index.jsx index e143c01b..bd3c9540 100644 --- a/packages/web/src/pages/Application/index.jsx +++ b/packages/web/src/pages/Application/index.jsx @@ -77,14 +77,14 @@ export default function Application() { const connectionOptions = React.useMemo(() => { const shouldHaveCustomConnection = - appConfig?.data?.canConnect && appConfig?.data?.canCustomConnect; + appConfig?.data?.connectionAllowed && appConfig?.data?.canCustomConnect; const options = [ { label: formatMessage('app.addConnection'), key: 'addConnection', 'data-test': 'add-connection-button', - to: URLS.APP_ADD_CONNECTION(appKey, appConfig?.data?.canConnect), + to: URLS.APP_ADD_CONNECTION(appKey, appConfig?.data?.connectionAllowed), disabled: !currentUserAbility.can('create', 'Connection'), }, ]; @@ -155,7 +155,7 @@ export default function Application() { disabled={ !allowed || (appConfig?.data && - !appConfig?.data?.canConnect && + !appConfig?.data?.connectionAllowed && !appConfig?.data?.canCustomConnect) || connectionOptions.every(({ disabled }) => disabled) } diff --git a/packages/web/src/propTypes/propTypes.js b/packages/web/src/propTypes/propTypes.js index 29629d23..ef730f33 100644 --- a/packages/web/src/propTypes/propTypes.js +++ b/packages/web/src/propTypes/propTypes.js @@ -460,7 +460,7 @@ export const AppConfigPropType = PropTypes.shape({ id: PropTypes.string, key: PropTypes.string, allowCustomConnection: PropTypes.bool, - canConnect: PropTypes.bool, + connectionAllowed: PropTypes.bool, canCustomConnect: PropTypes.bool, shared: PropTypes.bool, disabled: PropTypes.bool,