graphdb-workbench-tests 2.5.1 → 2.6.0-RC1

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 (114) 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/guides/guides.json +764 -0
  4. package/fixtures/guides/movies.ttl +629 -0
  5. package/fixtures/guides/starwars.ttl +4384 -0
  6. package/fixtures/locale-en.json +44 -10
  7. package/fixtures/namespaces/ontotext-generated-namespace.json +22 -0
  8. package/fixtures/queries/empty-query-response.json +11 -0
  9. package/integration/cluster/cluster-management.spec.js +1 -2
  10. package/integration/explore/graphs.overview.spec.js +4 -2
  11. package/integration/explore/similariti-index-create.spec.js +333 -0
  12. package/integration/explore/similarity-index.spec.js +88 -0
  13. package/integration/explore/similarity.spec.js +180 -56
  14. package/integration/explore/visual-graph/graphs-config.spec.js +453 -0
  15. package/integration/explore/{visual.graph.spec.js → visual-graph/visual.graph.spec.js} +146 -347
  16. package/integration/guides/movies-interactive-guide.spec.js +73 -0
  17. package/integration/guides/star-wars-interactive-guide.js +60 -0
  18. package/integration/home/language-change.spec.js +3 -3
  19. package/integration/import/import.user.data.spec.js +2 -0
  20. package/integration/resource/resource.spec.js +357 -0
  21. package/integration/setup/aclmanagement/create-rule.spec.js +88 -11
  22. package/integration/setup/aclmanagement/delete-rule.spec.js +6 -4
  23. package/integration/setup/aclmanagement/edit-rule.spec.js +13 -8
  24. package/integration/setup/aclmanagement/render-rules.spec.js +4 -2
  25. package/integration/setup/aclmanagement/reorder-rules.spec.js +5 -3
  26. package/integration/setup/aclmanagement/revert-rules.spec.js +4 -3
  27. package/integration/setup/aclmanagement/scopes.spec.js +220 -0
  28. package/integration/setup/aclmanagement/update-rules.spec.js +17 -9
  29. package/integration/setup/jdbc-create.spec.js +330 -0
  30. package/integration/setup/jdbc.spec.js +78 -154
  31. package/integration/setup/my-settings.spec.js +9 -41
  32. package/integration/setup/sparql-template-create.js +150 -0
  33. package/integration/setup/sparql-templates.spec.js +82 -146
  34. package/integration/sparql-editor/actions/execute-query.spec.js +44 -0
  35. package/integration/sparql-editor/actions/expand-results-over-sameas.spec.js +136 -0
  36. package/integration/sparql-editor/actions/include-inferred-statements.spec.js +100 -0
  37. package/integration/sparql-editor/actions/inferred-sameas.spec.js +47 -0
  38. package/integration/sparql-editor/actions/save-query.spec.js +70 -0
  39. package/integration/sparql-editor/actions/show-saved-queries.spec.js +61 -0
  40. package/integration/sparql-editor/internationalization.spec.js +41 -0
  41. package/integration/sparql-editor/saved-query/abort-query.spec.js +51 -0
  42. package/integration/sparql-editor/saved-query/delete-query.spec.js +56 -0
  43. package/integration/sparql-editor/saved-query/edit-query.spec.js +68 -0
  44. package/integration/sparql-editor/saved-query/share-query.spec.js +78 -0
  45. package/integration/sparql-editor/sparql-editor.spec.js +55 -0
  46. package/integration/sparql-editor/yasgui-tabs.spec.js +107 -0
  47. package/integration/sparql-editor/yasr/download-as.spec.js +54 -0
  48. package/integration/sparql-editor/yasr/pagination.spec.js +234 -0
  49. package/integration/sparql-editor/yasr/table-plugin.spec.js +39 -0
  50. package/integration/sparql-editor/yasr/toolbar/visual-graph-button.spec.js +57 -0
  51. package/integration-flaky/explore/visual.graph.spec.js +3 -2
  52. package/integration-flaky/setup/sparql-template-create.js +139 -0
  53. package/integration-flaky/sparql-editor/actions/execute-update-query.spec.js +89 -0
  54. package/integration-flaky/sparql-editor/actions/share-query.spec.js +84 -0
  55. package/integration-flaky/sparql-editor/lucene-connector.spec.js +62 -0
  56. package/integration-flaky/sparql-editor/plugins/error-plugin.spec.js +83 -0
  57. package/integration-flaky/sparql-editor/yasr/table-plugin.spec.js +81 -0
  58. package/package.json +3 -1
  59. package/steps/application-steps.js +5 -0
  60. package/steps/autocomplete-steps.js +10 -0
  61. package/steps/error-steps.js +9 -0
  62. package/steps/explore/graphs-overview-steps.js +24 -0
  63. package/steps/explore/similarity-index-create-steps.js +113 -0
  64. package/steps/explore/similarity-indexes-steps.js +18 -0
  65. package/steps/guides/guide-dialog-steps.js +38 -0
  66. package/steps/guides/guide-steps.js +278 -0
  67. package/steps/guides/movies-guide-steps.js +241 -0
  68. package/steps/guides/star-wars-guide-steps.js +188 -0
  69. package/steps/import-steps.js +16 -0
  70. package/steps/language-selector-steps.js +22 -0
  71. package/steps/loader-steps.js +10 -0
  72. package/steps/lucene-connector-steps.js +43 -0
  73. package/steps/main-menu-steps.js +67 -0
  74. package/steps/repository-selector-steps.js +26 -0
  75. package/steps/repository-steps.js +4 -0
  76. package/steps/resource/resource-edit-steps.js +111 -0
  77. package/steps/resource/resource-steps.js +149 -0
  78. package/steps/setup/acl-management-steps.js +193 -35
  79. package/steps/setup/jdbc-create-steps.js +97 -0
  80. package/steps/setup/jdbc-steps.js +42 -0
  81. package/steps/setup/sparql-create-update-steps.js +55 -0
  82. package/steps/setup/sparql-templates-steps.js +38 -0
  83. package/steps/sparql-editor-steps.js +20 -0
  84. package/steps/sparql-steps.js +0 -6
  85. package/steps/visual-graph-steps.js +365 -6
  86. package/steps/yasgui/confirmation-dialog-steps.js +13 -0
  87. package/steps/yasgui/pagination-steps.js +47 -0
  88. package/steps/yasgui/plugin/error-plugin-steps.js +30 -0
  89. package/steps/yasgui/save-query-dialog.js +61 -0
  90. package/steps/yasgui/saved-queries-dialog.js +29 -0
  91. package/steps/yasgui/saved-query.js +25 -0
  92. package/steps/yasgui/share-saved-query-dialog.js +25 -0
  93. package/steps/yasgui/table-plugin-steps.js +29 -0
  94. package/steps/yasgui/yasgui-loader.js +10 -0
  95. package/steps/yasgui/yasgui-steps.js +191 -0
  96. package/steps/yasgui/yasqe-steps.js +187 -0
  97. package/steps/yasgui/yasr-steps.js +108 -0
  98. package/stubs/namespace-stubs.js +10 -0
  99. package/stubs/repositories-stub.js +58 -0
  100. package/stubs/security-stubs.js +69 -0
  101. package/stubs/yasgui/connectors-stubs.js +12 -0
  102. package/stubs/yasgui/query-stubs.js +253 -0
  103. package/support/index.js +3 -0
  104. package/support/repository-commands.js +5 -5
  105. package/support/sparql-commands.js +1 -1
  106. package/support/visual-graph-commands.js +25 -0
  107. package/integration/sparql/main.menu.spec.js +0 -232
  108. package/integration/sparql/sparql-error-handling.spec.js +0 -74
  109. package/integration/sparql/sparql-language-change.spec.js +0 -58
  110. package/integration/sparql/sparql-result-formating.spec.js +0 -84
  111. package/integration/sparql/sparql.menu.spec.js +0 -1253
  112. package/integration-flaky/setup/sparql-templates.spec.js +0 -125
  113. package/integration-flaky/sparql/sparql-language-change.spec.js +0 -45
  114. package/integration-flaky/sparql/sparql.menu.spec.js +0 -75
