2023-08-01 11:12:44 +00:00
/// <reference types="Cypress" />
import { GSHEET_DATA } from "../../fixtures/test-data-gsheet" ;
import {
homePage ,
gsheetHelper ,
dataSources ,
agHelper ,
assertHelper ,
table ,
entityExplorer ,
deployMode ,
locators ,
draggableWidgets ,
2023-10-11 07:34:47 +00:00
appSettings ,
2023-08-01 11:12:44 +00:00
} from "../../support/Objects/ObjectsCore" ;
const workspaceName = "gsheet apps" ;
const dataSourceName = "gsheet" ;
let appName = "gsheet-app" ;
let spreadSheetName = "test-sheet" ;
describe ( "GSheet Miscellaneous Tests" , function ( ) {
const columnHeaders = [
"uniq_id" ,
"japanese_name" ,
"currencies" ,
"specialChars" ,
"product_name" ,
"manufacturer" ,
"price" ,
"rowIndex" ,
] ;
before ( "Setup app and spreadsheet" , function ( ) {
//Add a new app and an add new spreadsheet query
//Setting up the spreadsheet name
const uuid = Cypress . _ . random ( 0 , 10000 ) ;
spreadSheetName = spreadSheetName + "_" + uuid ;
appName = appName + "-" + uuid ;
//Adding query to insert a new spreadsheet
homePage . NavigateToHome ( ) ;
homePage . CreateAppInWorkspace ( workspaceName ) ;
homePage . RenameApplication ( appName ) ;
gsheetHelper . AddNewSpreadsheetQuery (
dataSourceName ,
spreadSheetName ,
JSON . stringify ( GSHEET_DATA ) ,
) ;
cy . get ( "@postExecute" ) . then ( ( interception : any ) = > {
2023-10-11 07:34:47 +00:00
agHelper . Sleep ( ) ;
2023-08-01 11:12:44 +00:00
expect (
interception . response . body . data . body . properties . title ,
) . to . deep . equal ( spreadSheetName ) ;
} ) ;
} ) ;
it ( "1. Add query from active ds tab and verify" , ( ) = > {
dataSources . CreateQueryFromActiveTab ( dataSourceName ) ;
// entityExplorer.CreateNewDsQuery(dataSourceName);
agHelper . RenameWithInPane ( "Fetch_Details" ) ;
dataSources . ValidateNSelectDropdown (
"Operation" ,
"Fetch Many" ,
"Fetch Details" ,
) ;
dataSources . ValidateNSelectDropdown ( "Entity" , "Spreadsheet" ) ;
agHelper . Sleep ( 500 ) ;
dataSources . ValidateNSelectDropdown ( "Spreadsheet" , "" , spreadSheetName ) ;
dataSources . RunQuery ( ) ;
cy . get ( "@postExecute" ) . then ( ( interception : any ) = > {
expect ( interception . response . body . data . body . name ) . to . deep . equal (
spreadSheetName ,
) ;
} ) ;
} ) ;
it ( "2. Add query from edit datasource page and verify" , ( ) = > {
dataSources . CreateQueryForDS ( dataSourceName , "" , "fetch_many" , false ) ;
dataSources . ValidateNSelectDropdown ( "Operation" , "Fetch Many" ) ;
dataSources . ValidateNSelectDropdown ( "Entity" , "Sheet Row(s)" ) ;
agHelper . Sleep ( 500 ) ;
dataSources . ValidateNSelectDropdown ( "Spreadsheet" , "" , spreadSheetName ) ;
dataSources . ValidateNSelectDropdown ( "Sheet name" , "" , "Sheet1" ) ;
dataSources . RunQueryNVerifyResponseViews ( GSHEET_DATA . length ) ;
dataSources . AssertQueryResponseHeaders ( columnHeaders ) ;
dataSources . AssertQueryTableResponse ( 0 , GSHEET_DATA [ 0 ] . uniq_id ) ;
dataSources . AssertQueryTableResponse ( 1 , "ホーンビィ 2014 カタログ" ) ; // Asserting other language
dataSources . AssertQueryTableResponse ( 2 , "₹, $, €, ¥, £" ) ; // Asserting different symbols
dataSources . AssertQueryTableResponse ( 3 , "!@#$%^&*" ) ; // Asserting special chars
} ) ;
it ( "3. Add query from global search and verify" , ( ) = > {
dataSources . AddQueryFromGlobalSearch ( dataSourceName ) ;
dataSources . ValidateNSelectDropdown ( "Operation" , "Fetch Many" ) ;
dataSources . ValidateNSelectDropdown ( "Entity" , "Sheet Row(s)" ) ;
agHelper . Sleep ( 500 ) ;
dataSources . ValidateNSelectDropdown ( "Spreadsheet" , "" , spreadSheetName ) ;
dataSources . ValidateNSelectDropdown ( "Sheet name" , "" , "Sheet1" ) ;
dataSources . RunQueryNVerifyResponseViews ( GSHEET_DATA . length ) ;
dataSources . AssertQueryResponseHeaders ( columnHeaders ) ;
dataSources . AssertQueryTableResponse ( 0 , GSHEET_DATA [ 0 ] . uniq_id ) ;
dataSources . AssertQueryTableResponse ( 1 , "ホーンビィ 2014 カタログ" ) ; // Asserting other language
dataSources . AssertQueryTableResponse ( 2 , "₹, $, €, ¥, £" ) ; // Asserting different symbols
dataSources . AssertQueryTableResponse ( 3 , "!@#$%^&*" ) ; // Asserting special chars
} ) ;
it ( "4. Generate CRUD page from active datasource page and verify" , ( ) = > {
// Navigating to active datasource page
dataSources . NavigateFromActiveDS ( dataSourceName , false , false ) ;
// Select the spreadsheet and sheet name
agHelper . GetNClick ( dataSources . _selectTableDropdown , 0 , true ) ;
agHelper . GetNClickByContains ( dataSources . _dropdownOption , spreadSheetName ) ;
agHelper . Sleep ( 1000 ) ;
agHelper . GetNClick ( dataSources . _selectSheetNameDropdown , 0 , true ) ;
agHelper . GetNClickByContains ( dataSources . _dropdownOption , "Sheet1" ) ;
// Click on generate page button and verify the page is generated
agHelper . GetNClick ( dataSources . _generatePageBtn ) ;
assertHelper . AssertNetworkStatus ( "@replaceLayoutWithCRUDPage" , 201 ) ;
agHelper . AssertContains ( "Successfully generated a page" ) ;
assertHelper . AssertNetworkStatus ( "@getActions" , 200 ) ;
assertHelper . AssertNetworkStatus ( "@postExecute" , 200 ) ;
assertHelper . AssertNetworkStatus ( "@updateLayout" , 200 ) ;
2023-08-30 10:54:37 +00:00
agHelper . ClickButton ( "Got it" ) ;
2023-08-01 11:12:44 +00:00
assertHelper . AssertNetworkStatus ( "@updateLayout" , 200 ) ;
//deploy the app and verify the table data
2023-08-01 14:19:42 +00:00
deployMode . DeployApp ( locators . _widgetInDeployed ( draggableWidgets . TABLE_V1 ) ) ;
2023-08-01 11:12:44 +00:00
const data = GSHEET_DATA . filter ( ( item ) = > item . rowIndex === "0" ) [ 0 ] ;
table . ReadTableRowColumnData ( 0 , 0 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . uniq_id ) ;
} ) ;
table . ReadTableRowColumnData ( 0 , 1 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . japanese_name ) ;
} ) ;
table . ReadTableRowColumnData ( 0 , 2 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . currencies ) ;
} ) ;
table . ReadTableRowColumnData ( 0 , 3 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . specialChars ) ;
} ) ;
table . ReadTableRowColumnData ( 0 , 4 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . product_name ) ;
} ) ;
//Validating loaded JSON form
2023-08-21 07:49:28 +00:00
agHelper . GetElement ( locators . _buttonByText ( "Update" ) ) . then ( ( selector ) = > {
2023-08-01 11:12:44 +00:00
cy . wrap ( selector )
. invoke ( "attr" , "class" )
. then ( ( classes ) = > {
expect ( classes ) . not . contain ( "bp3-disabled" ) ;
} ) ;
} ) ;
dataSources . AssertJSONFormHeader ( 0 , 13 , "Id" , "0" ) ;
deployMode . NavigateBacktoEditor ( ) ;
table . WaitUntilTableLoad ( ) ;
} ) ;
it ( "5. Generate CRUD page from entity explorer and verify" , ( ) = > {
// Adding pafe with data from entity explorer
entityExplorer . AddNewPage ( "Generate page with data" ) ;
// Select the datasource, spreadsheet and sheet name
agHelper . GetNClick ( dataSources . _selectDatasourceDropdown ) ;
agHelper . GetNClickByContains ( dataSources . _dropdownOption , dataSourceName ) ;
agHelper . Sleep ( 1000 ) ;
agHelper . GetNClick ( dataSources . _selectTableDropdown , 0 , true ) ;
agHelper . GetNClickByContains ( dataSources . _dropdownOption , spreadSheetName ) ;
agHelper . Sleep ( 1000 ) ;
agHelper . GetNClick ( dataSources . _selectSheetNameDropdown , 0 , true ) ;
agHelper . GetNClickByContains ( dataSources . _dropdownOption , "Sheet1" ) ;
// Click on generate page button and verify the page is generated
agHelper . GetNClick ( dataSources . _generatePageBtn ) ;
assertHelper . AssertNetworkStatus ( "@replaceLayoutWithCRUDPage" , 201 ) ;
agHelper . AssertContains ( "Successfully generated a page" ) ;
assertHelper . AssertNetworkStatus ( "@getActions" , 200 ) ;
assertHelper . AssertNetworkStatus ( "@postExecute" , 200 ) ;
assertHelper . AssertNetworkStatus ( "@updateLayout" , 200 ) ;
2023-08-30 10:54:37 +00:00
agHelper . ClickButton ( "Got it" ) ;
2023-08-01 11:12:44 +00:00
assertHelper . AssertNetworkStatus ( "@updateLayout" , 200 ) ;
//deploy the app and verify the table data
deployMode . DeployApp ( locators . _widgetInDeployed ( draggableWidgets . TABLE_V1 ) ) ;
const data = GSHEET_DATA . filter ( ( item ) = > item . rowIndex === "1" ) [ 0 ] ;
table . ReadTableRowColumnData ( 1 , 0 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . uniq_id ) ;
} ) ;
table . ReadTableRowColumnData ( 1 , 1 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . japanese_name ) ;
} ) ;
table . ReadTableRowColumnData ( 1 , 2 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . currencies ) ;
} ) ;
table . ReadTableRowColumnData ( 1 , 3 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . specialChars ) ;
} ) ;
table . ReadTableRowColumnData ( 1 , 5 , "v1" ) . then ( ( cellData ) = > {
expect ( cellData ) . to . eq ( data . manufacturer ) ;
} ) ;
//Validating loaded JSON form
2023-08-21 07:49:28 +00:00
agHelper . GetElement ( locators . _buttonByText ( "Update" ) ) . then ( ( selector ) = > {
2023-08-01 11:12:44 +00:00
cy . wrap ( selector )
. invoke ( "attr" , "class" )
. then ( ( classes ) = > {
expect ( classes ) . not . contain ( "bp3-disabled" ) ;
} ) ;
} ) ;
dataSources . AssertJSONFormHeader ( 0 , 13 , "Id" , "0" ) ;
deployMode . NavigateBacktoEditor ( ) ;
table . WaitUntilTableLoad ( ) ;
} ) ;
2023-10-11 07:34:47 +00:00
it ( "6. Bug: 16391 - Verify placeholder texts for insert one/many queries" , function ( ) {
// Verify place holder text for Insert one query
let placeholderText =
'{\n "name": {{nameInput.text}},\n "dob": {{dobPicker.formattedDate}},\n "gender": {{genderSelect.selectedOptionValue}} \n}' ;
gsheetHelper . EnterBasicQueryValues (
"Insert One" ,
dataSourceName ,
spreadSheetName ,
false ,
) ;
agHelper . AssertText (
dataSources . _gSheetQueryPlaceholder ,
"text" ,
placeholderText ,
) ;
// Verify place holder text for Insert many query
placeholderText =
'[{\n "name": {{nameInput.text}},\n "dob": {{dobPicker.formattedDate}},\n "gender": {{genderSelect.selectedOptionValue}} \n}]' ;
gsheetHelper . EnterBasicQueryValues (
"Insert Many" ,
dataSourceName ,
spreadSheetName ,
false ,
) ;
agHelper . AssertText (
dataSources . _gSheetQueryPlaceholder ,
"text" ,
placeholderText ,
) ;
} ) ;
// This test is commented since we can't use Cypress to go to the Google authorization screen. We will uncomment it whenever we figure out how to do it.
// it("7. Bug#26024 App level import of gsheet app", function () {
// homePage.NavigateToHome();
// homePage.CreateNewWorkspace("AppLevelImport");
// homePage.CreateAppInWorkspace("AppLevelImport", "AppLevelImportCheck");
// appSettings.OpenAppSettings();
// appSettings.GoToImport();
// agHelper.ClickButton("Import");
// homePage.ImportApp("ImportAppAllAccess.json", "", true);
// cy.wait("@importNewApplication").then(() => {
// agHelper.Sleep();
2023-10-19 18:12:01 +00:00
// agHelper.ClickButton("Save & Authorize");
2023-10-11 07:34:47 +00:00
// });
// cy.url().should("contain", "accounts.google.com");
// homePage.NavigateToHome();
// homePage.DeleteApplication("AppLevelImportCheck");
// homePage.DeleteWorkspace("AppLevelImport");
// });
2023-08-01 11:12:44 +00:00
after ( "Delete spreadsheet and app" , function ( ) {
// Delete spreadsheet and app
2023-10-11 07:34:47 +00:00
homePage . NavigateToHome ( ) ;
homePage . SearchAndOpenApp ( appName ) ;
2023-08-01 11:12:44 +00:00
gsheetHelper . DeleteSpreadsheetQuery ( dataSourceName , spreadSheetName ) ;
cy . get ( "@postExecute" ) . then ( ( interception : any ) = > {
expect ( interception . response . body . data . body . message ) . to . deep . equal (
"Deleted spreadsheet successfully!" ,
) ;
} ) ;
homePage . NavigateToHome ( ) ;
homePage . DeleteApplication ( appName ) ;
} ) ;
} ) ;