graphdb-workbench-tests 2.4.0-TR4 → 2.4.0-TR6

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 (94) hide show
  1. package/fixtures/locale-en.json +75 -17
  2. package/fixtures/monitoring/backup-and-restore.json +69 -0
  3. package/fixtures/setup/aclmanagement/get-rules.json +44 -0
  4. package/integration/explore/graphs.overview.spec.js +2 -4
  5. package/integration/explore/similarity.spec.js +47 -156
  6. package/integration/explore/{visual-graph/visual.graph.spec.js → visual.graph.spec.js} +348 -145
  7. package/integration/home/language-change.spec.js +3 -3
  8. package/integration/monitor/monitor.backup-and-restore.spec.js +21 -0
  9. package/integration/setup/aclmanagement.spec.js +131 -0
  10. package/integration/setup/jdbc.spec.js +178 -99
  11. package/integration/setup/my-settings.spec.js +41 -9
  12. package/integration/setup/sparql-templates.spec.js +146 -82
  13. package/integration/sparql/main.menu.spec.js +233 -0
  14. package/integration/sparql/sparql-error-handling.spec.js +74 -0
  15. package/integration/sparql/sparql-language-change.spec.js +58 -0
  16. package/integration/sparql/sparql-result-formating.spec.js +84 -0
  17. package/integration/sparql/sparql.menu.spec.js +1244 -0
  18. package/integration-flaky/explore/visual.graph.spec.js +5 -3
  19. package/integration-flaky/setup/sparql-templates.spec.js +125 -0
  20. package/integration-flaky/sparql/sparql-language-change.spec.js +45 -0
  21. package/integration-flaky/sparql/sparql.menu.spec.js +75 -0
  22. package/package.json +2 -3
  23. package/steps/import-steps.js +2 -6
  24. package/steps/monitoring/backup-and-restore-steps.js +14 -0
  25. package/steps/setup/acl-management-steps.js +102 -0
  26. package/steps/sparql-steps.js +227 -0
  27. package/steps/visual-graph-steps.js +3 -340
  28. package/stubs/backup-and-restore-stubs.js +9 -0
  29. package/support/index.js +0 -2
  30. package/support/repository-commands.js +1 -6
  31. package/support/sparql-commands.js +1 -1
  32. package/support/visual-graph-commands.js +0 -25
  33. package/fixtures/graphdb-import/resource-test-data.ttl +0 -99
  34. package/fixtures/graphql-editor/default-query-response.json +0 -517
  35. package/fixtures/namespaces/ontotext-generated-namespace.json +0 -22
  36. package/fixtures/queries/empty-query-response.json +0 -11
  37. package/integration/explore/similariti-index-create.spec.js +0 -315
  38. package/integration/explore/similarity-index.spec.js +0 -88
  39. package/integration/explore/visual-graph/graphs-config.spec.js +0 -453
  40. package/integration/resource/resource.spec.js +0 -354
  41. package/integration/setup/jdbc-create.spec.js +0 -316
  42. package/integration/setup/sparql-template-create.js +0 -141
  43. package/integration/sparql-editor/actions/execute-query.spec.js +0 -44
  44. package/integration/sparql-editor/actions/expand-results-over-sameas.spec.js +0 -136
  45. package/integration/sparql-editor/actions/include-inferred-statements.spec.js +0 -100
  46. package/integration/sparql-editor/actions/save-query.spec.js +0 -70
  47. package/integration/sparql-editor/actions/show-saved-queries.spec.js +0 -61
  48. package/integration/sparql-editor/internationalization.spec.js +0 -41
  49. package/integration/sparql-editor/saved-query/abort-query.spec.js +0 -60
  50. package/integration/sparql-editor/saved-query/delete-query.spec.js +0 -56
  51. package/integration/sparql-editor/saved-query/edit-query.spec.js +0 -68
  52. package/integration/sparql-editor/saved-query/share-query.spec.js +0 -78
  53. package/integration/sparql-editor/sparql-editor.spec.js +0 -20
  54. package/integration/sparql-editor/yasgui-tabs.spec.js +0 -107
  55. package/integration/sparql-editor/yasr/download-as.spec.js +0 -62
  56. package/integration/sparql-editor/yasr/pagination.spec.js +0 -234
  57. package/integration/sparql-editor/yasr/table-plugin.spec.js +0 -191
  58. package/integration/sparql-editor/yasr/toolbar/visual-button.spec.js +0 -56
  59. package/integration-flaky/setup/sparql-template-create.js +0 -139
  60. package/integration-flaky/sparql-editor/actions/execute-update-query.spec.js +0 -89
  61. package/integration-flaky/sparql-editor/actions/share-query.spec.js +0 -84
  62. package/integration-flaky/sparql-editor/lucene-connector.spec.js +0 -62
  63. package/steps/application-steps.js +0 -23
  64. package/steps/error-steps.js +0 -9
  65. package/steps/explore/graphs-overview-steps.js +0 -24
  66. package/steps/explore/similarity-index-create-steps.js +0 -113
  67. package/steps/explore/similarity-indexes-steps.js +0 -18
  68. package/steps/language-selector-steps.js +0 -22
  69. package/steps/loader-steps.js +0 -10
  70. package/steps/lucene-connector-steps.js +0 -43
  71. package/steps/main-menu-steps.js +0 -39
  72. package/steps/repository-selector-steps.js +0 -26
  73. package/steps/resource/resource-edit-steps.js +0 -111
  74. package/steps/resource/resource-steps.js +0 -145
  75. package/steps/setup/jdbc-create-steps.js +0 -97
  76. package/steps/setup/jdbc-steps.js +0 -42
  77. package/steps/setup/sparql-create-update-steps.js +0 -55
  78. package/steps/setup/sparql-templates-steps.js +0 -34
  79. package/steps/sparql-editor-steps.js +0 -20
  80. package/steps/yasgui/confirmation-dialog-steps.js +0 -13
  81. package/steps/yasgui/pagination-steps.js +0 -47
  82. package/steps/yasgui/plugin/error-plugin-steps.js +0 -10
  83. package/steps/yasgui/save-query-dialog.js +0 -61
  84. package/steps/yasgui/saved-queries-dialog.js +0 -29
  85. package/steps/yasgui/saved-query.js +0 -25
  86. package/steps/yasgui/share-saved-query-dialog.js +0 -25
  87. package/steps/yasgui/table-plugin-steps.js +0 -29
  88. package/steps/yasgui/yasgui-steps.js +0 -191
  89. package/steps/yasgui/yasqe-steps.js +0 -187
  90. package/steps/yasgui/yasr-steps.js +0 -105
  91. package/stubs/namespace-stubs.js +0 -10
  92. package/stubs/security-stubs.js +0 -69
  93. package/stubs/yasgui/connectors-stubs.js +0 -12
  94. package/stubs/yasgui/query-stubs.js +0 -258
