graphdb-workbench-tests 2.3.1 → 2.4.0-TR1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/fixtures/graphdb-import/resource-test-data.ttl +99 -0
  2. package/fixtures/graphql-editor/default-query-response.json +517 -0
  3. package/fixtures/locale-en.json +18 -5
  4. package/fixtures/namespaces/ontotext-generated-namespace.json +22 -0
  5. package/fixtures/queries/empty-query-response.json +11 -0
  6. package/integration/explore/graphs.overview.spec.js +4 -2
  7. package/integration/explore/similariti-index-create.spec.js +315 -0
  8. package/integration/explore/similarity-index.spec.js +88 -0
  9. package/integration/explore/similarity.spec.js +156 -47
  10. package/integration/explore/visual-graph/graphs-config.spec.js +452 -0
  11. package/integration/explore/{visual.graph.spec.js → visual-graph/visual.graph.spec.js} +145 -348
  12. package/integration/home/language-change.spec.js +3 -3
  13. package/integration/import/import.user.data.spec.js +4 -4
  14. package/integration/resource/resource.spec.js +354 -0
  15. package/integration/setup/jdbc-create.spec.js +316 -0
  16. package/integration/setup/jdbc.spec.js +99 -178
  17. package/integration/setup/my-settings.spec.js +9 -41
  18. package/integration/setup/sparql-template-create.js +141 -0
  19. package/integration/setup/sparql-templates.spec.js +82 -146
  20. package/integration/sparql-editor/actions/execute-query.spec.js +44 -0
  21. package/integration/sparql-editor/actions/expand-results-over-sameas.spec.js +136 -0
  22. package/integration/sparql-editor/actions/include-inferred-statements.spec.js +100 -0
  23. package/integration/sparql-editor/actions/save-query.spec.js +70 -0
  24. package/integration/sparql-editor/actions/show-saved-queries.spec.js +61 -0
  25. package/integration/sparql-editor/internationalization.spec.js +41 -0
  26. package/integration/sparql-editor/saved-query/abort-query.spec.js +60 -0
  27. package/integration/sparql-editor/saved-query/delete-query.spec.js +56 -0
  28. package/integration/sparql-editor/saved-query/edit-query.spec.js +68 -0
  29. package/integration/sparql-editor/saved-query/share-query.spec.js +78 -0
  30. package/integration/sparql-editor/sparql-editor.spec.js +20 -0
  31. package/integration/sparql-editor/yasgui-tabs.spec.js +107 -0
  32. package/integration/sparql-editor/yasr/download-as.spec.js +62 -0
  33. package/integration/sparql-editor/yasr/pagination.spec.js +234 -0
  34. package/integration/sparql-editor/yasr/table-plugin.spec.js +191 -0
  35. package/integration/sparql-editor/yasr/toolbar/visual-button.spec.js +56 -0
  36. package/integration-flaky/setup/sparql-template-create.js +139 -0
  37. package/integration-flaky/sparql-editor/actions/execute-update-query.spec.js +89 -0
  38. package/integration-flaky/sparql-editor/actions/share-query.spec.js +84 -0
  39. package/integration-flaky/sparql-editor/lucene-connector.spec.js +62 -0
  40. package/package.json +3 -2
  41. package/steps/application-steps.js +23 -0
  42. package/steps/error-steps.js +9 -0
  43. package/steps/explore/graphs-overview-steps.js +24 -0
  44. package/steps/explore/similarity-index-create-steps.js +113 -0
  45. package/steps/explore/similarity-indexes-steps.js +18 -0
  46. package/steps/import-steps.js +8 -1
  47. package/steps/language-selector-steps.js +22 -0
  48. package/steps/loader-steps.js +10 -0
  49. package/steps/lucene-connector-steps.js +43 -0
  50. package/steps/main-menu-steps.js +39 -0
  51. package/steps/modal-dialog-steps.js +113 -0
  52. package/steps/repository-selector-steps.js +26 -0
  53. package/steps/resource/resource-edit-steps.js +111 -0
  54. package/steps/resource/resource-steps.js +145 -0
  55. package/steps/setup/jdbc-create-steps.js +97 -0
  56. package/steps/setup/jdbc-steps.js +42 -0
  57. package/steps/setup/sparql-create-update-steps.js +55 -0
  58. package/steps/setup/sparql-templates-steps.js +34 -0
  59. package/steps/sparql-editor-steps.js +20 -0
  60. package/steps/visual-graph-steps.js +340 -3
  61. package/steps/yasgui/confirmation-dialog-steps.js +13 -0
  62. package/steps/yasgui/pagination-steps.js +47 -0
  63. package/steps/yasgui/plugin/error-plugin-steps.js +10 -0
  64. package/steps/yasgui/save-query-dialog.js +61 -0
  65. package/steps/yasgui/saved-queries-dialog.js +29 -0
  66. package/steps/yasgui/saved-query.js +25 -0
  67. package/steps/yasgui/share-saved-query-dialog.js +25 -0
  68. package/steps/yasgui/table-plugin-steps.js +29 -0
  69. package/steps/yasgui/yasgui-steps.js +191 -0
  70. package/steps/yasgui/yasqe-steps.js +187 -0
  71. package/steps/yasgui/yasr-steps.js +105 -0
  72. package/stubs/namespace-stubs.js +10 -0
  73. package/stubs/security-stubs.js +69 -0
  74. package/stubs/yasgui/connectors-stubs.js +12 -0
  75. package/stubs/yasgui/query-stubs.js +258 -0
  76. package/support/index.js +2 -0
  77. package/support/repository-commands.js +6 -1
  78. package/support/sparql-commands.js +1 -1
  79. package/support/visual-graph-commands.js +25 -0
  80. package/integration/sparql/main.menu.spec.js +0 -196
  81. package/integration/sparql/sparql-error-handling.spec.js +0 -74
  82. package/integration/sparql/sparql-language-change.spec.js +0 -58
  83. package/integration/sparql/sparql-result-formating.spec.js +0 -84
  84. package/integration/sparql/sparql.menu.spec.js +0 -1244
  85. package/integration-flaky/setup/sparql-templates.spec.js +0 -125
  86. package/integration-flaky/sparql/sparql-language-change.spec.js +0 -45
  87. package/integration-flaky/sparql/sparql.menu.spec.js +0 -75
  88. package/steps/sparql-steps.js +0 -227
