2020-05-27 12:26:29 +03:00
import { QueryType } from './../integration/validators/validators' ;
2019-09-25 18:46:28 +03:00
import { ADMIN_SECRET_HEADER_KEY } from '../../src/constants' ;
2018-07-09 11:04:53 +03:00
export const baseUrl = Cypress . config ( 'baseUrl' ) ;
2020-05-27 12:26:29 +03:00
2018-06-28 07:57:37 +03:00
export const dataTypes = [
'serial' ,
'bigserial' ,
'integer' ,
'bigint' ,
2018-07-18 15:46:04 +03:00
'uuid' ,
2018-06-28 07:57:37 +03:00
'text' ,
'numeric' ,
'date' ,
2019-05-22 14:23:30 +03:00
'timestamptz' ,
'timetz' ,
2018-06-28 07:57:37 +03:00
'boolean' ,
] ;
2020-05-27 12:26:29 +03:00
export const typeDefaults : { [ key : string ] : string } = {
2018-06-28 07:57:37 +03:00
integer : '5555' ,
bigint : '5555555555' ,
2018-07-18 15:46:04 +03:00
uuid : 'gen_random_uuid()' ,
2018-06-28 07:57:37 +03:00
text : 'test-text' ,
numeric : '0.55555' ,
date : 'now()' ,
2019-05-22 14:23:30 +03:00
timestamptz : 'now()' ,
timetz : 'now()' ,
2018-06-28 07:57:37 +03:00
boolean : 'false' ,
} ;
2020-05-27 12:26:29 +03:00
export const queryTypes : QueryType [ ] = [ 'insert' , 'select' , 'update' , 'delete' ] ;
export const getColName = ( i : number ) = > ` Apic_test_column_ ${ i } ` ;
export const getTableName = ( i : number , testName = '' ) = >
2019-05-25 10:42:21 +03:00
` Apic_test_table_ ${ testName } _ ${ i } ` ;
2020-05-27 12:26:29 +03:00
export const getElementFromAlias = ( alias : string ) = > ` [data-test= ${ alias } ] ` ;
export const getElementFromClassName = ( cn : string ) = > ` . ${ cn } ` ;
export const tableColumnTypeSelector = ( alias : string ) = > {
2019-05-22 14:23:30 +03:00
cy . get ( ` ${ getElementFromAlias ( alias ) } ` )
. children ( 'div' )
. click ( )
. find ( 'input' )
. focus ( ) ;
} ;
2020-05-27 12:26:29 +03:00
export const makeDataAPIUrl = ( dataApiUrl : string ) = > ` ${ dataApiUrl } /v1/query ` ;
interface APIPayload {
[ key : string ] : any ;
}
export const makeDataAPIOptions = (
dataApiUrl : string ,
key : string ,
body : APIPayload
) = > ( {
2018-06-28 07:57:37 +03:00
method : 'POST' ,
url : makeDataAPIUrl ( dataApiUrl ) ,
headers : {
2019-09-25 18:46:28 +03:00
[ ADMIN_SECRET_HEADER_KEY ] : key ,
2018-06-28 07:57:37 +03:00
} ,
body ,
failOnStatusCode : false ,
} ) ;
2019-01-25 06:31:54 +03:00
2020-05-27 12:26:29 +03:00
export const testCustomFunctionDefinition = (
i : string
) = > ` create function search_posts ${ ` _ ${ i } ` } (search text) returns setof post as $ $ select * from post where title ilike ('%' || search || '%') or content ilike ('%' || search || '%') $ $ language sql stable;
2019-01-25 06:31:54 +03:00
` ;
2020-05-27 12:26:29 +03:00
export const getCustomFunctionName = ( i : number ) = > ` search_posts ${ ` _ ${ i } ` } ` ;
2019-01-25 06:31:54 +03:00
2020-05-27 12:26:29 +03:00
export const testCustomFunctionSQL = ( i : number ) = > {
2019-01-25 06:31:54 +03:00
return {
type : 'bulk' ,
args : [
{
type : 'run_sql' ,
args : {
sql : ` CREATE OR REPLACE FUNCTION public.search_posts_ ${ i } (search text) \ n RETURNS SETOF post \ n LANGUAGE sql \ n STABLE \ nAS $ function $ \ n select * \ n from post \ n where \ n title ilike ('%' || search || '%') or \ n content ilike ('%' || search || '%') \ n $ function $ \ n ` ,
cascade : false ,
} ,
} ,
{
type : 'track_function' ,
args : {
name : ` search_posts_ ${ i } ` ,
schema : 'public' ,
} ,
} ,
] ,
} ;
} ;
export const createTable = ( ) = > {
return {
type : 'bulk' ,
args : [
{
type : 'run_sql' ,
args : {
sql :
'create table post (\n id serial PRIMARY KEY,\n title TEXT,\n content TEXT\n )' ,
cascade : false ,
} ,
} ,
{
type : 'add_existing_table_or_view' ,
args : {
name : 'post' ,
schema : 'public' ,
} ,
} ,
] ,
} ;
} ;
export const dropTable = ( ) = > {
return {
type : 'bulk' ,
args : [
{
type : 'run_sql' ,
args : {
sql : 'DROP table post;' ,
cascade : false ,
} ,
} ,
] ,
} ;
} ;
export const getSchema = ( ) = > 'public' ;