@@ -52,8 +52,8 @@
52
52
  "message_size_kb_tooltip": "Message size concerns the size of the data blocks transferred during data replication streaming through the RPC protocol.",
53
53
  "verification_timeout": "Verification timeout",
54
54
  "verification_timeout_tooltip": "Verification timeout concerns the amount of time a follower node would wait until attempting to verify last committed entry when the first verification is unsuccessful.",
55
- "transaction_log_max_size_gb": "Transaction log maximum size",
56
- "transaction_log_max_size_gb_tooltip": "Maximum size of the transaction log in GBs that will trigger an automatic truncation of the transaction log if it becomes bigger. The minimum transaction log size is 1 GB. Negative numbers will disable the automatic transaction log truncation."
55
+ "transaction_log_maximum_size_gb": "Transaction log maximum size GB",
56
+ "transaction_log_maximum_size_gb_tooltip": "Maximum size of the transaction log in GBs that will trigger an automatic truncation of the transaction log if it becomes bigger. The minimum transaction log size is 1 GB. Negative numbers will disable the automatic transaction log truncation."
57
57
  },
58
58
  "cluster_page": {
59
59
  "create_page_title": "Create cluster",
@@ -72,6 +72,7 @@
72
72
  "toggle_legend_btn": "Toggle legend",
73
73
  "errors": {
74
74
  "only_positive_integers": "Enter only positive integers",
75
+ "small_transaction_log_max_size": "Transaction log maximum size must be at least 1 GB or a negative number",
75
76
  "at_least_two_nodes": "Must have at least two nodes",
76
77
  "no_rpc_address": "Error retrieving RPC address: {{error}}",
77
78
  "nodes_status_label": "Nodes status",
@@ -118,6 +119,32 @@
118
119
  "content": "Select nodes to be removed from existing cluster"
119
120
  }
120
121
  },
122
+ "acl_management": {
123
+ "rulestable": {
124
+ "column": {
125
+ "index": "#",
126
+ "subject": "Subject",
127
+ "predicate": "Predicate",
128
+ "object": "Object",
129
+ "context": "Context",
130
+ "role": "Role",
131
+ "policy": "Policy"
132
+ },
133
+ "actions": {
134
+ "move_up": "Move the rule up",
135
+ "move_down": "Move the rule down",
136
+ "delete_rule": "Delete rule",
137
+ "add_rule": "Add new rule",
138
+ "edit_rule": "Edit rule"
139
+ },
140
+ "messages": {
141
+ "no_data": "There are no rules defined in current repository"
142
+ }
143
+ },
144
+ "errors": {
145
+ "loading_rules": "Error during ACL rules"
146
+ }
147
+ },
121
148
  "config.name.label": "Config name",
122
149
  "graph.config.required": "My graph config (required)",
123
150
  "description.text": "Description",
@@ -260,7 +287,6 @@
260
287
  "new.sentence.start": "New",
261
288
  "no.connectors.available": "No connectors available",
262
289
  "current.repo.no.connector.support": "The current repository does not support any connectors. Please check the type of the repository or select another one.",
263
- "edit.select.query": "Edit select query",
264
290
  "edit.search.query": "Edit search query",
265
291
  "edit.analogical.query": "Edit analogical query",
266
292
  "current.repo.error": "The currently selected repository cannot be used for queries due to an error:",
@@ -545,11 +571,24 @@
545
571
  "view.jdbc.helpInfo": "The JDBC configuration view allows you to configure, store, update, preview, and delete virtual SQL tables. These tables can then be used with the Avatica JDBC driver. Each virtual SQL table is based on a SPARQL SELECT query and requires additional metadata for the definition of the SQL columns.",
546
572
  "view.jdbc.create.title": "SQL table configuration",
547
573
  "view.jdbc.create.helpInfo": "The SQL table configuration view is used to define a virtual SQL table. Each table must have a name, a SPARQL SELECT query, and a set of SQL column definitions.",
548
- "view.jdbc.create.get_suggestion_sql_type": "Get suggestion...",
549
574
  "jdbc.column.names.constraint": "Column names must be placed in array.",