@@ -0,0 +1,188 @@
1
+ import {GuideSteps} from "./guide-steps";
2
+ import {GuideDialogSteps} from "./guide-dialog-steps";
3
+ import {MainMenuSteps} from "../main-menu-steps";
4
+ import {VisualGraphSteps} from "../visual-graph-steps";
5
+ import {YasqeSteps} from "../yasgui/yasqe-steps";
6
+ import {YasrSteps} from "../yasgui/yasr-steps";
7
+
8
+ export class StarWarsGuideSteps {
9
+
10
+ static assertVisualGraphExploreStep1() {
11
+ GuideSteps.assertPageNotInteractive();
12
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph explore — 1/6');
13
+ }
14
+
15
+ static assertVisualGraphExploreStep2() {
16
+ GuideSteps.assertPageNotInteractive();
17
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph explore — 2/6');
18
+ MainMenuSteps.getMenuExplore().should('be.visible');
19
+ }
20
+
21
+ static assertVisualGraphExploreStep3() {
22
+ GuideSteps.assertPageNotInteractive();
23
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph explore — 3/6');
24
+ MainMenuSteps.getSubmenuVisualGraph().should('be.visible');
25
+ }
26
+
27
+ static assertVisualGraphExploreSte4() {
28
+ GuideSteps.assertPageNotInteractive();
29
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph explore — 4/6');
30
+ VisualGraphSteps.getStartNodeSelectorField().should('be.visible');
31
+ }
32
+
33
+ static assertVisualGraphExploreSte5() {
34
+ GuideSteps.assertPageNotInteractive();
35
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph explore — 5/6');
36
+ VisualGraphSteps.getResultItemField().should('be.visible');
37
+ }
38
+
39
+ static assertVisualGraphExploreSte6() {
40
+ GuideSteps.assertPageNotInteractive();
41
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph explore — 6/6');
42
+ }
43
+
44
+ static assertSte30() {
45
+ GuideSteps.assertPageNotInteractive();
46
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph nodes');
47
+ VisualGraphSteps.getCircleOfNodeByNodeId('https://swapi.co/resource/human/1').should('be.visible');
48
+ }
49
+
50
+ static assertSte31() {
51
+ GuideSteps.assertPageNotInteractive();
52
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph links');
53
+ VisualGraphSteps.getLineBetweenNodesById('https://swapi.co/resource/human/1>https://swapi.co/vocabulary/Character').should('be.visible');
54
+ }
55
+
56
+ static assertSte32() {
57
+ GuideSteps.assertPageNotInteractive();
58
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph nodes');
59
+ VisualGraphSteps.getCircleOfNodeByNodeId('https://swapi.co/vocabulary/Mammal').should('be.visible');
60
+ }
61
+
62
+ static assertSte33() {
63
+ GuideSteps.assertPageNotInteractive();
64
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph links');
65
+ VisualGraphSteps.getLineBetweenNodesById('https://swapi.co/resource/human/1>https://swapi.co/resource/vehicle/14').should('be.visible');
66
+ }
67
+
68
+ static assertSte34() {
69
+ GuideSteps.assertPageNotInteractive();
70
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph nodes');
71
+ VisualGraphSteps.getCircleOfNodeByNodeId('https://swapi.co/resource/vehicle/30').should('be.visible');
72
+ }
73
+
74
+ static assertVisualGraphPropertiesStep1() {
75
+ GuideSteps.assertPageNotInteractive();
76
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph properties — 1/6');
77
+ VisualGraphSteps.getCircleOfNodeByNodeId('https://swapi.co/resource/film/1').should('be.visible');
78
+ }
79
+
80
+ static assertVisualGraphPropertiesStep2() {
81
+ GuideSteps.assertPageNotInteractive();
82
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph properties — 2/6');
83
+ VisualGraphSteps.getSidePanelContent().should('be.visible');
84
+ }
85
+
86
+ static assertVisualGraphPropertiesStep3() {
87
+ GuideSteps.assertPageNotInteractive();
88
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph properties — 3/6');
89
+ GuideSteps.getElementByGuideSelector('graph-visualization-node-info-types').should('be.visible');
90
+ }
91
+
92
+ static assertVisualGraphPropertiesStep4() {
93
+ GuideSteps.assertPageNotInteractive();
94
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph properties — 4/6');
95
+ GuideSteps.getElementByGuideSelector('graph-visualization-node-info-voc:releaseDate').should('be.visible');
96
+ }
97
+
98
+ static assertVisualGraphPropertiesStep5() {
99
+ GuideSteps.assertPageNotInteractive();
100
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph properties — 5/6');
101
+ GuideSteps.getElementByGuideSelector('graph-visualization-node-info-voc:episodeId').should('be.visible');
102
+ }
103
+
104
+ static assertVisualGraphPropertiesStep6() {
105
+ GuideSteps.assertPageNotInteractive();
106
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph properties — 6/6');
107
+ GuideSteps.getElementByGuideSelector('close-info-panel').should('be.visible');
108
+ }
109
+
110
+ static assertStep41() {
111
+ GuideSteps.assertPageNotInteractive();
112
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph: expand node');
113
+ VisualGraphSteps.getCircleOfNodeByNodeId('https://swapi.co/resource/film/1').should('be.visible');
114
+ }
115
+
116
+ static assertStep42() {
117
+ GuideSteps.assertPageNotInteractive();
118
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph nodes');
119
+ VisualGraphSteps.getCircleOfNodeByNodeId('https://swapi.co/resource/planet/1').should('be.visible');
120
+ }
121
+
122
+ static assertStep43() {
123
+ GuideSteps.assertPageNotInteractive();
124
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Visual graph nodes');
125
+ VisualGraphSteps.getCircleOfNodeByNodeId('https://swapi.co/resource/droid/2').should('be.visible');
126
+ }
127
+
128
+ static assertExecuteSparqlQueryStep1() {
129
+ GuideSteps.assertPageNotInteractive();
130
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 1/11');
131
+ }
132
+
133
+ static assertExecuteSparqlQueryStep2() {
134
+ GuideSteps.assertPageNotInteractive();
135
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 2/11');
136
+ MainMenuSteps.getMenuSparql().should('be.visible');
137
+ }
138
+
139
+ static assertExecuteSparqlQueryStep3() {
140
+ GuideSteps.assertPageNotInteractive();
141
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 3/11');
142
+ }
143
+
144
+ static assertExecuteSparqlQueryStep4() {
145
+ GuideSteps.assertPageNotInteractive();
146
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 4/11');
147
+ YasqeSteps.getExecuteQueryButton().should('be.visible');
148
+ }
149
+
150
+ static assertExecuteSparqlQueryStep5() {
151
+ GuideSteps.assertPageNotInteractive();
152
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 5/11');
153
+ YasrSteps.getResults().should('be.visible');
154
+ }
155
+
156
+ static assertExecuteSparqlQueryStep6() {
157
+ GuideSteps.assertPageNotInteractive();
158
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 6/11');
159
+ }
160
+
161
+ static assertExecuteSparqlQueryStep7() {
162
+ GuideSteps.assertPageNotInteractive();
163
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 7/11');
164
+ YasrSteps.getResults().should('be.visible');
165
+ }
166
+
167
+ static assertExecuteSparqlQueryStep8() {
168
+ GuideSteps.assertPageNotInteractive();
169
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 8/11');
170
+ YasrSteps.getResults().should('be.visible');
171
+ }
172
+
173
+ static assertExecuteSparqlQueryStep9() {
174
+ GuideSteps.assertPageNotInteractive();
175
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 9/11');
176
+ }
177
+
178
+ static assertExecuteSparqlQueryStep10() {
179
+ GuideSteps.assertPageNotInteractive();
180
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 10/11');
181
+ YasrSteps.getResults().should('be.visible');
182
+ }
183
+
184
+ static assertExecuteSparqlQueryStep11() {
185
+ GuideSteps.assertPageNotInteractive();
186
+ GuideDialogSteps.assertDialogWithTitleIsVisible('Execute SPARQL query — 11/11');
187
+ }
188
+ }
@@ -9,6 +9,10 @@ class ImportSteps {
9
9
  ImportSteps.visitImport('user', repository);
10
10
  }