@@ -0,0 +1,43 @@
1
+ export class LuceneConnectorSteps {
2
+ static getCreateConnectorQuery(connectorName) {
3
+ return `PREFIX luc: <http://www.ontotext.com/connectors/lucene#> ` +
4
+ `PREFIX luc-index: <http://www.ontotext.com/connectors/lucene/instance#> ` +
5
+ `INSERT DATA { ` +
6
+ `luc-index:${connectorName} luc:createConnector ''' { ` +
7
+ `"types": [` +
8
+ `"http://www.ontotext.com/example/wine#Wine"` +
9
+ `],` +
10
+ `"fields": [` +
11
+ `{` +
12
+ `"fieldName": "grape", ` +
13
+ `"propertyChain": [` +
14
+ `"http://www.ontotext.com/example/wine#madeFromGrape", ` +
15
+ `"http://www.w3.org/2000/01/rdf-schema#label"` +
16
+ `]` +
17
+ `}, {` +
18
+ `"fieldName": "sugar", ` +
19
+ `"analyzed": false,` +
20
+ `"multivalued": false,` +
21
+ `"propertyChain": [` +
22
+ `"http://www.ontotext.com/example/wine#hasSugar"` +
23
+ `]` +
24
+ `}, { ` +
25
+ `"fieldName": "year", ` +
26
+ `"analyzed": false, ` +
27
+ `"propertyChain": [` +
28
+ `"http://www.ontotext.com/example/wine#hasYear"` +
29
+ `]` +
30
+ `}` +
31
+ `]` +
32
+ `}''' ` +
33
+ `.}`;
34
+ }
35
+
36
+ static getDeleteConnectorSteps(connectorName) {
37
+ return `PREFIX luc: <http://www.ontotext.com/connectors/lucene#>` +
38
+ `PREFIX luc-index: <http://www.ontotext.com/connectors/lucene/instance#>` +
39
+ `INSERT DATA {` +
40
+ ` luc-index:${connectorName} luc:dropConnector [] .` +
41
+ `}`;
42
+ }
43
+ }
@@ -0,0 +1,39 @@
1
+ export class MainMenuSteps {
2
+
3
+ static getMainMenu() {
4
+ return cy.get('.main-menu');
5
+ }
6
+
7
+ static getMenuButton(menuName) {
8
+ return MainMenuSteps.getMainMenu().find('.menu-element').contains(menuName);
9
+ }
10
+
11
+ static clickOnMenu(menuName) {
12
+ // Forced it because some element as "Explore" for example has CSS pointer-events: none
13
+ MainMenuSteps.getMenuButton(menuName).click({force: true});
14
+ }
15
+
16
+ static clickOnMenuImport() {
17
+ MainMenuSteps.clickOnMenu('Import');
18
+ }
19
+
20
+ static clickOnExplore() {
21
+ MainMenuSteps.clickOnMenu('Explore');
22
+ }
23
+
24
+ static getSubMenus() {
25
+ return cy.get('.sub-menu-item');
26
+ }
27
+
28
+ static getSubMenuButton(submenuName) {
29
+ return MainMenuSteps.getSubMenus().contains(submenuName);
30
+ }
31
+
32
+ static clickOnSubMenu(submenuName) {
33
+ MainMenuSteps.getMenuButton(submenuName).click();
34
+ }
35
+
36
+ static clickOnGraphsOverview() {
37
+ MainMenuSteps.clickOnSubMenu('Graphs overview');
38
+ }
39
+ }
@@ -0,0 +1,113 @@
1
+ export class ModalDialogSteps {
2
+ static getDialog() {
3
+ return cy.get('.modal-dialog');
4
+ }
5
+
6
+ static getDialogHeader() {
7
+ return ModalDialogSteps.getDialog().find('.modal-header');
8
+ }
9
+
10
+ static getCloseButton() {
11
+ return ModalDialogSteps.getDialogHeader().find('.close');
12
+ }
13
+
14
+ static clickOnCloseButton() {
15
+ ModalDialogSteps.getCloseButton().click();
16
+ }
17
+
18
+ static getDialogBody() {
19
+ return ModalDialogSteps.getDialog().find('.modal-body');
20
+ }
21
+
22
+ static verifyDialogBody(message) {
23
+ ModalDialogSteps.getDialogBody().contains(message);
24
+ }
25
+
26
+ static getDialogFooter() {
27
+ return ModalDialogSteps.getDialog().find('.modal-footer');
28
+ }
29
+
30
+ static getConfirmButton() {
31
+ return ModalDialogSteps.getDialogFooter().find('.confirm-btn');
32
+ }
33
+
34
+ static clickOnConfirmButton() {
35
+ ModalDialogSteps.getConfirmButton().click();
36
+ }
37
+
38
+ static getCancelButton() {
39
+ return ModalDialogSteps.getDialogFooter().find('.cancel-btn');
40
+ }
41
+
42
+ static clickOnCancelButton() {
43
+ ModalDialogSteps.getCancelButton().click();
44
+ }
45
+
46
+ static verifyUrlChangedConfirmation(verifyConfirmationDialogOptions = new VerifyConfirmationDialogOptions()) {
47
+ // and try to change the page
48
+ verifyConfirmationDialogOptions.changePageFunction();
49
+
50
+ // Then I expect to be asked to confirm the leaving tha page.
51
+ ModalDialogSteps.verifyDialogBody(verifyConfirmationDialogOptions.confirmationMessage);
52
+
53
+ // When I click on close dialog button.
54
+ ModalDialogSteps.clickOnCloseButton();
55
+
56
+ // Then I expect to stay on same page.
57
+ verifyConfirmationDialogOptions.verifyCurrentUrl();
58
+
59
+
60
+ // When I try to change the page again.
61
+ verifyConfirmationDialogOptions.changePageFunction();
62
+
63
+ // Then I expect to be asked to confirm the leaving tha page.
64
+ ModalDialogSteps.verifyDialogBody(verifyConfirmationDialogOptions.confirmationMessage);
65
+
66
+ // When I click on cancel dialog button.
67
+ ModalDialogSteps.clickOnCancelButton();
68
+
69
+ // Then I expect to stay on same page.
70
+ verifyConfirmationDialogOptions.verifyCurrentUrl();
71
+
72
+ // When I try to change the page again.
73
+ verifyConfirmationDialogOptions.changePageFunction();
74
+
75
+ // Then I expect to be asked to confirm the leaving tha page.
76
+ ModalDialogSteps.verifyDialogBody(verifyConfirmationDialogOptions.confirmationMessage);
77
+
78
+ // When I click on confirm dialog button.
79
+ ModalDialogSteps.clickOnConfirmButton();
80
+
81
+ // Then I expect to be redirected.
82
+ verifyConfirmationDialogOptions.verifyRedirectedUrl();
83
+ }
84
+ }
85
+
86
+ export class VerifyConfirmationDialogOptions {
87
+ constructor() {
88
+ this.changePageFunction = () => {};
89
+ this.confirmationMessage = "";
90
+ this.verifyCurrentUrl = () => {};
91
+ this.verifyRedirectedUrl = () => {};
92
+ }
93
+
94
+ setChangePageFunction(changePageFunction) {
95
+ this.changePageFunction = changePageFunction;
96
+ return this;
97
+ }
98
+
99
+ setConfirmationMessage(confirmationMessage) {
100
+ this.confirmationMessage = confirmationMessage;
101
+ return this;
102
+ }
103
+
104
+ setVerifyCurrentUrl(verifyCurrentUrl) {
105
+ this.verifyCurrentUrl = verifyCurrentUrl;
106
+ return this;
107
+ }
108
+
109
+ setVerifyRedirectedUrl(verifyRedirectedUrl) {
110
+ this.verifyRedirectedUrl = verifyRedirectedUrl;
111
+ return this;
112
+ }
113
+ }
@@ -0,0 +1,26 @@
1
+ export class RepositorySelectorSteps {
2
+
3
+ static getRepositorySelectorDropdown() {
4
+ return cy.get('#repositorySelectDropdown');
5
+ }
6
+
7
+ static getRepositorySelectorsButton() {
8
+ return RepositorySelectorSteps.getRepositorySelectorDropdown().find('#btnReposGroup');
9
+ }
10
+ static openRepositorySelectors() {
11
+ RepositorySelectorSteps.getRepositorySelectorsButton().click();
12
+ }
13
+
14
+ static getRepositorySelectorButton(repositoryId) {
15
+ return RepositorySelectorSteps.getRepositorySelectorDropdown().find('.dropdown-menu .multiline-text').contains(repositoryId);
16
+ }
17
+
18
+ static selectRepository(repositoryId) {
19
+ RepositorySelectorSteps.openRepositorySelectors();
20
+ RepositorySelectorSteps.getRepositorySelectorButton(repositoryId).click();
21
+ }
22
+
23
+ static getSelectedRepository() {
24
+ return RepositorySelectorSteps.getRepositorySelectorDropdown().find('.active-repository');
25
+ }
26
+ }
@@ -0,0 +1,111 @@
1
+ const VIEW_URL = 'esource/edit';
2
+
3
+ export class ResourceEditSteps {
4
+ static visit() {
5
+ cy.visit(VIEW_URL);
6
+ }
7
+
8
+ static verifyUrl() {
9
+ cy.url().should('eq', `${Cypress.config('baseUrl')}${VIEW_URL}`);
10
+ }
11
+
12
+ static getResourceTableElement() {
13
+ return cy.get('.table-striped');
14
+ }
15
+
16
+ static getNewPredicateInput() {
17
+ return ResourceEditSteps.getResourceTableElement().find('.predicate-input');
18
+ }
19
+
20
+ static getNewSuggestionsElement() {
21
+ return cy.get('.predicate-suggestions');
22
+ }
23
+
24
+ static selectPredicateSuggestion(suggestion = 'agg') {
25
+ ResourceEditSteps.getNewSuggestionsElement().contains(suggestion).find('.predicate-suggestion').click();
26
+ }
27
+
28
+ static getObjectTypeSelectorElement() {
29
+ return cy.get('.object-type-selector');
30
+ }
31
+
32
+ static openObjectTypeSelector() {
33
+ ResourceEditSteps.getObjectTypeSelectorElement().click();
34
+ }
35
+
36
+ static getObjectTypeOptionElement(objectType = 'IRI') {
37
+ return ResourceEditSteps.getObjectTypeSelectorElement().find('option').contains(objectType);
38
+ }
39
+
40
+ static selectObjectType(objectType) {
41
+ ResourceEditSteps.getObjectTypeOptionElement().contains(objectType).click();
42
+ }
43
+
44
+ static getObjectUriTextInput() {
45
+ return cy.get('#objectUriText');
46
+ }
47
+
48
+ static getObjectIriTypeSuggestionsElement() {
49
+ return cy.get('.object-iri-type-suggestions');
50
+ }
51
+
52
+ static getObjectIriTypeSuggestions(iri = 'agg') {
53
+ return ResourceEditSteps.getObjectIriTypeSuggestionsElement().find('.object-iri-type-suggestion').contains(iri);
54
+ }
55
+
56
+ static selectObjectIriType(iri) {
57
+ ResourceEditSteps.getObjectIriTypeSuggestions(iri).click();
58
+ }
59
+
60
+ static getObjectLiteralTypeSelectorElement() {
61
+ return cy.get('.literalType');
62
+ }
63
+
64
+ static openObjectLiteralTypeSelector() {
65
+ ResourceEditSteps.getObjectLiteralTypeSelectorElement().click();
66
+ }
67
+
68
+ static getObjectLiteralTypeOption(literalType = 'string') {
69
+ return ResourceEditSteps.getObjectLiteralTypeSelectorElement().find('option');
70
+ }
71
+
72
+ static selectObjectLiteralType(literalType) {
73
+ ResourceEditSteps.getObjectLiteralTypeOption(literalType).click();
74
+ }
75
+
76
+ static getObjectLiteralManualInput() {
77
+ return cy.get('#languageText');
78
+ }
79
+
80
+ static getContextInput() {
81
+ return cy.get('.context-input');
82
+ }
83
+
84
+ static getContextSuggestionsElement() {
85
+ return cy.get('.context-suggestions');
86
+ }
87
+
88
+ static getContextSuggestion() {
89
+ return ResourceEditSteps.getContextSuggestionsElement().find('.context-suggestion');
90
+ }
91
+
92
+ static selectContextSuggestion(contextSuggestion = 'agg') {
93
+ ResourceEditSteps.getContextSuggestion().click();
94
+ }
95
+
96
+ static getViewTrigButton() {
97
+ return cy.get('.view-trig-btn');
98
+ }
99
+
100
+ static clickOnViewTrigButton() {
101
+ ResourceEditSteps.getViewTrigButton().click();
102
+ }
103
+
104
+ static getSaveButton() {
105
+ return cy.get('.save-btn');
106
+ }
107
+
108
+ static clickOnSaveButton() {
109
+ ResourceEditSteps.getSaveButton().click();
110
+ }
111
+ }
@@ -0,0 +1,145 @@
1
+ const VIEW_URL = '/resource';
2
+
3
+ export class ResourceSteps {
4
+
5
+ static visit(parameters) {
6
+ cy.visit(`${VIEW_URL}${parameters ? ('?' + parameters) : ''}`);
7
+ // Wait for yasr to be initialized to ensure that the page is loaded.
8
+ cy.get('.yasr');
9
+ }
10
+
11
+ static verifyUrl() {
12
+ cy.url().should('include+', `${Cypress.config('baseUrl')}${VIEW_URL}`);
13
+ }
14
+
15
+ static getInferenceSelectElement() {
16
+ return cy.get('#inference-select');
17
+ }
18
+
19
+ static selectInference(inference = 'Explicit only') {
20
+ ResourceSteps.getInferenceSelectElement().select(inference);
21
+ }
22
+
23
+ static selectExplicitOnlyInference() {
24
+ ResourceSteps.selectInference();
25
+ }
26
+
27
+ static selectImplicitOnlyInference() {
28
+ ResourceSteps.selectInference('Implicit only');
29
+ }
30
+
31
+ static selectExplicitAndImplicitInference() {
32
+ ResourceSteps.selectInference('Explicit and Implicit');
33
+ }
34
+
35
+ static getSameAsButton() {
36
+ return cy.get('.same-as-btn');
37
+ }
38
+
39
+ static verifySameAsEnable() {
40
+ ResourceSteps.getSameAsButton().find('.icon-sameas-on').should('have.length', 1);
41
+ }
42
+
43
+ static verifySameAsDisable() {
44
+ ResourceSteps.getSameAsButton().find('.icon-sameas-off').should('have.length', 1);
45
+ }
46
+
47
+ static getShowBlankNodesButton() {
48
+ return cy.get('.show-blank-nodes-btn');
49
+ }
50
+
51
+ static clickOnShowBlankNodesButton() {
52
+ ResourceSteps.getShowBlankNodesButton().click();
53
+ }
54
+
55
+ static getDownloadAsDropdown() {
56
+ return cy.get('.dropdown-toggle');
57
+ }
58
+
59
+ static getVisualGraphButton() {
60
+ return cy.get('.visual-graph-btn');
61
+ }
62
+
63
+ static clickOnVisualGraphButton() {
64
+ ResourceSteps.getVisualGraphButton().click();
65
+ }
66
+
67
+ static getEditResourceLink() {
68
+ return cy.get('.edit-resource-link');
69
+ }
70
+
71
+ static clickOnEditResourceLink() {
72
+ ResourceSteps.getEditResourceLink().click();
73
+ }
74
+
75
+ static getSourceLink() {
76
+ return cy.get('.source-link');
77
+ }
78
+
79
+ static clickOnSourceLink() {
80
+ ResourceSteps.getSourceLink().click();
81
+ }
82
+
83
+ static getContextLink() {
84
+ return cy.get('.context-link');
85
+ }
86
+
87
+ static clickOnContextLink() {
88
+ ResourceSteps.getContextLink().click();
89
+ }
90
+
91
+ static getRoleSelectionElement() {
92
+ return cy.get('#selection');
93
+ }
94
+
95
+ static getRoleTab(role = 'subject') {
96
+ return ResourceSteps.getRoleSelectionElement().find('.nav-link').contains(role);
97
+ }
98
+
99
+ static selectRole(role) {
100
+ ResourceSteps.getRoleTab(role).click();
101
+ }
102
+
103
+ static selectSubjectRole() {
104
+ ResourceSteps.selectRole('subject');
105
+ }
106
+
107
+ static selectPredicateRole() {
108
+ ResourceSteps.selectRole('predicate');
109
+ }
110
+
111
+ static selectObjectRole() {
112
+ ResourceSteps.selectRole('object');
113
+ }
114
+
115
+ static selectContextRole() {
116
+ ResourceSteps.selectRole('context');
117
+ }
118
+
119
+ static selectAlRole() {
120
+ ResourceSteps.selectRole('all');
121
+ }
122
+
123
+ static verifyActiveRoleTab(activeRole = 'subject') {
124
+ ResourceSteps.getAllRoles().forEach((role) => {
125
+ const chainer = activeRole === role ? 'have.class' : 'not.have.class';
126
+ ResourceSteps.getRoleTab(role).should(chainer, 'active');
127
+ });
128
+ }
129
+
130
+ static getAllRoles() {
131
+ return ['subject', 'predicate', 'object', 'context', 'all'];
132
+ }
133
+
134
+ static getTargetLink() {
135
+ return cy.get('.target-link');
136
+ }
137
+
138
+ static getTripleResourceLink() {
139
+ return cy.get('.triple-resource-link');
140
+ }
141
+
142
+ static clickOnTripleResourceLink() {
143
+ ResourceSteps.getTripleResourceLink().click();
144
+ }
145
+ }
@@ -0,0 +1,97 @@
1
+ export class JdbcCreateSteps {
2
+
3
+ static visit(jdbcConfigurationName) {
4
+ cy.visit(`/jdbc/configuration/create${jdbcConfigurationName ? '?name=' + jdbcConfigurationName : ''}`);
5
+ cy.get('.ontotext-yasgui').should('be.visible');
6
+ }
7
+
8
+ static verifyUrl() {
9
+ cy.url().should('include', '/jdbc/configuration/create');
10
+ }
11
+
12
+ static getJDBCConfigNameField() {
13
+ return cy.get('.jdbc-configuration-name');
14
+ }
15
+
16
+ static typeTableName(tableName) {
17
+ // force is needed because ontotext-yasgui is created with focus on editor
18
+ // and if it appears in the middle of templateId typing the last part of template is written in ontotext-yasgui instead input element.
19
+ JdbcCreateSteps.getJDBCConfigNameField().type(tableName, {force: true});
20
+ }
21
+
22
+ static getTab(index = 0) {
23
+ return cy.get('.nav-item').eq(index);
24
+ }
25
+
26
+ static getActiveTab() {
27
+ return cy.get('.nav-item.active');
28
+ }
29
+
30
+ static openDataQueryTab() {
31
+ JdbcCreateSteps.getTab(0).click();
32
+ }
33
+
34
+ static openColumnTypesTab() {
35
+ JdbcCreateSteps.getTab(1).click();
36
+ }
37
+
38
+ static getSaveButton() {
39
+ return cy.get('.save-query-btn');
40
+ }
41
+
42
+ static clickOnSave() {
43
+ JdbcCreateSteps.getSaveButton().click();
44
+ }
45
+
46
+ static getCancelButton() {
47
+ return cy.get('.cancel-button');
48
+ }
49
+
50
+ static clickOnCancel() {
51
+ JdbcCreateSteps.getCancelButton().click();
52
+ }
53
+
54
+ static getPreviewButton() {
55
+ return cy.get('.preview-btn');
56
+ }
57
+
58
+ static clickOnPreviewButton() {
59
+ JdbcCreateSteps.getPreviewButton().click();
60
+ }
61
+
62
+ static getSuggestButton() {
63
+ return cy.get('.suggest-btn');
64
+ }
65
+
66
+ static clickOnSuggestButton() {
67
+ JdbcCreateSteps.getSuggestButton().click();
68
+ }
69
+
70
+ static getColumnSuggestionRows() {
71
+ return cy.get('.column-suggestion-row');
72
+ }
73
+
74
+ static getColumnSuggestion(columnSuggestionRowIndex = 0) {
75
+ return JdbcCreateSteps.getColumnSuggestionRows().eq(columnSuggestionRowIndex);
76
+ }
77
+
78
+ static getColumnDeleteButton(columnSuggestionRowIndex = 0) {
79
+ return JdbcCreateSteps.getColumnSuggestion(columnSuggestionRowIndex).find('.delete-column-btn');
80
+ }
81
+
82
+ static clickOnDeleteColumnButton(columnSuggestionRowIndex = 0) {
83
+ JdbcCreateSteps.getColumnDeleteButton(columnSuggestionRowIndex).click();
84
+ }
85
+
86
+ static getJdbcConfigurationNameIsRequired() {
87
+ return cy.get('.jdbc-configuration-name-required');
88
+ }
89
+
90
+ static getInvalidQueryMode() {
91
+ return cy.get('.invalid-query-mode');
92
+ }
93
+
94
+ static getInvalidQuery() {
95
+ return cy.get('.invalid-query');
96
+ }
97
+ }
@@ -0,0 +1,42 @@
1
+ export class JdbcSteps {
2
+
3
+ static visit() {
4
+ cy.visit('/jdbc');
5
+ }
6
+
7
+ static verifyUrl() {
8
+ cy.url().should('include', '/jdbc');
9
+ }
10
+
11
+ static getCreateNewJDBCConfigurationButton() {
12
+ return cy.get('.create-sql-table-configuration');
13
+ }
14
+
15
+ static clickOnCreateJdbcConfigurationButton() {
16
+ JdbcSteps.getCreateNewJDBCConfigurationButton().click();
17
+ }
18
+
19
+ static getJDBCConfigurations() {
20
+ return cy.get('#configurations-table');
21
+ }
22
+
23
+ static getJDBCConfigurationResults(configurationIndex = 0) {
24
+ return JdbcSteps.getJDBCConfigurations(configurationIndex).find('tr');
25
+ }
26
+
27
+ static getEditButton(configurationIndex = 0) {
28
+ return JdbcSteps.getJDBCConfigurationResults(configurationIndex).find('.edit-query-btn');
29
+ }
30
+
31
+ static clickOnEditButton(configurationIndex = 0) {
32
+ JdbcSteps.getEditButton(configurationIndex).click();
33
+ }
34
+
35
+ static getDeleteButton(configurationIndex = 0) {
36
+ return JdbcSteps.getJDBCConfigurationResults(configurationIndex).find('.delete-configuration-btn');
37
+ }
38
+
39
+ static clickOnDeleteButton(configurationIndex = 0) {
40
+ JdbcSteps.getDeleteButton(configurationIndex).click();
41
+ }
42
+ }
@@ -0,0 +1,55 @@
1
+ export class SparqlCreateUpdateSteps {
2
+ static visit(templateId) {
3
+ cy.visit(`/sparql-template/create${templateId ? '?templateID=' + templateId : ''}`);
4
+ cy.get('.ontotext-yasgui').should('be.visible');
5
+ }
6
+
7
+ static verifyUrl() {
8
+ cy.url().should('include', '/sparql-template/create');
9
+ }
10
+
11
+ static getSaveButton() {
12
+ return cy.get('.save-query-btn');
13
+ }
14
+
15
+ static clickOnSaveButton() {
16
+ SparqlCreateUpdateSteps.getSaveButton().click();
17
+ }
18
+
19
+ static getCancelButton() {
20
+ return cy.get('.cancel-query-btn');
21
+ }
22
+
23
+ static clickOnCancelButton() {
24
+ SparqlCreateUpdateSteps.getCancelButton().click();
25
+ }
26
+
27
+ static typeTemplateId(templateId) {
28
+ SparqlCreateUpdateSteps.getTemplateIdField()
29
+ .should('exist')
30
+ .click()
31
+ // force is needed because ontotext-yasgui is created with focus on editor
32
+ // and if it appears in the middle of templateId typing the last part of template is written in ontotext-yasgui instead input element.
33
+ .type(templateId, {force: true});
34
+ }
35
+
36
+ static getTemplateIdField() {
37
+ return cy.get('.sparql-template-id');
38
+ }
39
+
40
+ static getRequiredErrorElement() {
41
+ return cy.get('.template-id-required');
42
+ }
43
+
44
+ static getInvalidErrorElement() {
45
+ return cy.get('.template-id-invalid');
46
+ }
47
+
48
+ static getInvalidQueryModeElement() {
49
+ return cy.get('.invalid-query-mode');
50
+ }
51
+
52
+ static getInvalidQueryElement() {
53
+ return cy.get('.invalid-query');
54
+ }
55
+ }