550
575
  "view.namespaces.helpInfo": "The Namespaces view provides an overview of all namespaces defined in a GraphDB repository. Namespaces are essentially shorthand notations for IRIs. Here you can add, remove and modify them.",
551
576
  "view.query.and.update.monitoring.title": "Query and Update monitoring",
552
577
  "view.query.and.update.monitoring.helpInfo": "The Queries and Updates monitoring view shows all running queries and updates in a GraphDB repository. A query or update can be terminated by pressing the Abort button.",
578
+ "view.monitoring.backup_and_restore.title": "Backup and Restore",
579
+ "view.monitoring.backup_and_restore.helpInfo": "The Backup and Restore monitoring view shows running backup or restore operation.",
580
+ "view.monitoring.backup_and_restore.id.header": "Id",
581
+ "view.monitoring.backup_and_restore.username.header": "Username",
582
+ "view.monitoring.backup_and_restore.recovery_operation_type.header": "Recovery operation type",
583
+ "view.monitoring.backup_and_restore.affected_repositories.header": "Affected repositories",
584
+ "view.monitoring.backup_and_restore.lifetime.header": "Lifetime",
585
+ "view.monitoring.backup_and_restore.snapshot_options.header": "Snapshot options",
586
+ "view.monitoring.backup_and_restore.node_performing_cluster_backup.header": "Node performing backup",
587
+ "view.monitoring.backup_and_restore.CREATE_BACKUP_IN_PROGRESS": "Creating backup",
588
+ "view.monitoring.backup_and_restore.RESTORE_BACKUP_IN_PROGRESS": "Restoring backup",
589
+ "view.monitoring.backup_and_restore.CREATE_CLOUD_BACKUP_IN_PROGRESS": "Creating cloud backup",
590
+ "view.monitoring.backup_and_restore.RESTORE_CLOUD_BACKUP_IN_PROGRESS": "Restoring cloud backup",
591
+ "view.monitoring.backup_and_restore.no_running_backup_and_restore": "No running backup or restore.",
553
592
  "view.rdf.rank.title": "RDF Rank",
554
593
  "view.rdf.rank.helpInfo": "RDF Rank is an algorithm that identifies the most important or popular entities in the repository by examining their interconnectedness. The popularity of the entities can be used to order the query results. Use this view to configure the RDF rank, recompute it or check the current state.",
555
594
  "view.repositories.helpInfo": "The Repositories view is used to create, modify and delete repositories and connections to remote GraphDB instances (also known as remote locations).",
@@ -559,6 +598,8 @@
559
598
  "view.resource.monitoring.title": "System monitoring",
560
599
  "view.resource.monitoring.helpInfo": "The System monitoring view shows the usage of various system resources, such as memory, CPU, file descriptors, and storage space. It also shows some performance metrics that allow you to diagnose various issues, as well as an overview of the cluster health",
561
600
  "view.users.access.helpInfo": "The Users and Access view is used to manage the users and their access to the GraphDB repositories. You can also enable or disable the security of the entire GraphDB. When security is disabled, everyone has full access to the repositories and the admin functionality.",
601
+ "view.aclmanagement.title": "ACL Management",
602
+ "view.aclmanagement.helpInfo": "The ACL management view is used to manage the Access Control List, a mechanism for fine-grained access level control on the quad level of the repository. Each ACL rule consists of the quad (subject, predicate, object, context, including wildcards) whose level needs to be controlled, the applicable role membership and the policy (allow or deny) of the rule.",
562
603
  "view.create.user.title": "Create new user",
563
604
  "view.edit.user.title": "Edit user: {{userId}}",
564
605
  "view.login.title": "Login",
@@ -604,6 +645,7 @@
604
645
  "menu.sparql.label": "SPARQL",
605
646
  "menu.monitor.label": "Monitor",
606
647
  "menu.queries.and.updates.label": "Queries and Updates",
648
+ "menu.backup_and_restore.label": "Backup and Restore",
607
649
  "menu.enableFtsIndex.label": "Enable full-text search (FTS) index",
608
650
  "menu.ftsIndexes.label": "FTS indexes to build (comma delimited)",
609
651
  "menu.ftsStringLiteralsIndex.label": "FTS index for xsd:string literals",
@@ -611,7 +653,10 @@
611
653
  "menu.ftsDefaultAnalyzer.label": "Analyzer for the default index",
612
654
  "menu.resources.label": "System",
613
655
  "menu.setup.label": "Setup",
656
+ "menu.lab.label": "Lab",
657
+ "menu.ttyg.label": "Talk to Your Graph",
614
658
  "menu.repositories.label": "Repositories",
659
+ "menu.aclmanagement.label": "ACL Management",
615
660
  "menu.users.and.access.label": "Users and Access",
616
661
  "menu.my.settings.label": "My Settings",
617
662
  "menu.cluster.label": "Cluster",
@@ -925,7 +970,7 @@
925
970
  "jdbc.not.delete.sql.msg": "Could not delete SQL table",
926
971
  "jdbc.warning.unsaved.changes": "You have unsaved changes. Are you sure that you want to exit?",
927
972
  "jdbc.not.get.sql.msg2": "Could not get SQL table configuration",
928
- "jdbc.required.configuration.name": "SQL table name is required",
973
+ "jdbc.required.configuration.name": "SQL configuration name is required",
929
974
  "jdbc.saved.configuration": "SQL table configuration saved",
930
975
  "jdbc.not.saved.configuration": "Could not save SQL table configuration",
931
976
  "jdbc.configuration.updated": "SQL table configuration updated",
