diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js index 1bad38d2..76e22aaa 100644 --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.js @@ -6,6 +6,7 @@ // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// +import CatalogObjectColumnSchema from './catalog_object_column.ui'; define('pgadmin.node.catalog_object_column', [ 'sources/gettext', 'jquery', 'underscore', 'sources/pgadmin', @@ -41,6 +42,9 @@ define('pgadmin.node.catalog_object_column', [ this.initialized = true; }, + getSchema: function() { + return new CatalogObjectColumnSchema(); + }, model: pgAdmin.Browser.Node.Model.extend({ defaults: { attname: undefined, @@ -56,24 +60,12 @@ define('pgadmin.node.catalog_object_column', [ schema: [{ id: 'attname', label: gettext('Column'), cell: 'string', type: 'text', readonly: true, - },{ - id: 'attowner', label: gettext('Owner'), cell: 'string', - type: 'text', readonly: true, },{ id: 'attnum', label: gettext('Position'), cell: 'string', type: 'text', readonly: true, },{ id: 'cltype', label: gettext('Data type'), cell: 'string', group: gettext('Definition'), type: 'text', readonly: true, - },{ - id: 'collspcname', label: gettext('Collation'), cell: 'string', - group: gettext('Definition'), type: 'text', readonly: true, - },{ - id: 'attacl', label: gettext('Privileges'), cell: 'string', - group: gettext('Security'), type: 'text', readonly: true, - },{ - id: 'is_sys_obj', label: gettext('System column?'), - cell:'boolean', type: 'switch', mode: ['properties'], },{ id: 'description', label: gettext('Comment'), cell: 'string', type: 'multiline', readonly: true, diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.ui.js new file mode 100644 index 00000000..98541eb4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.ui.js @@ -0,0 +1,66 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2021, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + +import gettext from 'sources/gettext'; +import BaseUISchema from 'sources/SchemaView/base_schema.ui'; + + +export default class CatalogObjectColumnSchema extends BaseUISchema { + constructor(fieldOptions={}, initValues) { + super({ + attname: undefined, + attowner: undefined, + attnum: undefined, + cltype: undefined, + collspcname: undefined, + attacl: undefined, + description: undefined, + ...initValues + }); + + this.fieldOptions = { + ...fieldOptions, + }; + + } + + get idAttribute() { + return 'oid'; + } + + get baseFields() { + return [ + { + id: 'attname', label: gettext('Column'), cell: 'string', + type: 'text', readonly: true, + },{ + id: 'attowner', label: gettext('Owner'), cell: 'string', + type: 'text', readonly: true, + },{ + id: 'attnum', label: gettext('Position'), cell: 'string', + type: 'text', readonly: true, + },{ + id: 'cltype', label: gettext('Data type'), cell: 'string', + group: gettext('Definition'), type: 'text', readonly: true, + },{ + id: 'collspcname', label: gettext('Collation'), cell: 'string', + group: gettext('Definition'), type: 'text', readonly: true, + },{ + id: 'attacl', label: gettext('Privileges'), cell: 'string', + group: gettext('Security'), type: 'text', readonly: true, + },{ + id: 'is_sys_obj', label: gettext('System column?'), + cell:'boolean', type: 'switch', mode: ['properties'], + },{ + id: 'description', label: gettext('Comment'), cell: 'string', + type: 'multiline', readonly: true, + } + ]; + } +} diff --git a/web/regression/javascript/schema_ui_files/catalog_object_column.ui.spec.js b/web/regression/javascript/schema_ui_files/catalog_object_column.ui.spec.js new file mode 100644 index 00000000..33bc5485 --- /dev/null +++ b/web/regression/javascript/schema_ui_files/catalog_object_column.ui.spec.js @@ -0,0 +1,73 @@ +///////////////////////////////////////////////////////////// +// +// pgAdmin 4 - PostgreSQL Tools +// +// Copyright (C) 2013 - 2021, The pgAdmin Development Team +// This software is released under the PostgreSQL Licence +// +////////////////////////////////////////////////////////////// + +import jasmineEnzyme from 'jasmine-enzyme'; +import React from 'react'; +import '../helper/enzyme.helper'; +import { createMount } from '@material-ui/core/test-utils'; +import pgAdmin from 'sources/pgadmin'; +import {messages} from '../fake_messages'; +import SchemaView from '../../../pgadmin/static/js/SchemaView'; +import CatalogObjectColumn from '../../../pgadmin/browser/server_groups/servers/databases/schemas/catalog_objects/columns/static/js/catalog_object_column.ui'; + +describe('CatalogObjectColumn', ()=>{ + let mount; + let schemaObj = new CatalogObjectColumn(); + let getInitData = ()=>Promise.resolve({}); + + /* Use createMount so that material ui components gets the required context */ + /* https://material-ui.com/guides/testing/#api */ + beforeAll(()=>{ + mount = createMount(); + }); + + afterAll(() => { + mount.cleanUp(); + }); + + beforeEach(()=>{ + jasmineEnzyme(); + /* messages used by validators */ + pgAdmin.Browser = pgAdmin.Browser || {}; + pgAdmin.Browser.messages = pgAdmin.Browser.messages || messages; + pgAdmin.Browser.utils = pgAdmin.Browser.utils || {}; + }); + + it('create', ()=>{ + mount({}} + onClose={()=>{}} + onHelp={()=>{}} + onEdit={()=>{}} + onDataChange={()=>{}} + confirmOnCloseReset={false} + hasSQL={false} + disableSqlHelp={false} + />); + }); + + it('properties', ()=>{ + mount({}} + onEdit={()=>{}} + />); + }); + +});