11
11
 
12
+ static verifyUserImportUrl() {
13
+ cy.url().should('include', '/import#user');
14
+ }
15
+
12
16
  static visitServerImport(repository) {
13
17
  ImportSteps.visitImport('server', repository);
14
18
  }
@@ -98,6 +102,18 @@ class ImportSteps {
98
102
  return ImportSteps;
99
103
  }
100
104
 
105
+ static getImportRdfFileElement() {
106
+ return cy.get('#import-user');
107
+ }
108
+
109
+ static getImportStatusMessage() {
110
+ return cy.get('.import-status-message');
111
+ }
112
+
113
+ static getImportFileRow(fileName) {
114
+ return cy.contains('tr', fileName);
115
+ }
116
+
101
117
  static getSnippetTextarea() {
102
118
  return cy.get('#wb-import-textarea');
103
119
  }
@@ -0,0 +1,22 @@
1
+ export class LanguageSelectorSteps {
2
+ static getLanguageSelectorDropdown() {
3
+ return cy.get('#languageGroupDrop').should('be.visible');
4
+ }
5
+
6
+ static openLanguageSelectorDropdown() {
7
+ LanguageSelectorSteps.getLanguageSelectorDropdown().should('be.visible').click();
8
+ }
9
+
10
+ static changeLanguage(language) {
11
+ LanguageSelectorSteps.openLanguageSelectorDropdown();
12
+ cy.get('#lang-select-' + language).click();
13
+ }
14
+
15
+ static switchToFr() {
16
+ LanguageSelectorSteps.changeLanguage('fr');
17
+ }
18
+
19
+ static switchToEn() {
20
+ LanguageSelectorSteps.changeLanguage('en');
21
+ }
22
+ }
@@ -0,0 +1,10 @@
1
+ export class LoaderSteps {
2
+
3
+ static getLoader() {
4
+ return cy.get('.ot-loader-new-content');
5
+ }
6
+
7
+ static verifyMessage(message) {
8
+ LoaderSteps.getLoader().contains(message);
9
+ }
10
+ }
@@ -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,67 @@
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 getMenuImport() {
12
+ return MainMenuSteps.getMenuButton('Import');
13
+ }
14
+
15
+ static getMenuExplore() {
16
+ return MainMenuSteps.getMenuButton('Explore');
17
+ }
18
+
19
+ static getMenuSetup() {
20
+ return MainMenuSteps.getMenuButton('Setup');
21
+ }
22
+
23
+ static getMenuSparql() {
24
+ return MainMenuSteps.getMenuButton('SPARQL');
25
+ }
26
+
27
+ static getSubmenuAutocomplete() {
28
+ return MainMenuSteps.getSubMenuButton("Autocomplete");
29
+ }
30
+
31
+ static getSubmenuClassHierarchy() {
32
+ return MainMenuSteps.getSubMenuButton("Class hierarchy");
33
+ }
34
+
35
+ static getSubmenuVisualGraph() {
36
+ return MainMenuSteps.getSubMenuButton("Visual graph");
37
+ }
38
+
39
+ static clickOnMenu(menuName) {
40
+ // Forced it because some element as "Explore" for example has CSS pointer-events: none
41
+ MainMenuSteps.getMenuButton(menuName).click({force: true});
42
+ }
43
+
44
+ static clickOnMenuImport() {
45
+ MainMenuSteps.clickOnMenu('Import');
46
+ }
47
+
48
+ static clickOnExplore() {
49
+ MainMenuSteps.clickOnMenu('Explore');
50
+ }
51
+
52
+ static getSubMenus() {
53
+ return cy.get('.sub-menu-item');
54
+ }
55
+
56
+ static getSubMenuButton(submenuName) {
57
+ return MainMenuSteps.getSubMenus().contains(submenuName);
58
+ }
59
+
60
+ static clickOnSubMenu(submenuName) {
61
+ MainMenuSteps.getMenuButton(submenuName).click();
62
+ }
63
+
64
+ static clickOnGraphsOverview() {
65
+ MainMenuSteps.clickOnSubMenu('Graphs overview');
66
+ }
67
+ }
@@ -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
+ }
@@ -97,6 +97,10 @@ export class RepositorySteps {
97
97
  RepositorySteps.getRepositoryTypeButton(type).click();
98
98
  }