@@ -1245,17 +1290,13 @@
1245
1290
  "similarity.could.not.get.indexes.error": "Could not get indexes",
1246
1291
  "similarity.empty.index.name.error": "Index name cannot be empty",
1247
1292
  "similarity.index.name.constraint": "Index name can contain only letters (a-z, A-Z), numbers (0-9), \"-\" and \"_\"",
1248
- "similarity.query.type.DATA.name": "Data",
1249
- "similarity.query.type.SEARCH.name": "Search",
1250
- "similarity.query.type.ANALOGICAL.name": "Analogical",
1251
- "similarity.error.query.empty": "The '{{queryType}}' query cannot be empty.",
1252
- "similarity.error.query.invalid": "Invalid '{{queryType}}' query",
1253
- "similarity.error.query.invalid_type": "The '{{queryType}}' query must be a SELECT query",
1293
+ "similarity.empty.select.query.error": "Select query cannot be empty.",
1294
+ "similarity.empty.search.query.error": "Search query cannot be empty.",
1295
+ "similarity.empty.analogical.query.error": "Analogical query cannot be empty.",
1254
1296
  "similarity.index.select.queries.constraint": "Similarity index requires SELECT queries.",
1255
1297
  "similarity.could.not.get.search.queries.error": "Could not get search queries",
1256
1298
  "similarity.existing.index.name.error": "Index with this name already exists.",
1257
1299
  "similarity.create.index.error": "Could not create index",
1258
- "similarity.create.index.successfully": "Similarity index created successfully.",
1259
1300
  "similarity.indexes.select.queries.constraint": "Similarity indexes work only with SELECT queries.",
1260
1301
  "similarity.explain.select.queries.constraint": "Explain only works with SELECT queries.",
1261
1302
  "cannot.execute.update.error": "Cannot execute updates from this editor.",
@@ -1269,8 +1310,6 @@
1269
1310
  "similarity.get.resource.error": "Could not get resource!",
1270
1311
  "similarity.delete.index.warning": "Are you sure you want to delete the index '{{name}}'?",
1271
1312
  "similarity.rebuild.index.warning": "Are you sure you want to rebuild the whole index '{{name}}'?<br>You will still be able to use the latest successful build!",
1272
- "similarity.copy_of.prefix": "Copy_of",
1273
- "similarity.warning.unsaved.changes": "You have unsaved changes. Are you sure that you want to exit?",
1274
1313
  "sparql.template.get.templates.error": "Could not get SPARQL templates",
1275
1314
  "sparql.template.delete.template.warning": "Are you sure you want to delete the SPARQL template '{{templateID}}'?",
1276
1315
  "sparql.template.delete.template.success": "Deleted successfully SPARQL template",
@@ -1281,7 +1320,6 @@
1281
1320
  "update.sparql.template.success.msg": "Updated SPARQL template",
1282
1321
  "save.sparql.template.failure.msg": "Could not save {{templateID}} template",
1283
1322
  "sparql.template.query.constraint": "The template query must be an UPDATE query",
1284
- "sparql.template.query.invalid": "Invalid query",
1285
1323
  "save.sparql.template.success.msg": "Saved SPARQL template",
1286
1324
  "attach.remote.gdb.instance": "Attach a remote GraphDB instance",
1287
1325
  "remote.location.url": "Location URL*",
@@ -1572,7 +1610,6 @@
1572
1610
  "visual.config.search.box.starting.point": "Starting point - Search box",
1573
1611
  "visual.config.query.results.starting.point": "Starting point - Query results",
1574
1612
  "visual.config.fixed.resource.starting.point": "Starting point - Fixed resource",
1575
- "visual.config.warning.unsaved.changes": "You have unsaved changes. Are you sure that you want to exit?",
1576
1613
  "visual.edit.config": "Edit configuration",
1577
1614
  "visual.delete.config": "Delete configuration",
1578
1615
  "visual.saved.graphs": "Saved graphs",
@@ -1828,5 +1865,26 @@
1828
1865
  "guide.step_plugin.welcome-what.content": "{{translatedGuideDescription}}<p>Let's get started for real now!</p>",
1829
1866
  "guide.confirm.cancel.message": "Are you sure you want to stop the guide?",
1830
1867
  "guide.unexpected.error.message": "The guide was cancelled due to an unexpected error. Please run the guide again and if the problem persists contact the support.",
