@geode/opengeodeweb-front 8.2.0-rc.1 → 9.0.0-rc.1
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/components/{Errors/Banner.vue → FeedBack/ErrorBanner.vue} +4 -5
- package/components/{Errors → FeedBack}/Snackers.vue +17 -14
- package/composables/api_fetch.js +7 -4
- package/composables/upload_file.js +5 -3
- package/composables/viewer_call.js +5 -3
- package/package.json +1 -1
- package/stores/feedback.js +17 -0
- package/stores/geode.js +2 -2
- package/stores/infra.js +2 -2
- package/test/components/{Errors → FeedBack}/ErrorsBanner.nuxt.test.js +11 -11
- package/test/components/{Errors/ErrorsSnackers.nuxt.test.js → FeedBack/Snackers.nuxt.test.js} +12 -8
- package/test/composables/api_fetch.nuxt.test.js +6 -6
- package/test/composables/upload_file.nuxt.test.js +3 -3
- package/test/stores/Feedback.test.js +37 -0
- package/test/stores/Geode.test.js +2 -2
- package/stores/errors.js +0 -17
- package/test/stores/Errors.test.js +0 -36
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-banner
|
|
3
|
-
v-if="server_error"
|
|
3
|
+
v-if="feedback_store.server_error"
|
|
4
4
|
elevation="2"
|
|
5
|
-
style="background-color: grey; z-index:
|
|
5
|
+
style="background-color: grey; z-index: 9999"
|
|
6
6
|
position="fixed"
|
|
7
7
|
>
|
|
8
8
|
<v-row>
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
size="20"
|
|
34
34
|
color="grey"
|
|
35
35
|
class=".align-center"
|
|
36
|
-
@click="
|
|
36
|
+
@click="feedback_store.delete_server_error()"
|
|
37
37
|
>
|
|
38
38
|
<v-icon icon="mdi-close" size="20" color="white" />
|
|
39
39
|
</v-btn>
|
|
@@ -43,8 +43,7 @@
|
|
|
43
43
|
</template>
|
|
44
44
|
|
|
45
45
|
<script setup>
|
|
46
|
-
const
|
|
47
|
-
const { server_error } = storeToRefs(errors_store)
|
|
46
|
+
const feedback_store = use_feedback_store()
|
|
48
47
|
|
|
49
48
|
function reload() {
|
|
50
49
|
window.location.reload()
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-snackbar
|
|
3
|
-
v-for="(
|
|
4
|
-
:key="
|
|
3
|
+
v-for="(feedback, index) in feedback_store.feedbacks"
|
|
4
|
+
:key="feedback"
|
|
5
5
|
v-model="show"
|
|
6
6
|
:style="{ 'margin-bottom': calc_margin(index) }"
|
|
7
|
-
color="
|
|
7
|
+
:color="feedback.type"
|
|
8
8
|
location="bottom right"
|
|
9
9
|
transition="slide-x-reverse-transition"
|
|
10
|
-
max-width="
|
|
10
|
+
max-width="200px"
|
|
11
11
|
height="20px"
|
|
12
12
|
>
|
|
13
13
|
<v-row dense class="flex-nowrap">
|
|
14
14
|
<v-col cols="auto">
|
|
15
|
-
<v-tooltip location="left">
|
|
15
|
+
<v-tooltip v-if="feedback.type === 'error'" location="left">
|
|
16
16
|
<span>
|
|
17
|
-
error: {{
|
|
18
|
-
ressource: {{
|
|
17
|
+
error: {{ feedback.code }} {{ feedback.name }}<br />
|
|
18
|
+
ressource: {{ feedback.route }}
|
|
19
19
|
<br />
|
|
20
20
|
</span>
|
|
21
21
|
<template #activator="{ props }">
|
|
@@ -24,16 +24,21 @@
|
|
|
24
24
|
</v-icon>
|
|
25
25
|
</template>
|
|
26
26
|
</v-tooltip>
|
|
27
|
+
<v-tooltip v-else-if="feedback.type === 'success'" location="left">
|
|
28
|
+
<v-icon color="white" class="justify-right">
|
|
29
|
+
mdi-check-circle-outline
|
|
30
|
+
</v-icon>
|
|
31
|
+
</v-tooltip>
|
|
27
32
|
</v-col>
|
|
28
33
|
<v-col cols="9" class="text-no-wrap overflow-hidden">
|
|
29
34
|
<v-tooltip location="top">
|
|
30
35
|
<span>
|
|
31
|
-
{{
|
|
36
|
+
{{ feedback.description }}
|
|
32
37
|
<br />
|
|
33
38
|
</span>
|
|
34
39
|
<template #activator="{ props }">
|
|
35
40
|
<div v-bind="props">
|
|
36
|
-
{{
|
|
41
|
+
{{ feedback.description }}
|
|
37
42
|
</div>
|
|
38
43
|
</template>
|
|
39
44
|
</v-tooltip>
|
|
@@ -44,8 +49,8 @@
|
|
|
44
49
|
icon
|
|
45
50
|
variant="flat"
|
|
46
51
|
size="20"
|
|
47
|
-
color="
|
|
48
|
-
@click="
|
|
52
|
+
:color="feedback.type"
|
|
53
|
+
@click="feedback_store.delete_feedback(index)"
|
|
49
54
|
>
|
|
50
55
|
<v-icon icon="mdi-close" size="20" color="white" />
|
|
51
56
|
</v-btn>
|
|
@@ -55,9 +60,7 @@
|
|
|
55
60
|
</template>
|
|
56
61
|
|
|
57
62
|
<script setup>
|
|
58
|
-
const
|
|
59
|
-
const { errors } = storeToRefs(errors_store)
|
|
60
|
-
|
|
63
|
+
const feedback_store = use_feedback_store()
|
|
61
64
|
const show = true
|
|
62
65
|
|
|
63
66
|
function calc_margin(index) {
|
package/composables/api_fetch.js
CHANGED
|
@@ -4,7 +4,7 @@ export function api_fetch(
|
|
|
4
4
|
{ schema, params },
|
|
5
5
|
{ request_error_function, response_function, response_error_function } = {},
|
|
6
6
|
) {
|
|
7
|
-
const
|
|
7
|
+
const feedback_store = use_feedback_store()
|
|
8
8
|
const geode_store = use_geode_store()
|
|
9
9
|
|
|
10
10
|
const body = params || {}
|
|
@@ -12,7 +12,8 @@ export function api_fetch(
|
|
|
12
12
|
const { valid, error } = validate_schema(schema, body)
|
|
13
13
|
|
|
14
14
|
if (!valid) {
|
|
15
|
-
|
|
15
|
+
feedback_store.add_feedback({
|
|
16
|
+
type: "error",
|
|
16
17
|
code: 400,
|
|
17
18
|
route: schema.$id,
|
|
18
19
|
name: "Bad request",
|
|
@@ -39,7 +40,8 @@ export function api_fetch(
|
|
|
39
40
|
...request_options,
|
|
40
41
|
onRequestError({ error }) {
|
|
41
42
|
geode_store.stop_request()
|
|
42
|
-
|
|
43
|
+
feedback_store.add_feedback({
|
|
44
|
+
type: "error",
|
|
43
45
|
code: error.code,
|
|
44
46
|
route: schema.$id,
|
|
45
47
|
name: error.message,
|
|
@@ -59,7 +61,8 @@ export function api_fetch(
|
|
|
59
61
|
},
|
|
60
62
|
onResponseError({ response }) {
|
|
61
63
|
geode_store.stop_request()
|
|
62
|
-
|
|
64
|
+
feedback_store.add_feedback({
|
|
65
|
+
type: "error",
|
|
63
66
|
code: response.status,
|
|
64
67
|
route: schema.$id,
|
|
65
68
|
name: response._data.name,
|
|
@@ -2,7 +2,7 @@ export async function upload_file(
|
|
|
2
2
|
{ route, file },
|
|
3
3
|
{ request_error_function, response_function, response_error_function } = {},
|
|
4
4
|
) {
|
|
5
|
-
const
|
|
5
|
+
const feedback_store = use_feedback_store()
|
|
6
6
|
const geode_store = use_geode_store()
|
|
7
7
|
if (!(file instanceof File)) {
|
|
8
8
|
throw new Error("file must be a instance of File")
|
|
@@ -22,7 +22,8 @@ export async function upload_file(
|
|
|
22
22
|
...request_options,
|
|
23
23
|
onRequestError({ error }) {
|
|
24
24
|
geode_store.stop_request()
|
|
25
|
-
|
|
25
|
+
feedback_store.add_feedback({
|
|
26
|
+
type: "error",
|
|
26
27
|
code: error.code,
|
|
27
28
|
route: route,
|
|
28
29
|
name: error.message,
|
|
@@ -42,7 +43,8 @@ export async function upload_file(
|
|
|
42
43
|
},
|
|
43
44
|
onResponseError({ response }) {
|
|
44
45
|
geode_store.stop_request()
|
|
45
|
-
|
|
46
|
+
feedback_store.add_feedback({
|
|
47
|
+
type: "error",
|
|
46
48
|
code: response.status,
|
|
47
49
|
route: route,
|
|
48
50
|
name: response._data.name,
|
|
@@ -2,13 +2,14 @@ export function viewer_call(
|
|
|
2
2
|
{ schema, params = {} },
|
|
3
3
|
{ request_error_function, response_function, response_error_function } = {},
|
|
4
4
|
) {
|
|
5
|
-
const
|
|
5
|
+
const feedback_store = use_feedback_store()
|
|
6
6
|
const viewer_store = use_viewer_store()
|
|
7
7
|
|
|
8
8
|
const { valid, error } = validate_schema(schema, params)
|
|
9
9
|
|
|
10
10
|
if (!valid) {
|
|
11
|
-
|
|
11
|
+
feedback_store.add_feedback({
|
|
12
|
+
type: "error",
|
|
12
13
|
code: 400,
|
|
13
14
|
route: schema.route,
|
|
14
15
|
name: "Bad request",
|
|
@@ -41,7 +42,8 @@ export function viewer_call(
|
|
|
41
42
|
},
|
|
42
43
|
)
|
|
43
44
|
.catch((error) => {
|
|
44
|
-
|
|
45
|
+
feedback_store.add_feedback({
|
|
46
|
+
type: "error",
|
|
45
47
|
code: error.code,
|
|
46
48
|
route: schema.route,
|
|
47
49
|
name: error.message,
|
package/package.json
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const use_feedback_store = defineStore("feedback", {
|
|
2
|
+
state: () => ({
|
|
3
|
+
feedbacks: [],
|
|
4
|
+
server_error: false,
|
|
5
|
+
}),
|
|
6
|
+
actions: {
|
|
7
|
+
add_feedback(feedback) {
|
|
8
|
+
this.feedbacks.push(feedback)
|
|
9
|
+
},
|
|
10
|
+
delete_feedback(feedback_index) {
|
|
11
|
+
this.feedbacks.splice(feedback_index, 1)
|
|
12
|
+
},
|
|
13
|
+
delete_server_error() {
|
|
14
|
+
this.server_error = false
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
})
|
package/stores/geode.js
CHANGED
|
@@ -24,7 +24,7 @@ export const use_geode_store = defineStore("geode", {
|
|
|
24
24
|
setInterval(() => this.do_ping(), 10 * 1000)
|
|
25
25
|
},
|
|
26
26
|
async do_ping() {
|
|
27
|
-
const
|
|
27
|
+
const feedback_store = use_feedback_store()
|
|
28
28
|
const { data } = await useFetch(`${this.base_url}/ping`, {
|
|
29
29
|
method: "POST",
|
|
30
30
|
})
|
|
@@ -32,7 +32,7 @@ export const use_geode_store = defineStore("geode", {
|
|
|
32
32
|
this.is_running = true
|
|
33
33
|
return
|
|
34
34
|
} else {
|
|
35
|
-
|
|
35
|
+
feedback_store.$patch({ server_error: true })
|
|
36
36
|
return
|
|
37
37
|
}
|
|
38
38
|
},
|
package/stores/infra.js
CHANGED
|
@@ -63,7 +63,7 @@ export const use_infra_store = defineStore("infra", {
|
|
|
63
63
|
async create_backend() {
|
|
64
64
|
const geode_store = use_geode_store()
|
|
65
65
|
const viewer_store = use_viewer_store()
|
|
66
|
-
const
|
|
66
|
+
const feedback_store = use_feedback_store()
|
|
67
67
|
|
|
68
68
|
if (isElectron()) {
|
|
69
69
|
await window.electronAPI.run_back(geode_store.PORT)
|
|
@@ -87,7 +87,7 @@ export const use_infra_store = defineStore("infra", {
|
|
|
87
87
|
geode_store.$patch({ is_running: true })
|
|
88
88
|
return geode_store.ping_task()
|
|
89
89
|
} else {
|
|
90
|
-
|
|
90
|
+
feedback_store.server_error = true
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
},
|
|
@@ -6,41 +6,41 @@ import { createVuetify } from "vuetify"
|
|
|
6
6
|
import * as components from "vuetify/components"
|
|
7
7
|
import * as directives from "vuetify/directives"
|
|
8
8
|
|
|
9
|
-
import
|
|
9
|
+
import FeedBackErrorBanner from "@/components/FeedBack/ErrorBanner.vue"
|
|
10
10
|
|
|
11
11
|
const vuetify = createVuetify({
|
|
12
12
|
components,
|
|
13
13
|
directives,
|
|
14
14
|
})
|
|
15
15
|
|
|
16
|
-
describe("
|
|
16
|
+
describe("FeedBackErrorBanner.vue", async () => {
|
|
17
17
|
test(`Test reload`, async () => {
|
|
18
|
-
const wrapper = mount(
|
|
18
|
+
const wrapper = mount(FeedBackErrorBanner, {
|
|
19
19
|
global: {
|
|
20
20
|
plugins: [vuetify],
|
|
21
21
|
},
|
|
22
22
|
})
|
|
23
23
|
const reload_spy = vi.spyOn(wrapper.vm, "reload")
|
|
24
|
-
const
|
|
25
|
-
await
|
|
26
|
-
expect(
|
|
24
|
+
const feedback_store = use_feedback_store()
|
|
25
|
+
await feedback_store.$patch({ server_error: true })
|
|
26
|
+
expect(feedback_store.server_error).toBe(true)
|
|
27
27
|
const v_btn = wrapper.findAll(".v-btn")
|
|
28
28
|
await v_btn[0].trigger("click")
|
|
29
29
|
|
|
30
30
|
expect(reload_spy).toHaveBeenCalledTimes(1)
|
|
31
31
|
}),
|
|
32
32
|
test(`Test delete error`, async () => {
|
|
33
|
-
const wrapper = mount(
|
|
33
|
+
const wrapper = mount(FeedBackErrorBanner, {
|
|
34
34
|
global: {
|
|
35
35
|
plugins: [vuetify],
|
|
36
36
|
},
|
|
37
37
|
})
|
|
38
38
|
|
|
39
|
-
const
|
|
40
|
-
await
|
|
41
|
-
expect(
|
|
39
|
+
const feedback_store = use_feedback_store()
|
|
40
|
+
await feedback_store.$patch({ server_error: true })
|
|
41
|
+
expect(feedback_store.server_error).toBe(true)
|
|
42
42
|
const v_btn = wrapper.findAll(".v-btn")
|
|
43
43
|
await v_btn[1].trigger("click")
|
|
44
|
-
expect(
|
|
44
|
+
expect(feedback_store.server_error).toBe(false)
|
|
45
45
|
})
|
|
46
46
|
})
|
package/test/components/{Errors/ErrorsSnackers.nuxt.test.js → FeedBack/Snackers.nuxt.test.js}
RENAMED
|
@@ -6,41 +6,45 @@ import { createVuetify } from "vuetify"
|
|
|
6
6
|
import * as components from "vuetify/components"
|
|
7
7
|
import * as directives from "vuetify/directives"
|
|
8
8
|
|
|
9
|
-
import
|
|
9
|
+
import FeedBackSnackers from "@/components/FeedBack/Snackers.vue"
|
|
10
10
|
|
|
11
11
|
const vuetify = createVuetify({
|
|
12
12
|
components,
|
|
13
13
|
directives,
|
|
14
14
|
})
|
|
15
15
|
|
|
16
|
-
describe("
|
|
16
|
+
describe("FeedBackSnackers.vue", async () => {
|
|
17
17
|
test(`Test delete error`, async () => {
|
|
18
18
|
const wrapper = mount(
|
|
19
19
|
{
|
|
20
|
-
template: "<v-layout><
|
|
20
|
+
template: "<v-layout><FeedBackSnackers/></v-layout>",
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
props: {},
|
|
24
24
|
global: {
|
|
25
25
|
components: {
|
|
26
|
-
|
|
26
|
+
FeedBackSnackers,
|
|
27
27
|
},
|
|
28
28
|
plugins: [vuetify],
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
31
|
)
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
console.log("wrapper", wrapper)
|
|
34
|
+
|
|
35
|
+
const feedback_store = use_feedback_store()
|
|
34
36
|
const error = {
|
|
37
|
+
type: "error",
|
|
35
38
|
code: 404,
|
|
36
39
|
route: "/test",
|
|
37
40
|
name: "Test message",
|
|
38
41
|
description: "Test desription",
|
|
39
42
|
}
|
|
40
|
-
await
|
|
41
|
-
expect(
|
|
43
|
+
await feedback_store.add_feedback(error)
|
|
44
|
+
expect(feedback_store.feedbacks.length).toBe(1)
|
|
42
45
|
const v_btn = await wrapper.findComponent(components.VBtn)
|
|
46
|
+
console.log("v_btn", v_btn)
|
|
43
47
|
await v_btn.trigger("click")
|
|
44
|
-
expect(
|
|
48
|
+
expect(feedback_store.feedbacks.length).toBe(0)
|
|
45
49
|
})
|
|
46
50
|
})
|
|
@@ -2,7 +2,7 @@ import { describe, expect, test, beforeEach } from "vitest"
|
|
|
2
2
|
import { registerEndpoint } from "@nuxt/test-utils/runtime"
|
|
3
3
|
|
|
4
4
|
describe("api_fetch.js", () => {
|
|
5
|
-
const
|
|
5
|
+
const feedback_store = use_feedback_store()
|
|
6
6
|
|
|
7
7
|
const schema = {
|
|
8
8
|
$id: "/test",
|
|
@@ -19,7 +19,7 @@ describe("api_fetch.js", () => {
|
|
|
19
19
|
var params
|
|
20
20
|
|
|
21
21
|
beforeEach(async () => {
|
|
22
|
-
await
|
|
22
|
+
await feedback_store.$patch({ feedbacks: [] })
|
|
23
23
|
})
|
|
24
24
|
|
|
25
25
|
test("Ajv wrong params", async () => {
|
|
@@ -35,8 +35,8 @@ describe("api_fetch.js", () => {
|
|
|
35
35
|
"/test: data must have required property 'test'",
|
|
36
36
|
)
|
|
37
37
|
}
|
|
38
|
-
expect(
|
|
39
|
-
expect(
|
|
38
|
+
expect(feedback_store.feedbacks.length).toBe(1)
|
|
39
|
+
expect(feedback_store.feedbacks[0].code).toBe(400)
|
|
40
40
|
})
|
|
41
41
|
|
|
42
42
|
test("onResponse", async () => {
|
|
@@ -55,7 +55,7 @@ describe("api_fetch.js", () => {
|
|
|
55
55
|
},
|
|
56
56
|
},
|
|
57
57
|
)
|
|
58
|
-
expect(
|
|
58
|
+
expect(feedback_store.feedbacks.length).toBe(0)
|
|
59
59
|
expect(response_value).toBe("toto")
|
|
60
60
|
}
|
|
61
61
|
})
|
|
@@ -83,7 +83,7 @@ describe("api_fetch.js", () => {
|
|
|
83
83
|
},
|
|
84
84
|
},
|
|
85
85
|
)
|
|
86
|
-
expect(
|
|
86
|
+
expect(feedback_store.feedbacks.length).toBe(1)
|
|
87
87
|
expect(response_error_value).toBe("error")
|
|
88
88
|
})
|
|
89
89
|
})
|
|
@@ -5,9 +5,9 @@ import schemas from "@geode/opengeodeweb-back/schemas.json"
|
|
|
5
5
|
const schema = schemas.opengeodeweb_back.upload_file
|
|
6
6
|
|
|
7
7
|
describe("upload_file.js", () => {
|
|
8
|
-
const
|
|
8
|
+
const feedback_store = use_feedback_store()
|
|
9
9
|
beforeEach(async () => {
|
|
10
|
-
await
|
|
10
|
+
await feedback_store.$patch({ errors: [] })
|
|
11
11
|
})
|
|
12
12
|
|
|
13
13
|
test("Throw error", async () => {
|
|
@@ -33,7 +33,7 @@ describe("upload_file.js", () => {
|
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
35
|
)
|
|
36
|
-
expect(
|
|
36
|
+
expect(feedback_store.feedbacks.length).toBe(0)
|
|
37
37
|
expect(response_value).toBe("ok")
|
|
38
38
|
})
|
|
39
39
|
})
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { setActivePinia, createPinia } from "pinia"
|
|
2
|
+
import { use_feedback_store } from "@/stores/feedback"
|
|
3
|
+
import { describe, it, expect, beforeEach } from "vitest"
|
|
4
|
+
|
|
5
|
+
describe("Feedback store", () => {
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
setActivePinia(createPinia())
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
it("add_feedback", () => {
|
|
11
|
+
const feedback_store = use_feedback_store()
|
|
12
|
+
expect(feedback_store.feedbacks.length).toBe(0)
|
|
13
|
+
feedback_store.add_feedback({
|
|
14
|
+
type: "error",
|
|
15
|
+
code: 500,
|
|
16
|
+
route: "/test",
|
|
17
|
+
name: "test message",
|
|
18
|
+
description: "test description",
|
|
19
|
+
})
|
|
20
|
+
expect(feedback_store.feedbacks.length).toBe(1)
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it("delete_feedback", () => {
|
|
24
|
+
const feedback_store = use_feedback_store()
|
|
25
|
+
expect(feedback_store.feedbacks.length).toBe(0)
|
|
26
|
+
feedback_store.delete_feedback(0)
|
|
27
|
+
expect(feedback_store.feedbacks.length).toBe(0)
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
it("delete_server_error", () => {
|
|
31
|
+
const feedback_store = use_feedback_store()
|
|
32
|
+
feedback_store.$patch({ server_error: true })
|
|
33
|
+
expect(feedback_store.server_error).toBe(true)
|
|
34
|
+
feedback_store.delete_server_error()
|
|
35
|
+
expect(feedback_store.server_error).toBe(false)
|
|
36
|
+
})
|
|
37
|
+
})
|
|
@@ -28,11 +28,11 @@ describe("Geode Store", () => {
|
|
|
28
28
|
|
|
29
29
|
test("do_ping", async () => {
|
|
30
30
|
const geode_store = use_geode_store()
|
|
31
|
-
const
|
|
31
|
+
const feedback_store = use_feedback_store()
|
|
32
32
|
await geode_store.do_ping()
|
|
33
33
|
|
|
34
34
|
expect(geode_store.is_running).toBe(false)
|
|
35
|
-
expect(
|
|
35
|
+
expect(feedback_store.server_error).toBe(true)
|
|
36
36
|
|
|
37
37
|
registerEndpoint("/ping", {
|
|
38
38
|
method: "POST",
|
package/stores/errors.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export const use_errors_store = defineStore("errors", {
|
|
2
|
-
state: () => ({
|
|
3
|
-
errors: [],
|
|
4
|
-
server_error: false,
|
|
5
|
-
}),
|
|
6
|
-
actions: {
|
|
7
|
-
add_error(error_object) {
|
|
8
|
-
this.errors.push(error_object)
|
|
9
|
-
},
|
|
10
|
-
delete_error(error_index) {
|
|
11
|
-
this.errors.splice(error_index, 1)
|
|
12
|
-
},
|
|
13
|
-
delete_server_error() {
|
|
14
|
-
this.server_error = false
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
})
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { setActivePinia, createPinia } from "pinia"
|
|
2
|
-
import { use_errors_store } from "@/stores/errors"
|
|
3
|
-
import { describe, it, expect, beforeEach } from "vitest"
|
|
4
|
-
|
|
5
|
-
describe("Errors Store", () => {
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
setActivePinia(createPinia())
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
it("add_error", () => {
|
|
11
|
-
const errors_store = use_errors_store()
|
|
12
|
-
expect(errors_store.errors.length).toBe(0)
|
|
13
|
-
errors_store.add_error({
|
|
14
|
-
code: 500,
|
|
15
|
-
route: "/test",
|
|
16
|
-
name: "test message",
|
|
17
|
-
description: "test description",
|
|
18
|
-
})
|
|
19
|
-
expect(errors_store.errors.length).toBe(1)
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
it("delete_error", () => {
|
|
23
|
-
const errors_store = use_errors_store()
|
|
24
|
-
expect(errors_store.errors.length).toBe(0)
|
|
25
|
-
errors_store.delete_error(0)
|
|
26
|
-
expect(errors_store.errors.length).toBe(0)
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
it("delete_server_error", () => {
|
|
30
|
-
const errors_store = use_errors_store()
|
|
31
|
-
errors_store.$patch({ server_error: true })
|
|
32
|
-
expect(errors_store.server_error).toBe(true)
|
|
33
|
-
errors_store.delete_server_error()
|
|
34
|
-
expect(errors_store.server_error).toBe(false)
|
|
35
|
-
})
|
|
36
|
-
})
|