Hi Akshay,
Please find the attached patch. I have improved the code coverage of
Function node and also fixed the test cases which were failing for Cast
,Subscription and Publication node.
On Tue, Aug 24, 2021 at 10:54 AM Pradip Parkale <
[email protected]> wrote:
> Hi Hackers,
>
> Please find the attached patch for RM6677 and RM6632 [React] Port
> Procedure and Function node to react.
>
> Also Updated a few test cases for previous ported nodes.
>
> --
> Thanks & Regards,
> Pradip Parkale
> Software Engineer | EnterpriseDB Corporation
>
--
Thanks & Regards,
Pradip Parkale
Software Engineer | EnterpriseDB Corporation
diff --git a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/default/test.json b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/default/test.json
index f3f7fdc5d..fd9f7dfae 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/default/test.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/default/test.json
@@ -7,7 +7,7 @@
"sql_endpoint": "NODE-cast.sql_id",
"msql_endpoint": "NODE-cast.msql",
"data": {
- "castcontext": "IMPLICIT",
+ "castcontext": true,
"encoding": "UTF8",
"name": "money->bigint",
"srctyp": "money",
@@ -43,7 +43,7 @@
"sql_endpoint": "NODE-cast.sql_id",
"msql_endpoint": "NODE-cast.msql",
"data": {
- "castcontext": "EXPLICIT",
+ "castcontext": false,
"encoding": "UTF8",
"name": "money->bigint",
"srctyp": "money",
diff --git a/web/pgadmin/browser/server_groups/servers/databases/publications/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/publications/tests/utils.py
index 69ff12f75..1ccece65a 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/publications/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/publications/tests/utils.py
@@ -27,7 +27,7 @@ def get_tables(self):
self.server_id) + '/' +
str(self.db_id) + '/',
content_type='html/json')
- return json.dumps([tables.json['data'][1]['value']])
+ return [tables.json['data'][1]['value']]
def create_publication_api(self):
diff --git a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.ui.js b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.ui.js
index ac29accb9..834de7a0c 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.ui.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/static/js/function.ui.js
@@ -161,11 +161,7 @@ export default class FunctionSchema extends BaseUISchema {
return false;
}
}
- isDisabled() {
- if (this.node_info && 'catalog' in this.node_info) {
- return true;
- }
- }
+
isGreaterThan95(state){
if (
this.node_info['node_info'].server.version < 90500 ||
@@ -195,35 +191,17 @@ export default class FunctionSchema extends BaseUISchema {
}
}
- isProcedure(state) {
-
- if (this.node_info && 'catalog' in this.node_info) {
- return true;
- }
-
- if (state.prorows) {
- var server = this.node_info['node_info']['server'];
- return !(server.version >= 90500 && state.proretset == true);
- }
- }
isReadonly() {
return !this.isNew();
}
- canVarAdd(){
- if(this.node_info && 'catalog' in this.node_info) {
- return false;
- }
- return true;
- }
-
get baseFields() {
let obj = this;
return [{
id: 'name', label: gettext('Name'), cell: 'string',
type: 'text', mode: ['properties', 'create', 'edit'],
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ disabled: obj.inCatalog(),
noEmpty: true,
},{
id: 'oid', label: gettext('OID'), cell: 'string',
@@ -231,11 +209,11 @@ export default class FunctionSchema extends BaseUISchema {
},{
id: 'funcowner', label: gettext('Owner'), cell: 'string',
options: this.fieldOptions.role, type: 'select',
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled : obj.isGreaterThan95,
+ disabled: (!(this.type === 'procedure')) ? obj.inCatalog() : obj.isGreaterThan95,
noEmpty: true,
},{
id: 'pronamespace', label: gettext('Schema'), cell: 'string',
- type: 'select', disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ type: 'select', disabled: obj.inCatalog(),
mode: ['create', 'edit'],
controlProps: {
allowClear: false,
@@ -252,7 +230,7 @@ export default class FunctionSchema extends BaseUISchema {
mode: ['properties'], visible: obj.isVisible,
},{
id: 'description', label: gettext('Comment'), cell: 'string',
- type: 'multiline', disabled: obj.isDisabled,
+ type: 'multiline', disabled: obj.inCatalog(),
},{
id: 'pronargs', label: gettext('Argument count'), cell: 'string',
type: 'text', group: gettext('Definition'), mode: ['properties'],
@@ -289,14 +267,14 @@ export default class FunctionSchema extends BaseUISchema {
function(state) {
if (state.lanname == 'c') { return true; }
return false;
- }, disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ }, disabled: obj.inCatalog(),
},{
id: 'prosrc_c', label: gettext('Link symbol'), cell: 'string',
type: 'text', group: gettext('Definition'), deps: ['lanname'], visible:
function(state) {
if (state.lanname == 'c') { return true; }
return false;
- }, disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ }, disabled: obj.inCatalog(),
},
{
id: 'arguments', label: gettext('Arguments'), cell: 'string',
@@ -306,7 +284,7 @@ export default class FunctionSchema extends BaseUISchema {
canDelete: true, mode: ['create', 'edit'],
columns: ['argtype', 'argmode', 'argname', 'argdefval'],
schema : new DefaultArgumentSchema(this.node_info, this.fieldOptions.getTypes),
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ disabled: obj.inCatalog(),
canDeleteRow: function() {
return obj.isNew();
},
@@ -320,7 +298,7 @@ export default class FunctionSchema extends BaseUISchema {
return false;
}
return true;
- }, disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ }, disabled: obj.inCatalog(),
},{
id: 'provolatile', label: gettext('Volatility'), cell: 'text',
type: 'select', group: gettext('Options'),
@@ -329,7 +307,7 @@ export default class FunctionSchema extends BaseUISchema {
{'label': 'VOLATILE', 'value': 'v'},
{'label': 'STABLE', 'value': 's'},
{'label': 'IMMUTABLE', 'value': 'i'},
- ], disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ ], disabled: obj.inCatalog(),
controlProps: {allowClear: false},
},{
id: 'proretset', label: gettext('Returns a set?'), type: 'switch',
@@ -337,12 +315,12 @@ export default class FunctionSchema extends BaseUISchema {
visible: obj.isVisible, readonly: obj.isReadonly,
},{
id: 'proisstrict', label: gettext('Strict?'), type: 'switch',
- group: gettext('Options'), disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isGreaterThan95,
+ group: gettext('Options'), disabled: obj.inCatalog(),
deps: ['lanname'],
},{
id: 'prosecdef', label: gettext('Security of definer?'),
group: gettext('Options'), type: 'switch',
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled: ()=>{
+ disabled: (!(this.type === 'procedure')) ? obj.inCatalog(): ()=>{
return obj.node_info['node_info'].server.version < 90500;
},
},{
@@ -358,13 +336,13 @@ export default class FunctionSchema extends BaseUISchema {
{'label': 'RESTRICTED', 'value': 'r'},
{'label': 'SAFE', 'value': 's'},
],
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isGreaterThan96,
+ disabled: (!(this.type === 'procedure')) ? obj.inCatalog(): obj.isGreaterThan96,
min_version: 90600,
controlProps: {allowClear: false},
},{
id: 'procost', label: gettext('Estimated cost'), group: gettext('Options'),
cell:'string', type: 'text', deps: ['lanname'],
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isGreaterThan95,
+ disabled: (!(this.type === 'procedure')) ? obj.inCatalog(): obj.isGreaterThan95,
},{
id: 'prorows', label: gettext('Estimated rows'), type: 'text',
deps: ['proretset'], visible: obj.isVisible,
@@ -379,7 +357,7 @@ export default class FunctionSchema extends BaseUISchema {
},{
id: 'proleakproof', label: gettext('Leak proof?'),
group: gettext('Options'), cell:'boolean', type: 'switch', min_version: 90200,
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isGreaterThan95,
+ disabled: (!(this.type === 'procedure')) ? obj.inCatalog(): obj.isGreaterThan95,
deps: ['lanname'],
},{
id: 'prosupportfunc', label: gettext('Support function'),
@@ -403,7 +381,7 @@ export default class FunctionSchema extends BaseUISchema {
id: 'variables', label: '', type: 'collection',
group: gettext('Parameters'),
schema: this.getNodeVariableSchema(),
- mode: ['edit', 'create'], canAdd: obj.canVarAdd, canEdit: false,
+ mode: ['edit', 'create'], canAdd: obj.inCatalog(), canEdit: false,
canDelete: true,
},
{
@@ -412,13 +390,13 @@ export default class FunctionSchema extends BaseUISchema {
uniqueCol : ['grantee', 'grantor'], type: 'collection',
group: 'Security', mode: ['edit', 'create'], canAdd: true,
canDelete: true,
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ disabled: obj.inCatalog(),
},{
id: 'seclabels', label: gettext('Security labels'), canAdd: true,
schema: new SecLabelSchema(), type: 'collection',
min_version: 90100, group: 'Security', mode: ['edit', 'create'],
canEdit: false, canDelete: true, uniqueCol : ['provider'],
- disabled: (!(this.type === 'procedure')) ? obj.isDisabled: obj.isProcedure,
+ disabled: obj.inCatalog(),
visible: function() {
return this.node_info && !(this.type === 'procedure');
},
diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/10_plus/test.json b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/10_plus/test.json
index d9cf45bdd..c60a0d447 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/10_plus/test.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/10_plus/test.json
@@ -21,7 +21,7 @@
"port": 5432,
"password": "edb",
"sync": "off",
- "pub": "[\"sample__1\"]"
+ "pub": ["sample__1"]
},
"expected_sql_file": "create_subscription.sql",
"expected_msql_file": "create_subscription_msql.sql"
diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/subscription_test_data.json b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/subscription_test_data.json
index dca2e5a78..60a1a1348 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/subscription_test_data.json
+++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/subscription_test_data.json
@@ -19,7 +19,7 @@
"port": 5432,
"password": "",
"sync": "off",
- "pub": "[\"sample__1\"]"
+ "pub": ["sample__1"]
},
"mocking_required": false,
"mock_data": {},
@@ -47,7 +47,7 @@
"port": 5432,
"password": "",
"sync": "off",
- "pub": "[\"sample__1\"]"
+ "pub": ["sample__1"]
},
"mocking_required": false,
"mock_data": {},
@@ -75,7 +75,7 @@
"port": 5432,
"password": "",
"sync": "off",
- "pub": "[\"sample__1\"]"
+ "pub": ["sample__1"]
},
"mocking_required": false,
"mock_data": {},
@@ -103,7 +103,7 @@
"port": 5432,
"password": "",
"sync": "off",
- "pub": "[\"sample__1\"]"
+ "pub": ["sample__1"]
},
"mocking_required": true,
"mock_data": {
@@ -133,7 +133,7 @@
"port": 5432,
"password": "",
"sync": "off",
- "pub": "[\"sample__1\"]"
+ "pub": ["sample__1"]
},
"mocking_required": true,
"mock_data": {
diff --git a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/utils.py b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/utils.py
index c54d22f18..9b4b58a87 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/subscriptions/tests/utils.py
@@ -27,7 +27,7 @@ def get_tables(self):
self.server_id) + '/' +
str(self.db_id) + '/',
content_type='html/json')
- return json.dumps([tables.json['data'][1]['value']])
+ return [tables.json['data'][1]['value']]
def create_subscription_api(self):
diff --git a/web/regression/javascript/schema_ui_files/functions.ui.spec.js b/web/regression/javascript/schema_ui_files/functions.ui.spec.js
index e9f78663e..f83341f18 100644
--- a/web/regression/javascript/schema_ui_files/functions.ui.spec.js
+++ b/web/regression/javascript/schema_ui_files/functions.ui.spec.js
@@ -463,7 +463,8 @@ describe('FunctionSchema', ()=>{
/>);
});
- it('pronamespace disabled', ()=>{
+
+ it('proparallel disabled', ()=>{
let editSchemaObj = new FunctionSchema(
@@ -486,7 +487,8 @@ describe('FunctionSchema', ()=>{
server: {
host: '127.0.0.1',
port: 5432,
- server_type: 'postgres',
+
+ server_type: 'ppas',
user: {
id: 10,
name: 'postgres',
@@ -498,11 +500,12 @@ describe('FunctionSchema', ()=>{
},
},
{
- type: 'procedure',
+
+ type: 'function',
},
{
funcowner: 'postgres',
- pronamespace: 'public',
+ lanname: 'edbspl',
}
);