1831
- "guide.start.unexpected.error.message": "The guide cannot be started due to an unexpected error. Please try running the guide again and if the problem persists contact the support."
1868
+ "guide.start.unexpected.error.message": "The guide cannot be started due to an unexpected error. Please try running the guide again and if the problem persists contact the support.",
1869
+ "ttyg.helpInfo": "Talk to Your Graph is chat bot based on OpenAI's GPT-4 model that can answer questions about data stored in GraphDB, leveraging both your data and the general knowledge of the GPT-4 model. The bot works in connection with the ChatGPT Retrieval connector.",
1870
+ "ttyg.hint": "Talk to your graph – simply ask a question!",
1871
+ "ttyg.help.what.title": "What is this?",
1872
+ "ttyg.help.what.content": "Talk to Your Graph is chat bot based on OpenAI's GPT-4 model that can answer questions about data stored in GraphDB, leveraging both your data and the general knowledge of the GPT-4 model.",
1873
+ "ttyg.help.how.title": "How does it work?",
1874
+ "ttyg.help.how.content": "The bot uses the ChatGPT Retrieval connector to fetch information it does not know about. As such, you must first create a suitable connector. See also the settings for fine-tuning the integration with the Retrieval connector.",
1875
+ "ttyg.ask.button": "Ask",
1876
+ "ttyg.clear.hint": "Clear the chat history",
1877
+ "ttyg.clear.history.confirmation": "This will clear the history conversation.",
1878
+ "ttyg.settings.title": "Talk to Your Graph Settings",
1879
+ "ttyg.settings.info": "The settings are stored in the browser only and are per repository.",
1880
+ "ttyg.settings.connector.id": "Retrieval connector ID",
1881
+ "ttyg.settings.connector.id.tooltip": "The ID of the Retrieval connector to use. If empty, the first defined connector will be used.",
1882
+ "ttyg.settings.query.template": "Query template",
1883
+ "ttyg.settings.query.template.tooltip": "The query template used by the chat bot to request more information from the connector. It must contain at least the \"query\" key but may also contain a \"filter\" key if your connector has suitable metadata.",
1884
+ "ttyg.settings.ground.truths": "Ground truths",
1885
+ "ttyg.settings.ground.truths.tooltip": "An optional list of ground truths that help the chat bot to establish context.",
1886
+ "ttyg.settings.topk": "Number of top results",
1887
+ "ttyg.settings.topk.tooltip": "Number of results returned to the chat bot when it requests more information. More results will provide more information but they may also introduce noise.",
1888
+ "ttyg.settings.echo.vector.query": "Echo vector query",
1889
+ "ttyg.settings.echo.vector.query.tooltip": "If enabled the bot will use the generated queries as feedback to the GPT API."
1832
1890
  }
@@ -0,0 +1,69 @@
1
+ [
2
+ {
3
+ "id": "1",
4
+ "username": "admin",
5
+ "operation": "CREATE_CLOUD_BACKUP",
6
+ "affectedRepositories": [
7
+ "1"
8
+ ],
9
+ "msSinceCreated": 23416,
10
+ "snapshotOptions": {
11
+ "withRepositoryData": true,
12
+ "withSystemData": false,
13
+ "withClusterData": false,
14
+ "cleanDataDir": true,
15
+ "removeCluster": false,
16
+ "repositories": null,
17
+ "replicationTimeoutMs": null
18
+ },
19
+ "nodePerformingClusterBackup": null
20
+ },
21
+ {
22
+ "id": "2",
23
+ "username": "admin",
24
+ "operation": "CREATE_CLOUD_BACKUP",
25
+ "affectedRepositories": [
26
+ "1",
27
+ "test Repository 2"
28
+ ],
29
+ "msSinceCreated": 3423,
30
+ "snapshotOptions": {
31
+ "withRepositoryData": true,
32
+ "withSystemData": false,
33
+ "withClusterData": false,
34
+ "cleanDataDir": true,
35
+ "removeCluster": false,
36
+ "repositories": null,
37
+ "replicationTimeoutMs": null
38
+ },
39
+ "nodePerformingClusterBackup": "node Performing Cluster Backup"
40
+ },
41
+ {
42
+ "id": "3",
43
+ "username": "admin",
44
+ "operation": "CREATE_CLOUD_BACKUP",
45
+ "affectedRepositories": [
46
+ "1",
47
+ "test Repository 2",
48
+ "test Repository 3",
49
+ "test Repository 4",
50
+ "test Repository 5",
51
+ "test Repository 6",
52
+ "test Repository 7",
53
+ "test Repository 8",
54
+ "test Repository 9",
55
+ "test Repository 10"
56
+ ],
57
+ "msSinceCreated": 12334,
58
+ "snapshotOptions": {
59
+ "withRepositoryData": true,
60
+ "withSystemData": false,
61
+ "withClusterData": false,
62
+ "cleanDataDir": true,
63
+ "removeCluster": false,
64
+ "repositories": null,
65
+ "replicationTimeoutMs": null
66
+ },
67
+ "nodePerformingClusterBackup": "node Performing Cluster Backup"
68
+ }
69
+ ]
@@ -0,0 +1,44 @@
1
+ {
2
+ "data": [
3
+ {
4
+ "subject": "<urn:Mary>",
5
+ "predicate": "*",
6
+ "object": "*",
7
+ "context": "*",
8
+ "role": "!CUSTOM_ROLE2",
9
+ "policy": "allow"
10
+ },
11
+ {
12
+ "subject": "*",
13
+ "predicate": "<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>",
14
+ "object": "*",
15
+ "context": "*",
16
+ "role": "CUSTOM_ROLE1",
17
+ "policy": "deny"
18
+ },
19
+ {
20
+ "subject": "<<<http://example.com/test> <http://www.w3.org/2000/01/rdf-schema#label> \"test aber auf Deutsch\"@de>>",
21
+ "predicate": "*",
22
+ "object": "\"test aber auf Deutsch\"@en",
23
+ "context": "<http://example.com/graph1>",
24
+ "role": "CUSTOM_ROLE3",
25
+ "policy": "deny"
26
+ },
27
+ {
28
+ "subject": "*",
29
+ "predicate": "*",
30
+ "object": "\"15\"^^<http://www.w3.org/2001/XMLSchema#int>",
31
+ "context": "*",
32
+ "role": "CUSTOM_ROLE3",
33
+ "policy": "allow"
34
+ },
35
+ {
36
+ "subject": "<urn:Cat>",
37
+ "predicate": "*",
38
+ "object": "<<<http://example.com/test> <http://www.w3.org/2000/01/rdf-schema#label> \"test aber auf Deutsch\"@de>>",
39
+ "context": "*",
40
+ "role": "CUSTOM_ROLE4",
41
+ "policy": "deny"
42
+ }
43
+ ]
44
+ }
@@ -1,5 +1,3 @@
1
- import {YasrSteps} from "../../steps/yasgui/yasr-steps";
2
-
3
1
  const EXPORT_GRAPHS_TABLE_ID = '#export-graphs';
