@geode/opengeodeweb-front 9.11.2 → 9.11.3-rc.2
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.
- package/.github/workflows/test.yml +23 -0
- package/.github/workflows/test_pr.yml +1 -0
- package/components/FeedBack/ErrorBanner.vue +1 -1
- package/components/FeedBack/Snackers.vue +1 -1
- package/components/HybridRenderingView.vue +38 -12
- package/components/Launcher.vue +1 -1
- package/components/PackagesVersions.vue +1 -1
- package/components/Recaptcha.vue +1 -1
- package/components/RemoteRenderingView.vue +1 -1
- package/components/Viewer/BreadCrumb.vue +1 -1
- package/components/Viewer/Options/PolygonAttributeSelector.vue +1 -8
- package/components/Viewer/Options/PolyhedronAttributeSelector.vue +1 -7
- package/components/Viewer/Options/TextureItem.vue +1 -8
- package/components/Viewer/Options/VertexAttributeSelector.vue +1 -5
- package/components/Viewer/Tree/ObjectTree.vue +7 -23
- package/components/Viewer/TreeObject.vue +1 -1
- package/components/Wrapper.vue +1 -1
- package/composables/api_fetch.js +2 -2
- package/composables/run_function_when_microservices_connected.js +1 -1
- package/composables/upload_file.js +2 -2
- package/composables/viewer_call.js +38 -38
- package/geode-opengeodeweb-back-5.10.0-rc.12.tgz +0 -0
- package/geode-opengeodeweb-viewer-1.11.0-rc.5.tgz +0 -0
- package/internal_stores/mesh/edges.js +49 -52
- package/internal_stores/mesh/index.js +20 -14
- package/internal_stores/mesh/points.js +9 -7
- package/internal_stores/mesh/polygons.js +9 -7
- package/internal_stores/mesh/polyhedra.js +8 -6
- package/internal_stores/model/blocks.js +1 -1
- package/internal_stores/model/corners.js +1 -1
- package/internal_stores/model/edges.js +1 -8
- package/internal_stores/model/index.js +1 -1
- package/internal_stores/model/lines.js +2 -2
- package/internal_stores/model/points.js +2 -2
- package/internal_stores/model/surfaces.js +1 -1
- package/package.json +13 -6
- package/stores/data_base.js +9 -1
- package/stores/data_style.js +7 -6
- package/stores/feedback.js +1 -1
- package/stores/geode.js +5 -5
- package/stores/hybrid_viewer.js +1 -1
- package/stores/infra.js +10 -10
- package/stores/treeview.js +1 -1
- package/stores/viewer.js +5 -6
- package/tests/integration/data/fake_id/edged_curve.vtp +20 -0
- package/tests/integration/microservices/back/requirements.in +1 -0
- package/tests/integration/microservices/back/requirements.txt +75 -0
- package/tests/integration/microservices/viewer/requirements.in +1 -0
- package/tests/integration/microservices/viewer/requirements.txt +87 -0
- package/tests/integration/stores/DataStyle/mesh/Edges.nuxt.test.js +138 -0
- package/{test → tests/unit}/components/CrsSelector.nuxt.test.js +6 -3
- package/{test → tests/unit}/components/ExtensionSelector.nuxt.test.js +6 -3
- package/{test → tests/unit}/components/FeedBack/ErrorsBanner.nuxt.test.js +10 -3
- package/{test → tests/unit}/components/FeedBack/Snackers.nuxt.test.js +24 -21
- package/{test → tests/unit}/components/FileSelector.nuxt.test.js +5 -2
- package/{test → tests/unit}/components/FileUploader.nuxt.test.js +6 -3
- package/{test → tests/unit}/components/Inspector/InspectionButton.nuxt.test.js +6 -3
- package/{test → tests/unit}/components/Launcher.nuxt.test.js +9 -2
- package/{test → tests/unit}/components/MissingFilesSelector.nuxt.test.js +6 -3
- package/{test → tests/unit}/components/ObjectSelector.nuxt.test.js +6 -3
- package/{test → tests/unit}/components/PackagesVersions.nuxt.test.js +5 -3
- package/{test → tests/unit}/components/Stepper.nuxt.test.js +1 -0
- package/{test → tests/unit}/components/Wrapper.nuxt.test.js +1 -1
- package/{test → tests/unit}/composables/api_fetch.nuxt.test.js +3 -2
- package/{test/composables/run_function_when_microservices_connected.test.js → tests/unit/composables/run_function_when_microservices_connected.nuxt.test.js} +18 -5
- package/{test → tests/unit}/composables/upload_file.nuxt.test.js +7 -8
- package/{test → tests/unit}/stores/Feedback.nuxt.test.js +12 -8
- package/{test → tests/unit}/stores/Geode.nuxt.test.js +33 -10
- package/{test → tests/unit}/stores/Infra.nuxt.test.js +58 -25
- package/{test → tests/unit}/stores/Viewer.nuxt.test.js +101 -20
- package/{test → tests/unit}/utils/validate_schema.nuxt.test.js +3 -0
- package/tests/vitest.config.js +33 -0
- package/utils/default_styles.js +246 -0
- package/utils/local.js +180 -0
- package/vitest.config.js +0 -13
- /package/{test → tests/unit}/components/Inspector/ResultPanel.nuxt.test.js +0 -0
- /package/{test → tests/unit}/components/Step.nuxt.test.js +0 -0
package/stores/infra.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useStorage } from "@vueuse/core"
|
|
2
2
|
import Status from "@ogw_f/utils/status.js"
|
|
3
3
|
|
|
4
|
-
export const
|
|
4
|
+
export const useInfraStore = defineStore("infra", {
|
|
5
5
|
state: () => ({
|
|
6
6
|
app_mode: getAppMode(),
|
|
7
7
|
ID: useStorage("ID", ""),
|
|
@@ -16,7 +16,7 @@ export const use_infra_store = defineStore("infra", {
|
|
|
16
16
|
return "localhost"
|
|
17
17
|
},
|
|
18
18
|
lambda_url() {
|
|
19
|
-
const geode_store =
|
|
19
|
+
const geode_store = useGeodeStore()
|
|
20
20
|
const public_runtime_config = useRuntimeConfig().public
|
|
21
21
|
const url =
|
|
22
22
|
geode_store.protocol +
|
|
@@ -31,12 +31,12 @@ export const use_infra_store = defineStore("infra", {
|
|
|
31
31
|
},
|
|
32
32
|
microservices_connected() {
|
|
33
33
|
return (
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
useGeodeStore().status == Status.CONNECTED &&
|
|
35
|
+
useViewerStore().status == Status.CONNECTED
|
|
36
36
|
)
|
|
37
37
|
},
|
|
38
38
|
microservices_busy() {
|
|
39
|
-
return
|
|
39
|
+
return useGeodeStore().is_busy || useViewerStore().is_busy
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
42
|
actions: {
|
|
@@ -48,8 +48,8 @@ export const use_infra_store = defineStore("infra", {
|
|
|
48
48
|
if (this.status === Status.CREATED) return
|
|
49
49
|
console.log("LOCK GRANTED !", lock)
|
|
50
50
|
if (this.app_mode == appMode.appMode.DESKTOP) {
|
|
51
|
-
const viewer_store =
|
|
52
|
-
const geode_store =
|
|
51
|
+
const viewer_store = useViewerStore()
|
|
52
|
+
const geode_store = useGeodeStore()
|
|
53
53
|
const back_port = await window.electronAPI.run_back(
|
|
54
54
|
geode_store.default_local_port,
|
|
55
55
|
)
|
|
@@ -64,7 +64,7 @@ export const use_infra_store = defineStore("infra", {
|
|
|
64
64
|
})
|
|
65
65
|
if (error.value || !data.value) {
|
|
66
66
|
this.status = Status.NOT_CREATED
|
|
67
|
-
const feedback_store =
|
|
67
|
+
const feedback_store = useFeedbackStore()
|
|
68
68
|
feedback_store.server_error = true
|
|
69
69
|
return
|
|
70
70
|
}
|
|
@@ -77,8 +77,8 @@ export const use_infra_store = defineStore("infra", {
|
|
|
77
77
|
},
|
|
78
78
|
async create_connection() {
|
|
79
79
|
console.log("create_connection")
|
|
80
|
-
await
|
|
81
|
-
await
|
|
80
|
+
await useViewerStore().ws_connect()
|
|
81
|
+
await useGeodeStore().do_ping()
|
|
82
82
|
return
|
|
83
83
|
},
|
|
84
84
|
},
|
package/stores/treeview.js
CHANGED
package/stores/viewer.js
CHANGED
|
@@ -4,7 +4,7 @@ import "@kitware/vtk.js/Rendering/OpenGL/Profiles/Geometry"
|
|
|
4
4
|
import schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json"
|
|
5
5
|
import Status from "@ogw_f/utils/status.js"
|
|
6
6
|
|
|
7
|
-
export const
|
|
7
|
+
export const useViewerStore = defineStore("viewer", {
|
|
8
8
|
state: () => ({
|
|
9
9
|
default_local_port: "1234",
|
|
10
10
|
client: {},
|
|
@@ -16,14 +16,14 @@ export const use_viewer_store = defineStore("viewer", {
|
|
|
16
16
|
}),
|
|
17
17
|
getters: {
|
|
18
18
|
protocol() {
|
|
19
|
-
if (
|
|
19
|
+
if (useInfraStore().app_mode == appMode.appMode.CLOUD) {
|
|
20
20
|
return "wss"
|
|
21
21
|
} else {
|
|
22
22
|
return "ws"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
port() {
|
|
26
|
-
if (
|
|
26
|
+
if (useInfraStore().app_mode == appMode.appMode.CLOUD) {
|
|
27
27
|
return "443"
|
|
28
28
|
}
|
|
29
29
|
const VIEWER_PORT = useRuntimeConfig().public.VIEWER_PORT
|
|
@@ -33,7 +33,7 @@ export const use_viewer_store = defineStore("viewer", {
|
|
|
33
33
|
return this.default_local_port
|
|
34
34
|
},
|
|
35
35
|
base_url() {
|
|
36
|
-
const infra_store =
|
|
36
|
+
const infra_store = useInfraStore()
|
|
37
37
|
let viewer_url = `${this.protocol}://${infra_store.domain_name}:${this.port}`
|
|
38
38
|
if (infra_store.app_mode == appMode.appMode.CLOUD) {
|
|
39
39
|
if (infra_store.ID == "") {
|
|
@@ -60,7 +60,6 @@ export const use_viewer_store = defineStore("viewer", {
|
|
|
60
60
|
this.picking_mode = false
|
|
61
61
|
},
|
|
62
62
|
async ws_connect() {
|
|
63
|
-
if (process.env.NODE_ENV == "test") return
|
|
64
63
|
if (this.status === Status.CONNECTED) return
|
|
65
64
|
return navigator.locks.request("viewer.ws_connect", async (lock) => {
|
|
66
65
|
if (this.status === Status.CONNECTED) return
|
|
@@ -125,7 +124,7 @@ export const use_viewer_store = defineStore("viewer", {
|
|
|
125
124
|
resolve()
|
|
126
125
|
})
|
|
127
126
|
.catch((error) => {
|
|
128
|
-
console.error(error)
|
|
127
|
+
console.error("error", error)
|
|
129
128
|
viewer_store.status = Status.NOT_CONNECTED
|
|
130
129
|
reject(error)
|
|
131
130
|
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<?xml version="1.0"?>
|
|
2
|
+
<VTKFile type="PolyData" version="1.0" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
|
|
3
|
+
<PolyData>
|
|
4
|
+
<Piece NumberOfPoints="4" NumberOfLines="4">
|
|
5
|
+
<PointData>
|
|
6
|
+
<DataArray type="Float64" Name="points" format="ascii" NumberOfComponents="3" RangeMin="0.100000001" RangeMax="9.39999962">0.1 0.2 0.3 2.1 9.4 6.7 7.5 5.2 6.3 8.7 1.4 4.7 </DataArray>
|
|
7
|
+
</PointData>
|
|
8
|
+
<Points>
|
|
9
|
+
<DataArray type="Float64" Name="Points" format="ascii" NumberOfComponents="3" RangeMin="0.10000000000000001" RangeMax="9.4000000000000004">0.1 0.2 0.3 2.1 9.4 6.7 7.5 5.2 6.3 8.7 1.4 4.7 </DataArray>
|
|
10
|
+
</Points>
|
|
11
|
+
<CellData>
|
|
12
|
+
<DataArray type="Float64" Name="edges" format="ascii" NumberOfComponents="2" RangeMin="0" RangeMax="3">0 1 0 2 3 2 1 2 </DataArray>
|
|
13
|
+
</CellData>
|
|
14
|
+
<Lines>
|
|
15
|
+
<DataArray type="Int64" Name="connectivity" format="ascii" RangeMin="0" RangeMax="3">0 1 0 2 3 2 1 2 </DataArray>
|
|
16
|
+
<DataArray type="Int64" Name="offsets" format="ascii" RangeMin="0" RangeMax="4">2 4 6 8 </DataArray>
|
|
17
|
+
</Lines>
|
|
18
|
+
</Piece>
|
|
19
|
+
</PolyData>
|
|
20
|
+
</VTKFile>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
OpenGeodeWeb-Back
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.12
|
|
3
|
+
# by the following command:
|
|
4
|
+
#
|
|
5
|
+
# pip-compile requirements.in
|
|
6
|
+
#
|
|
7
|
+
asgiref==3.9.1
|
|
8
|
+
# via
|
|
9
|
+
# flask
|
|
10
|
+
# opengeodeweb-back
|
|
11
|
+
blinker==1.9.0
|
|
12
|
+
# via
|
|
13
|
+
# flask
|
|
14
|
+
# opengeodeweb-back
|
|
15
|
+
click==8.2.1
|
|
16
|
+
# via
|
|
17
|
+
# flask
|
|
18
|
+
# opengeodeweb-back
|
|
19
|
+
fastjsonschema==2.16.2
|
|
20
|
+
# via opengeodeweb-back
|
|
21
|
+
flask[async]==3.0.3
|
|
22
|
+
# via
|
|
23
|
+
# flask-cors
|
|
24
|
+
# opengeodeweb-back
|
|
25
|
+
flask-cors==6.0.1
|
|
26
|
+
# via opengeodeweb-back
|
|
27
|
+
geode-common==33.9.0
|
|
28
|
+
# via
|
|
29
|
+
# geode-viewables
|
|
30
|
+
# opengeodeweb-back
|
|
31
|
+
geode-viewables==3.2.0
|
|
32
|
+
# via opengeodeweb-back
|
|
33
|
+
itsdangerous==2.2.0
|
|
34
|
+
# via
|
|
35
|
+
# flask
|
|
36
|
+
# opengeodeweb-back
|
|
37
|
+
jinja2==3.1.6
|
|
38
|
+
# via
|
|
39
|
+
# flask
|
|
40
|
+
# opengeodeweb-back
|
|
41
|
+
markupsafe==3.0.2
|
|
42
|
+
# via
|
|
43
|
+
# jinja2
|
|
44
|
+
# opengeodeweb-back
|
|
45
|
+
# werkzeug
|
|
46
|
+
opengeode-core==15.24.2
|
|
47
|
+
# via
|
|
48
|
+
# geode-common
|
|
49
|
+
# geode-viewables
|
|
50
|
+
# opengeode-geosciences
|
|
51
|
+
# opengeode-geosciencesio
|
|
52
|
+
# opengeode-inspector
|
|
53
|
+
# opengeode-io
|
|
54
|
+
# opengeodeweb-back
|
|
55
|
+
opengeode-geosciences==9.2.2
|
|
56
|
+
# via
|
|
57
|
+
# geode-viewables
|
|
58
|
+
# opengeode-geosciencesio
|
|
59
|
+
# opengeodeweb-back
|
|
60
|
+
opengeode-geosciencesio==5.7.2
|
|
61
|
+
# via opengeodeweb-back
|
|
62
|
+
opengeode-inspector==6.7.0
|
|
63
|
+
# via opengeodeweb-back
|
|
64
|
+
opengeode-io==7.3.2
|
|
65
|
+
# via
|
|
66
|
+
# geode-viewables
|
|
67
|
+
# opengeode-geosciencesio
|
|
68
|
+
# opengeodeweb-back
|
|
69
|
+
opengeodeweb-back==5.9.1
|
|
70
|
+
# via -r requirements.in
|
|
71
|
+
werkzeug==3.0.3
|
|
72
|
+
# via
|
|
73
|
+
# flask
|
|
74
|
+
# flask-cors
|
|
75
|
+
# opengeodeweb-back
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
OpenGeodeWeb-Viewer[cpu]
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#
|
|
2
|
+
# This file is autogenerated by pip-compile with Python 3.12
|
|
3
|
+
# by the following command:
|
|
4
|
+
#
|
|
5
|
+
# pip-compile --extra-index-url=https://wheels.vtk.org --pre requirements.in
|
|
6
|
+
#
|
|
7
|
+
--extra-index-url https://wheels.vtk.org
|
|
8
|
+
|
|
9
|
+
aiohappyeyeballs==2.6.1
|
|
10
|
+
# via
|
|
11
|
+
# aiohttp
|
|
12
|
+
# opengeodeweb-viewer
|
|
13
|
+
aiohttp==3.12.15
|
|
14
|
+
# via
|
|
15
|
+
# opengeodeweb-viewer
|
|
16
|
+
# wslink
|
|
17
|
+
aiosignal==1.4.0
|
|
18
|
+
# via
|
|
19
|
+
# aiohttp
|
|
20
|
+
# opengeodeweb-viewer
|
|
21
|
+
attrs==25.3.0
|
|
22
|
+
# via
|
|
23
|
+
# aiohttp
|
|
24
|
+
# opengeodeweb-viewer
|
|
25
|
+
contourpy==1.3.3
|
|
26
|
+
# via matplotlib
|
|
27
|
+
cycler==0.12.1
|
|
28
|
+
# via matplotlib
|
|
29
|
+
fastjsonschema==2.21.1
|
|
30
|
+
# via opengeodeweb-viewer
|
|
31
|
+
fonttools==4.59.2
|
|
32
|
+
# via matplotlib
|
|
33
|
+
frozenlist==1.7.0
|
|
34
|
+
# via
|
|
35
|
+
# aiohttp
|
|
36
|
+
# aiosignal
|
|
37
|
+
# opengeodeweb-viewer
|
|
38
|
+
idna==3.10
|
|
39
|
+
# via
|
|
40
|
+
# opengeodeweb-viewer
|
|
41
|
+
# yarl
|
|
42
|
+
kiwisolver==1.4.10rc0
|
|
43
|
+
# via matplotlib
|
|
44
|
+
matplotlib==3.10.6
|
|
45
|
+
# via vtk-osmesa
|
|
46
|
+
multidict==6.6.3
|
|
47
|
+
# via
|
|
48
|
+
# aiohttp
|
|
49
|
+
# opengeodeweb-viewer
|
|
50
|
+
# yarl
|
|
51
|
+
numpy==2.3.2
|
|
52
|
+
# via
|
|
53
|
+
# contourpy
|
|
54
|
+
# matplotlib
|
|
55
|
+
opengeodeweb-viewer[cpu]==1.11.0rc3
|
|
56
|
+
# via
|
|
57
|
+
# -r requirements.in
|
|
58
|
+
# opengeodeweb-viewer
|
|
59
|
+
packaging==25.0
|
|
60
|
+
# via matplotlib
|
|
61
|
+
pillow==11.3.0
|
|
62
|
+
# via matplotlib
|
|
63
|
+
propcache==0.3.2
|
|
64
|
+
# via
|
|
65
|
+
# aiohttp
|
|
66
|
+
# opengeodeweb-viewer
|
|
67
|
+
# yarl
|
|
68
|
+
pyparsing==3.2.3
|
|
69
|
+
# via matplotlib
|
|
70
|
+
python-dateutil==2.9.0.post0
|
|
71
|
+
# via matplotlib
|
|
72
|
+
six==1.17.0
|
|
73
|
+
# via python-dateutil
|
|
74
|
+
typing-extensions==4.14.1
|
|
75
|
+
# via
|
|
76
|
+
# aiosignal
|
|
77
|
+
# opengeodeweb-viewer
|
|
78
|
+
vtk-osmesa==9.3.1
|
|
79
|
+
# via opengeodeweb-viewer
|
|
80
|
+
websocket-client==1.8.0
|
|
81
|
+
# via opengeodeweb-viewer
|
|
82
|
+
wslink==1.12.4
|
|
83
|
+
# via opengeodeweb-viewer
|
|
84
|
+
yarl==1.20.1
|
|
85
|
+
# via
|
|
86
|
+
# aiohttp
|
|
87
|
+
# opengeodeweb-viewer
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import path from "path"
|
|
2
|
+
|
|
3
|
+
import { setActivePinia } from "pinia"
|
|
4
|
+
import { createTestingPinia } from "@pinia/testing"
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
afterAll,
|
|
8
|
+
afterEach,
|
|
9
|
+
beforeAll,
|
|
10
|
+
beforeEach,
|
|
11
|
+
describe,
|
|
12
|
+
expect,
|
|
13
|
+
test,
|
|
14
|
+
vi,
|
|
15
|
+
} from "vitest"
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
executable_name,
|
|
19
|
+
executable_path,
|
|
20
|
+
kill_processes,
|
|
21
|
+
run_viewer,
|
|
22
|
+
} from "@ogw_f/utils/local"
|
|
23
|
+
|
|
24
|
+
import Status from "@ogw_f/utils/status"
|
|
25
|
+
|
|
26
|
+
import * as composables from "@ogw_f/composables/viewer_call"
|
|
27
|
+
import { useDataStyleStore } from "@ogw_f/stores/data_style"
|
|
28
|
+
import { useDataBaseStore } from "@ogw_f/stores/data_base"
|
|
29
|
+
import { useViewerStore } from "@ogw_f/stores/viewer"
|
|
30
|
+
import { useInfraStore } from "@ogw_f/stores/infra"
|
|
31
|
+
|
|
32
|
+
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json"
|
|
33
|
+
import { WebSocket } from "ws"
|
|
34
|
+
|
|
35
|
+
const mesh_edges_schemas = viewer_schemas.opengeodeweb_viewer.mesh.edges
|
|
36
|
+
|
|
37
|
+
const mockLockRequest = vi.fn().mockImplementation(async (name, callback) => {
|
|
38
|
+
return callback({ name })
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
vi.stubGlobal("navigator", {
|
|
42
|
+
...navigator,
|
|
43
|
+
locks: {
|
|
44
|
+
request: mockLockRequest,
|
|
45
|
+
},
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
beforeAll(() => {
|
|
49
|
+
global.WebSocket = WebSocket
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
afterAll(() => {
|
|
53
|
+
delete global.WebSocket
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
const id = "fake_id"
|
|
57
|
+
const file_name = "edged_curve.vtp"
|
|
58
|
+
const geode_object = "EdgedCurve2D"
|
|
59
|
+
const object_type = "mesh"
|
|
60
|
+
|
|
61
|
+
beforeEach(async () => {
|
|
62
|
+
const pinia = createTestingPinia({
|
|
63
|
+
stubActions: false,
|
|
64
|
+
createSpy: vi.fn,
|
|
65
|
+
})
|
|
66
|
+
setActivePinia(pinia)
|
|
67
|
+
const dataStyleStore = useDataStyleStore()
|
|
68
|
+
const dataBaseStore = useDataBaseStore()
|
|
69
|
+
const viewerStore = useViewerStore()
|
|
70
|
+
const infraStore = useInfraStore()
|
|
71
|
+
infraStore.app_mode = appMode.appMode.BROWSER
|
|
72
|
+
|
|
73
|
+
const viewer_path = path.join(
|
|
74
|
+
executable_path(
|
|
75
|
+
path.join("tests", "integration", "microservices", "viewer"),
|
|
76
|
+
),
|
|
77
|
+
executable_name("opengeodeweb_viewer"),
|
|
78
|
+
)
|
|
79
|
+
const viewer_port = await run_viewer(viewer_path, {
|
|
80
|
+
port: 1234,
|
|
81
|
+
data_folder_path: path.join(__dirname, "..", "..", "..", "data"),
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
viewerStore.default_local_port = viewer_port
|
|
85
|
+
await viewerStore.ws_connect()
|
|
86
|
+
await dataBaseStore.registerObject(id, file_name, object_type)
|
|
87
|
+
await dataStyleStore.addDataStyle(id, geode_object, object_type)
|
|
88
|
+
expect(viewerStore.status).toBe(Status.CONNECTED)
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
describe("Mesh edges", () => {
|
|
92
|
+
afterEach(async () => {
|
|
93
|
+
await kill_processes()
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
describe("Edges visibility", () => {
|
|
97
|
+
test("test visibility true", async () => {
|
|
98
|
+
const dataStyleStore = useDataStyleStore()
|
|
99
|
+
const viewerStore = useViewerStore()
|
|
100
|
+
await dataStyleStore.setEdgesVisibility(id, true)
|
|
101
|
+
expect(dataStyleStore.edgesVisibility(id)).toBe(true)
|
|
102
|
+
expect(viewerStore.status).toBe(Status.CONNECTED)
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
describe("Edges active coloring", () => {
|
|
107
|
+
test("test coloring", async () => {
|
|
108
|
+
const dataStyleStore = useDataStyleStore()
|
|
109
|
+
const viewerStore = useViewerStore()
|
|
110
|
+
const coloringTypes = ["color"]
|
|
111
|
+
for (let i = 0; i < coloringTypes.length; i++) {
|
|
112
|
+
dataStyleStore.setEdgesActiveColoring(id, coloringTypes[i])
|
|
113
|
+
expect(dataStyleStore.edgesActiveColoring(id)).toBe(coloringTypes[i])
|
|
114
|
+
expect(viewerStore.status).toBe(Status.CONNECTED)
|
|
115
|
+
}
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
|
+
describe("Edges color", () => {
|
|
119
|
+
test("test red", async () => {
|
|
120
|
+
const dataStyleStore = useDataStyleStore()
|
|
121
|
+
const viewerStore = useViewerStore()
|
|
122
|
+
const color = { r: 255, g: 0, b: 0 }
|
|
123
|
+
const spy = vi.spyOn(composables, "viewer_call")
|
|
124
|
+
await dataStyleStore.setEdgesColor(id, color)
|
|
125
|
+
expect(spy).toHaveBeenCalledWith(
|
|
126
|
+
{
|
|
127
|
+
schema: mesh_edges_schemas.color,
|
|
128
|
+
params: { id, color },
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
response_function: expect.any(Function),
|
|
132
|
+
},
|
|
133
|
+
)
|
|
134
|
+
expect(dataStyleStore.edgesColor(id)).toStrictEqual(color)
|
|
135
|
+
expect(viewerStore.status).toBe(Status.CONNECTED)
|
|
136
|
+
})
|
|
137
|
+
})
|
|
138
|
+
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest"
|
|
2
1
|
import { registerEndpoint, mountSuspended } from "@nuxt/test-utils/runtime"
|
|
3
2
|
|
|
3
|
+
import { describe, expect, test, vi } from "vitest"
|
|
4
4
|
import { setActivePinia } from "pinia"
|
|
5
5
|
import { createTestingPinia } from "@pinia/testing"
|
|
6
6
|
import { createVuetify } from "vuetify"
|
|
@@ -19,9 +19,12 @@ const vuetify = createVuetify({
|
|
|
19
19
|
})
|
|
20
20
|
|
|
21
21
|
describe("CrsSelector.vue", () => {
|
|
22
|
-
const pinia = createTestingPinia(
|
|
22
|
+
const pinia = createTestingPinia({
|
|
23
|
+
stubActions: false,
|
|
24
|
+
createSpy: vi.fn,
|
|
25
|
+
})
|
|
23
26
|
setActivePinia(pinia)
|
|
24
|
-
const geode_store =
|
|
27
|
+
const geode_store = useGeodeStore()
|
|
25
28
|
geode_store.base_url = ""
|
|
26
29
|
|
|
27
30
|
test(`Default behavior`, async () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest"
|
|
1
|
+
import { describe, expect, test, vi } from "vitest"
|
|
2
2
|
import { registerEndpoint, mountSuspended } from "@nuxt/test-utils/runtime"
|
|
3
3
|
|
|
4
4
|
import { createVuetify } from "vuetify"
|
|
@@ -19,9 +19,12 @@ const vuetify = createVuetify({
|
|
|
19
19
|
})
|
|
20
20
|
|
|
21
21
|
describe("ExtensionSelector.vue", async () => {
|
|
22
|
-
const pinia = createTestingPinia(
|
|
22
|
+
const pinia = createTestingPinia({
|
|
23
|
+
stubActions: false,
|
|
24
|
+
createSpy: vi.fn,
|
|
25
|
+
})
|
|
23
26
|
setActivePinia(pinia)
|
|
24
|
-
const geode_store =
|
|
27
|
+
const geode_store = useGeodeStore()
|
|
25
28
|
geode_store.base_url = ""
|
|
26
29
|
|
|
27
30
|
test(`Select geode_object & extension`, async () => {
|
|
@@ -6,6 +6,7 @@ import * as directives from "vuetify/directives"
|
|
|
6
6
|
import { createTestingPinia } from "@pinia/testing"
|
|
7
7
|
|
|
8
8
|
import FeedBackErrorBanner from "@ogw_f/components/FeedBack/ErrorBanner.vue"
|
|
9
|
+
import { setActivePinia } from "pinia"
|
|
9
10
|
|
|
10
11
|
const vuetify = createVuetify({
|
|
11
12
|
components,
|
|
@@ -14,13 +15,18 @@ const vuetify = createVuetify({
|
|
|
14
15
|
|
|
15
16
|
describe("FeedBackErrorBanner.vue", async () => {
|
|
16
17
|
;(test(`Test reload`, async () => {
|
|
18
|
+
const pinia = createTestingPinia({
|
|
19
|
+
stubActions: false,
|
|
20
|
+
createSpy: vi.fn,
|
|
21
|
+
})
|
|
22
|
+
setActivePinia(pinia)
|
|
17
23
|
const wrapper = mount(FeedBackErrorBanner, {
|
|
18
24
|
global: {
|
|
19
|
-
plugins: [
|
|
25
|
+
plugins: [pinia, vuetify],
|
|
20
26
|
},
|
|
21
27
|
})
|
|
22
28
|
const reload_spy = vi.spyOn(wrapper.vm, "reload")
|
|
23
|
-
const feedback_store =
|
|
29
|
+
const feedback_store = useFeedbackStore()
|
|
24
30
|
await feedback_store.$patch({ server_error: true })
|
|
25
31
|
expect(feedback_store.server_error).toBe(true)
|
|
26
32
|
const v_btn = wrapper.findAll(".v-btn")
|
|
@@ -38,13 +44,14 @@ describe("FeedBackErrorBanner.vue", async () => {
|
|
|
38
44
|
},
|
|
39
45
|
},
|
|
40
46
|
stubActions: false,
|
|
47
|
+
createSpy: vi.fn,
|
|
41
48
|
}),
|
|
42
49
|
vuetify,
|
|
43
50
|
],
|
|
44
51
|
},
|
|
45
52
|
})
|
|
46
53
|
|
|
47
|
-
const feedback_store =
|
|
54
|
+
const feedback_store = useFeedbackStore()
|
|
48
55
|
const v_btn = wrapper.findAll(".v-btn")
|
|
49
56
|
await v_btn[1].trigger("click")
|
|
50
57
|
expect(feedback_store.server_error).toBe(false)
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// @vitest-environment nuxt
|
|
2
2
|
vi.stubGlobal("visualViewport", new EventTarget())
|
|
3
|
-
import { describe, expect, test } from "vitest"
|
|
3
|
+
import { describe, expect, test, vi } from "vitest"
|
|
4
4
|
import { mount } from "@vue/test-utils"
|
|
5
5
|
import { createVuetify } from "vuetify"
|
|
6
6
|
import * as components from "vuetify/components"
|
|
7
7
|
import * as directives from "vuetify/directives"
|
|
8
|
+
|
|
9
|
+
import { setActivePinia } from "pinia"
|
|
8
10
|
import { createTestingPinia } from "@pinia/testing"
|
|
9
11
|
|
|
10
12
|
import FeedBackSnackers from "@ogw_f/components/FeedBack/Snackers.vue"
|
|
@@ -16,6 +18,25 @@ const vuetify = createVuetify({
|
|
|
16
18
|
|
|
17
19
|
describe("FeedBackSnackers.vue", async () => {
|
|
18
20
|
test(`Test delete error`, async () => {
|
|
21
|
+
const pinia = createTestingPinia({
|
|
22
|
+
initialState: {
|
|
23
|
+
feedback: {
|
|
24
|
+
feedbacks: [
|
|
25
|
+
{
|
|
26
|
+
type: "error",
|
|
27
|
+
code: 500,
|
|
28
|
+
route: "/test",
|
|
29
|
+
name: "test message",
|
|
30
|
+
description: "test description",
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
stubActions: false,
|
|
36
|
+
createSpy: vi.fn,
|
|
37
|
+
})
|
|
38
|
+
setActivePinia(pinia)
|
|
39
|
+
const feedback_store = useFeedbackStore()
|
|
19
40
|
const wrapper = mount(
|
|
20
41
|
{
|
|
21
42
|
template: "<v-layout><FeedBackSnackers/></v-layout>",
|
|
@@ -26,29 +47,11 @@ describe("FeedBackSnackers.vue", async () => {
|
|
|
26
47
|
components: {
|
|
27
48
|
FeedBackSnackers,
|
|
28
49
|
},
|
|
29
|
-
plugins: [
|
|
30
|
-
createTestingPinia({
|
|
31
|
-
initialState: {
|
|
32
|
-
feedback: {
|
|
33
|
-
feedbacks: [
|
|
34
|
-
{
|
|
35
|
-
type: "error",
|
|
36
|
-
code: 500,
|
|
37
|
-
route: "/test",
|
|
38
|
-
name: "test message",
|
|
39
|
-
description: "test description",
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
stubActions: false,
|
|
45
|
-
}),
|
|
46
|
-
vuetify,
|
|
47
|
-
],
|
|
50
|
+
plugins: [pinia, vuetify],
|
|
48
51
|
},
|
|
49
52
|
},
|
|
50
53
|
)
|
|
51
|
-
|
|
54
|
+
|
|
52
55
|
expect(feedback_store.feedbacks.length).toBe(1)
|
|
53
56
|
const v_btn = await wrapper.findComponent(components.VBtn)
|
|
54
57
|
await v_btn.trigger("click")
|
|
@@ -23,9 +23,12 @@ const vuetify = createVuetify({
|
|
|
23
23
|
})
|
|
24
24
|
|
|
25
25
|
describe("FileSelector.vue", async () => {
|
|
26
|
-
const pinia = createTestingPinia(
|
|
26
|
+
const pinia = createTestingPinia({
|
|
27
|
+
stubActions: false,
|
|
28
|
+
createSpy: vi.fn,
|
|
29
|
+
})
|
|
27
30
|
setActivePinia(pinia)
|
|
28
|
-
const geode_store =
|
|
31
|
+
const geode_store = useGeodeStore()
|
|
29
32
|
geode_store.base_url = ""
|
|
30
33
|
|
|
31
34
|
test(`Select file`, async () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest"
|
|
1
|
+
import { describe, expect, test, vi } from "vitest"
|
|
2
2
|
import { registerEndpoint, mountSuspended } from "@nuxt/test-utils/runtime"
|
|
3
3
|
import { flushPromises } from "@vue/test-utils"
|
|
4
4
|
|
|
@@ -20,9 +20,12 @@ const vuetify = createVuetify({
|
|
|
20
20
|
})
|
|
21
21
|
|
|
22
22
|
describe("FileUploader.vue", async () => {
|
|
23
|
-
const pinia = createTestingPinia(
|
|
23
|
+
const pinia = createTestingPinia({
|
|
24
|
+
stubActions: false,
|
|
25
|
+
createSpy: vi.fn,
|
|
26
|
+
})
|
|
24
27
|
setActivePinia(pinia)
|
|
25
|
-
const geode_store =
|
|
28
|
+
const geode_store = useGeodeStore()
|
|
26
29
|
geode_store.base_url = ""
|
|
27
30
|
|
|
28
31
|
registerEndpoint(upload_file_schema.$id, {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, expect, test } from "vitest"
|
|
1
|
+
import { describe, expect, test, vi } from "vitest"
|
|
2
2
|
import { registerEndpoint, mountSuspended } from "@nuxt/test-utils/runtime"
|
|
3
3
|
import { flushPromises } from "@vue/test-utils"
|
|
4
4
|
|
|
@@ -18,9 +18,12 @@ const vuetify = createVuetify({
|
|
|
18
18
|
})
|
|
19
19
|
|
|
20
20
|
describe("Inspector/InspectionButton.vue", async () => {
|
|
21
|
-
const pinia = createTestingPinia(
|
|
21
|
+
const pinia = createTestingPinia({
|
|
22
|
+
stubActions: false,
|
|
23
|
+
createSpy: vi.fn,
|
|
24
|
+
})
|
|
22
25
|
setActivePinia(pinia)
|
|
23
|
-
const geode_store =
|
|
26
|
+
const geode_store = useGeodeStore()
|
|
24
27
|
geode_store.base_url = ""
|
|
25
28
|
|
|
26
29
|
test(`Test with issues`, async () => {
|