99
99
 
100
+ static getGDBRepositoryTypeButton() {
101
+ return RepositorySteps.getRepositoryTypeButton('gdb');
102
+ }
103
+
100
104
  static getRepositoryCreateForm() {
101
105
  return cy.get('#newRepoForm').should('be.visible');
102
106
  }
@@ -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,149 @@
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 getAllRoleTab() {
120
+ return ResourceSteps.getRoleTab('all');
121
+ }
122
+
123
+ static selectAllRole() {
124
+ ResourceSteps.getAllRoleTab().click();
125
+ }
126
+
127
+ static verifyActiveRoleTab(activeRole = 'subject') {
128
+ ResourceSteps.getAllRoles().forEach((role) => {
129
+ const chainer = activeRole === role ? 'have.class' : 'not.have.class';
130
+ ResourceSteps.getRoleTab(role).should(chainer, 'active');
131
+ });
132
+ }
133
+
134
+ static getAllRoles() {
135
+ return ['subject', 'predicate', 'object', 'context', 'all'];
136
+ }
137
+
138
+ static getTargetLink() {
139
+ return cy.get('.target-link');
140
+ }
141
+
142
+ static getTripleResourceLink() {
143
+ return cy.get('.triple-resource-link');
144
+ }
145
+
146
+ static clickOnTripleResourceLink() {
147
+ ResourceSteps.getTripleResourceLink().click();
148
+ }
149
+ }