4
2
  const ROWS_PER_PAGE_20 = '1';
5
3
  const ROWS_PER_PAGE_ALL = '2';
@@ -120,7 +118,7 @@ describe('Graphs overview screen validation', () => {
120
118
  // open default graph through the link and verify that the table view is rendered
121
119
  cy.contains('The default graph').click();
122
120
  cy.url().should('contain', Cypress.config('baseUrl') + '/resource');
123
- YasrSteps.getResultTableHeader().should('be.visible');
124
- YasrSteps.getResultTableHeaderColumns().should('have.length', 5);
121
+ cy.get('.resultsTable').should('be.visible')
122
+ .find('thead th').should('have.length', 5);
125
123
  });
126
124
  });
@@ -1,11 +1,3 @@
1
- import {SparqlEditorSteps} from "../../steps/sparql-editor-steps";
2
- import {YasqeSteps} from "../../steps/yasgui/yasqe-steps";
3
- import {YasrSteps} from "../../steps/yasgui/yasr-steps";
4
- import {SimilarityIndexCreateSteps} from "../../steps/explore/similarity-index-create-steps";
5
- import {SimilarityIndexesSteps} from "../../steps/explore/similarity-indexes-steps";
6
- import {ModalDialogSteps, VerifyConfirmationDialogOptions} from "../../steps/modal-dialog-steps";
7
- import {RepositorySelectorSteps} from "../../steps/repository-selector-steps";
8
-
9
1
  const INDEX_NAME = 'index-' + Date.now();
10
2
  const FILE_TO_IMPORT = 'people.zip';
11
3
  const INDEX_CREATE_URL = '/similarity/index/create';
@@ -35,10 +27,6 @@ const MODIFIED_ANALOGICAL_QUERY = 'PREFIX :<http://www.ontotext.com/graphdb/simi
35
27
  ' ?result :value ?resultValue;\n' +
36
28
  ' :score ?score .\n' +
37
29
  'OPTIONAL { ?result <http://dbpedia.org/ontology/birthPlace> ?birthDate . }}';
38
- const MODIFIED_DATA_QUERY = 'SELECT ?documentID ?documentText { \n' +
39
- '?documentID <http://dbpedia.org/ontology/birthDate> ?documentText . \n' +
40
- 'filter(isLiteral(?documentText)) \n' +
41
- '}order by asc(str(?documentID))';
42
30
 
43
31
  describe('Similarity screen validation', () => {
44
32
 
@@ -194,30 +182,34 @@ describe('Similarity screen validation', () => {
194
182
  searchIndex('Neal');
195
183
 
196
184
  // Then I expect search results to be displayed
185
+ cy.get('.search-results').should('be.visible');
197
186
  // And showing 20 results
198
- YasrSteps.getResults().should('have.length', 20);
187
+ cy.get('.resultsTable tbody tr').should('have.length', 20);
199
188
  });
200
189
  });
201
190
 
202
191
  it('Disable and enable similarity plugin', () => {
203
- const disableSimilarityPlugin = 'INSERT DATA { <u:a> <http://www.ontotext.com/owlim/system#stopplugin> \'similarity\' . }';
204
192
  initRepository();
205
- cy.presetRepository(repositoryId);
206
193
 
207
- SparqlEditorSteps.visitSparqlEditorPage();
194
+ cy.visit('/sparql', {
195
+ onBeforeLoad: (win) => {
196
+ win.localStorage.setItem('com.ontotext.graphdb.repository', repositoryId);
197
+ }
198
+ });
199
+ cy.window();
200
+ waitUntilSparqlPageIsLoaded();
208
201
 
209
202
  // When I disable the plugin.
210
- YasqeSteps.pasteQuery(disableSimilarityPlugin);
211
- YasqeSteps.executeQuery();
203
+ disableSimilarityPlugin();
212
204
 
213
205
  // Then I expect a message to be displayed confirming that operation is complete.
214
- YasrSteps.getResponseInfo().should('be.visible').and('contain', 'The number of statements did not change.');
206
+ cy.get('.update-info.alert-info').should('be.visible').and('contain', 'The number of statements did not change.');
215
207
 
216
208
  // When I try to disable it while it's disabled.
217
- YasqeSteps.executeQuery();
209
+ disableSimilarityPlugin();
218
210
 
219
211
  // Then I expect an error message to be displayed informing me that the plugin has been already disabled.
220
- YasrSteps.getErrorBody().should('be.visible').and('contain', 'Plugin similarity has been already disabled');
212
+ cy.get('.update-info.alert-danger .plaintext').should('be.visible').and('contain', 'Plugin similarity has been already disabled');
221
213
 
222
214
  // When I visit similarity view while the plugin is disabled.
223
215
  cy.visit('/similarity');
@@ -242,119 +234,6 @@ describe('Similarity screen validation', () => {
242
234
  });
243
235
  });
244
236
 
245
- context('Confirmations when try to change location', () => {
246
-
247
- beforeEach(() => {
248
- initRepositoryAndVisitSimilarityView();
249
- openCreateNewIndexForm();
250
- });
251
-
252
- it('should not display confirm message when there are not changes', () => {
253
- // Given I opened the create similarity view.
254
- // When I click on cancel button.
255
- SimilarityIndexCreateSteps.cancel();
256
-
257
- // Then I expect to be redirected to similarity indexes view.
258
- SimilarityIndexesSteps.verifyUrl();
259
-
260
- });
261
-
262
- it('should display confirm message if index name is filled', () => {
263
- // Given I opened the create similarity view,
264
- // and similarity index name is filled.
265
- SimilarityIndexCreateSteps.typeSimilarityIndexName('index');
266
-
267
- // When click on cancel button.
268
- // Then I expect to be redirected to similarity indexes view.
269
- ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
270
- });
271
-
272
- it('should display confirm message if data query is changed', () => {
273
- // Given I opened the create similarity view,
274
- // and data query is changed.
275
- // During the initialization query is changed and this broke the test.
276
- // Most the time the broken flow is:
277
- // 1. cypress start to type 's';
278
- // 2. query is changed
279
- // 3. cypress continuous to type 'ome changes'.
280
- // as result query is 'ome changes<data query>. YasqeSteps.writeInEditor function has check if parameter is filled, in our case 'some changes',
281
- // and this broke the test. Add a little wait time to give chance yasqe query to be filled.
282
- cy.wait(1000);
283
- YasqeSteps.writeInEditor('some changes');
284
-
285
- // When click on cancel button.
286
- // Then I expect to be redirected to similarity indexes view.
287
- ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
288
- });
289
-
290
- it('should display confirm message if "Semantic Vectors create index parameters" is changed', () => {
291
- // Given I opened the create similarity view,
292
- // and "Semantic Vectors create index parameters" is changed.
293
- SimilarityIndexCreateSteps.showMoreOptions();
294
- SimilarityIndexCreateSteps.getSemanticVectorsInput().type('semantic vector');
295
-
296
- // When click on cancel button.
297
- // Then I expect to be redirected to similarity indexes view.
298
- ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
299
- });
300
-
301
- it('should display confirm message if "Stop words" is changed', () => {
302
- // Given I opened the create similarity view,
303
- // and "Stop words" is changed.
304
- SimilarityIndexCreateSteps.showMoreOptions();
305
- SimilarityIndexCreateSteps.getStopWordsInput().type('stop words');
306
-
307
- // When click on cancel button.
308
- // Then I expect to be redirected to similarity indexes view.
309
- ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
310
- });
311
-
312
- it('should display confirm message if "Analyzer Class" is changed', () => {
313
- // Given I opened the create similarity view,
314
- // and "Analyzer Class" is changed.
315
- SimilarityIndexCreateSteps.showMoreOptions();
316
- SimilarityIndexCreateSteps.getAnalyzerClassInput().type('BulgarianAnalyzer');
317
-
318
- // When click on cancel button.
319
- // Then I expect to be redirected to similarity indexes view.
320
- ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
321
- });
322
-
323
- it('should display confirm message if "Literal index" is changed', () => {
324
- // Given I opened the create similarity view,
325
- // and "Literal index" is changed.
326
- SimilarityIndexCreateSteps.showMoreOptions();
327
- SimilarityIndexCreateSteps.checkLiteralIndex();
328
-
329
- // When click on cancel button.
330
- // Then I expect to be redirected to similarity indexes view.
331
- ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
332
- });
333
-
334
- it('should display confirm message if "Search query" is changed', () => {
335
- // Given I opened the create similarity view,
336
- // and "Search query" is changed.
337
- SimilarityIndexCreateSteps.switchToSearchQueryTab();
338
- YasqeSteps.writeInEditor('some changes');
339
-
340
- // When click on cancel button.
341
- // Then I expect to be redirected to similarity indexes view.
342
- ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
343
- });
344
-
345
- it('should display confirm message if "Analogical query" is changed', () => {
346
- // Given I opened the create similarity view,
347
- // and "Analogical query" is changed.
348
- SimilarityIndexCreateSteps.switchToCreatePredictionIndexTab();
349
- SimilarityIndexCreateSteps.switchToAnalogicalQueryTab();
350
- YasqeSteps.writeInEditor('some changes');
351
-
352
- // When click on cancel button.
353
- // Then I expect to be redirected to similarity indexes view.
354
- ModalDialogSteps.verifyUrlChangedConfirmation(createVerifyConfirmationDialogOptions());
355
- });
356
- });
357
-
358
237
  function initRepository() {
359
238
  repositoryId = 'similarity-repo-' + Date.now();
360
239
  cy.createRepository({id: repositoryId});
@@ -388,6 +267,22 @@ describe('Similarity screen validation', () => {
388
267
  getSearchIndexInput().closest('.input-group').find('.autocomplete-visual-btn').click();
389
268
  }
390
269
 
270
+ function disableSimilarityPlugin() {
271
+ const disableSimilarityPluginQuery = 'INSERT DATA { <u:a> <http://www.ontotext.com/owlim/system#stopplugin> \'similarity\' . }';
272
+ cy.pasteQuery(disableSimilarityPluginQuery);
273
+ cy.executeQuery();
274
+ }
275
+
276
+ function waitUntilSparqlPageIsLoaded() {
277
+ // Workbench loading screen should not be visible
278
+ cy.get('.ot-splash').should('not.be.visible');
279
+
280
+ cy.waitUntilQueryIsVisible();
281
+
282
+ // No active loader
283
+ cy.get('.ot-loader-new-content').should('not.exist');
284
+ }
285
+
391
286
  function checkSimilarityPageDefaultState() {
392
287
  //TODO: Should change the 'contain' method to 'eq' once GDB-3699 is fixed.
393
288
  cy.url().should('contain', Cypress.config('baseUrl') + '/similarity');
@@ -402,7 +297,7 @@ describe('Similarity screen validation', () => {
402
297
  cy.url().should('contain', `${Cypress.config('baseUrl')}/similarity/index/create`);
403
298
  // Wait for query editor to become ready because consecutive command for index creation might
404
299
  // fail because the query may not be submitted with the request.
405
- YasqeSteps.waitUntilQueryIsVisible();
300
+ cy.waitUntilQueryIsVisible();
406
301
  }
407
302
 
408
303
  function setIndexName() {
@@ -463,7 +358,7 @@ describe('Similarity screen validation', () => {
463
358
  cy.get('#create-predication-index').click();
464
359
  // Wait for query editor to become ready because consecutive command for index creation might
465
360
  // fail because the query may not be submitted with the request.
466
- YasqeSteps.waitUntilQueryIsVisible();
361
+ cy.waitUntilQueryIsVisible();
467
362
  }
468
363
 
469
364
  function cloneExistingIndex() {
@@ -516,25 +411,29 @@ describe('Similarity screen validation', () => {
516
411
  // Verify that 'similarity-index-name' input field is disabled
517
412
  getSimilarity().should('be.disabled');
518
413
  getSearchQueryTab().should('be.visible');
519
- YasqeSteps.waitUntilQueryIsVisible();
520
- const shouldAnalogicalTabBeVisible = (isPredication ? '' : 'not.') + 'exist';
414
+ let shouldAnalogicalTabBeVisible = (isPredication ? '' : 'not.') + 'be.visible';
521
415
  getAnalogicalQueryTab().should(shouldAnalogicalTabBeVisible);
522
416
  if (isPredication) {
523
- YasqeSteps.verifyQueryContains('SELECT ?entity ?score {');
417
+ cy.verifyQueryAreaContains('SELECT ?entity ?score {');
524
418
  }
525
419
  }
526
420
 
527
421
  function changeDataQuery() {
528
- YasqeSteps.pasteQuery(MODIFIED_DATA_QUERY);
529
- cy.get('.test-query-btn', {force: true}).click();
422
+ const MODIFIED_DATA_QUERY = 'SELECT ?documentID ?documentText { \n' +
423
+ '?documentID <http://dbpedia.org/ontology/birthDate> ?documentText . \n' +
424
+ 'filter(isLiteral(?documentText)) \n' +
425
+ '}order by asc(str(?documentID))';
426
+
427
+ cy.pasteQuery(MODIFIED_DATA_QUERY);
428
+ cy.get('.test-query-btn').click();
530
429
  cy.get('.sparql-loader').should('not.exist');
531
- YasrSteps.getResults().its('length').should('be.gt', 1);
532
- YasrSteps.getResults().contains('http://dbpedia.org/resource/Aaron_Jay_Kernis');
430
+ cy.get('.resultsTable').should('be.visible').find('tbody tr').its('length').should('be.gt', 1);
431
+ cy.get('.uri-cell').eq(0).should('contain', 'http://dbpedia.org/resource/Aaron_Jay_Kernis');
533
432
  }
534
433
 
535
434
  function changeSearchQuery() {
536
- SimilarityIndexCreateSteps.switchToSearchQueryTab();
537
- YasqeSteps.pasteQuery(MODIFIED_SEARCH_QUERY);
435
+ getSearchQueryTab().scrollIntoView().should('be.visible').click();
436
+ cy.pasteQuery(MODIFIED_SEARCH_QUERY);
538
437
  }
539
438
 
540
439
  function changeAnalogicalQuery() {
@@ -542,7 +441,7 @@ describe('Similarity screen validation', () => {
542
441
  .scrollIntoView()
543
442
  .should('be.visible').click()
544
443
  .then(() => {
545
- YasqeSteps.pasteQuery(MODIFIED_ANALOGICAL_QUERY);
444
+ cy.pasteQuery(MODIFIED_ANALOGICAL_QUERY);
546
445
  });
547
446
  }
548
447
 
@@ -575,19 +474,11 @@ describe('Similarity screen validation', () => {
575
474
  }
576
475
 
577
476
  function waitForIndexBuildingIndicatorToHide() {
578
- cy.get('.similarity-index-building-loader').should('not.exist');
477
+ cy.get('.similarity-index-building-loader').should('not.be.visible');
579
478
  }
580
479
 
581
480
  function verifyQueryIsChanged() {
582
481
  const query = 'OPTIONAL { ?result <http://dbpedia.org/ontology/birthPlace> ?birthDate .';
583
- YasqeSteps.verifyQueryContains(query);
584
- }
585
-
586
- function createVerifyConfirmationDialogOptions() {
587
- return new VerifyConfirmationDialogOptions()
588
- .setChangePageFunction(() => SimilarityIndexCreateSteps.getCancelButton().click())
589
- .setConfirmationMessage('You have unsaved changes. Are you sure that you want to exit?')
590
- .setVerifyCurrentUrl(() => cy.url().should('include', `${Cypress.config('baseUrl')}/similarity/index/create`))
591
- .setVerifyRedirectedUrl(() => cy.url().should('eq', `${Cypress.config('baseUrl')}/similarity`));
482
+ cy.verifyQueryAreaContains(query);
592
483
  }
593
484
  });