Skip to content

Commit 8491f0a

Browse files
update tests/components/composables/stores
1 parent e87abff commit 8491f0a

File tree

16 files changed

+125
-110
lines changed

16 files changed

+125
-110
lines changed

components/Errors/Banner.vue

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<template>
22
<v-banner
3-
v-if="server_error"
3+
v-if="feedback_store.server_error"
44
elevation="2"
5-
style="background-color: grey; z-index: 100"
5+
style="background-color: grey; z-index: 9999"
66
position="fixed"
77
>
88
<v-row>
@@ -33,7 +33,7 @@
3333
size="20"
3434
color="grey"
3535
class=".align-center"
36-
@click="errors_store.delete_server_error()"
36+
@click="feedback_store.delete_server_error()"
3737
>
3838
<v-icon icon="mdi-close" size="20" color="white" />
3939
</v-btn>
@@ -43,8 +43,7 @@
4343
</template>
4444

4545
<script setup>
46-
const errors_store = use_errors_store()
47-
const { server_error } = storeToRefs(errors_store)
46+
const feedback_store = use_feedback_store()
4847
4948
function reload() {
5049
window.location.reload()

components/Errors/Snackers.vue

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
<template>
22
<v-snackbar
3-
v-for="(error, index) in errors"
4-
:key="index"
5-
v-model="show"
3+
v-for="(feedback, index) in feedback_store.feedbacks"
4+
:key="feedback"
65
:style="{ 'margin-bottom': calc_margin(index) }"
7-
color="error"
6+
:color="feedback.type"
87
location="bottom right"
98
transition="slide-x-reverse-transition"
10-
max-width="30%"
9+
width="200px"
1110
height="20px"
11+
z-index="99999"
1212
>
1313
<v-row dense class="flex-nowrap">
1414
<v-col cols="auto">
15-
<v-tooltip location="left">
15+
<v-tooltip v-if="feedback.type === 'error'" location="left">
1616
<span>
17-
error: {{ error.code }} {{ error.name }}<br />
18-
ressource: {{ error.route }}
17+
error: {{ feedback.code }} {{ feedback.name }}<br />
18+
ressource: {{ feedback.route }}
1919
<br />
2020
</span>
2121
<template #activator="{ props }">
@@ -24,16 +24,21 @@
2424
</v-icon>
2525
</template>
2626
</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>
2732
</v-col>
2833
<v-col cols="9" class="text-no-wrap overflow-hidden">
2934
<v-tooltip location="top">
3035
<span>
31-
{{ error.description }}
36+
{{ feedback.description }}
3237
<br />
3338
</span>
3439
<template #activator="{ props }">
3540
<div v-bind="props">
36-
{{ error.description }}
41+
{{ feedback.description }}
3742
</div>
3843
</template>
3944
</v-tooltip>
@@ -44,8 +49,8 @@
4449
icon
4550
variant="flat"
4651
size="20"
47-
color="error"
48-
@click="errors_store.delete_error(index)"
52+
:color="feedback.type"
53+
@click="feedback_store.delete_feedback(index)"
4954
>
5055
<v-icon icon="mdi-close" size="20" color="white" />
5156
</v-btn>
@@ -55,10 +60,7 @@
5560
</template>
5661

5762
<script setup>
58-
const errors_store = use_errors_store()
59-
const { errors } = storeToRefs(errors_store)
60-
61-
const show = true
63+
const feedback_store = use_feedback_store()
6264
6365
function calc_margin(index) {
6466
return index * 60 + 8 + "px"

composables/api_fetch.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
import _ from "lodash"
2+
import { type } from "os"
23

34
export function api_fetch(
45
{ schema, params },
56
{ request_error_function, response_function, response_error_function } = {},
67
) {
7-
const errors_store = use_errors_store()
8+
const feedback_store = use_feedback_store()
89
const geode_store = use_geode_store()
910

1011
const body = params || {}
1112

1213
const { valid, error } = validate_schema(schema, body)
1314

1415
if (!valid) {
15-
errors_store.add_error({
16+
feedback_store.add_feedback({
17+
type: "error",
1618
code: 400,
1719
route: schema.$id,
1820
name: "Bad request",
@@ -39,7 +41,8 @@ export function api_fetch(
3941
...request_options,
4042
onRequestError({ error }) {
4143
geode_store.stop_request()
42-
errors_store.add_error({
44+
feedback_store.add_feedback({
45+
type: "error",
4346
code: error.code,
4447
route: schema.$id,
4548
name: error.message,
@@ -59,7 +62,8 @@ export function api_fetch(
5962
},
6063
onResponseError({ response }) {
6164
geode_store.stop_request()
62-
errors_store.add_error({
65+
feedback_store.add_feedback({
66+
type: "error",
6367
code: response.status,
6468
route: schema.$id,
6569
name: response._data.name,

composables/upload_file.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export async function upload_file(
22
{ route, file },
33
{ request_error_function, response_function, response_error_function } = {},
44
) {
5-
const errors_store = use_errors_store()
5+
const feedback_store = use_feedback_store()
66
const geode_store = use_geode_store()
77
if (!(file instanceof File)) {
88
throw new Error("file must be a instance of File")
@@ -22,7 +22,8 @@ export async function upload_file(
2222
...request_options,
2323
onRequestError({ error }) {
2424
geode_store.stop_request()
25-
errors_store.add_error({
25+
feedback_store.add_feedback({
26+
type: "error",
2627
code: error.code,
2728
route: route,
2829
name: error.message,
@@ -42,7 +43,8 @@ export async function upload_file(
4243
},
4344
onResponseError({ response }) {
4445
geode_store.stop_request()
45-
errors_store.add_error({
46+
feedback_store.add_feedback({
47+
type: "error",
4648
code: response.status,
4749
route: route,
4850
name: response._data.name,

composables/viewer_call.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ export function viewer_call(
22
{ schema, params = {} },
33
{ request_error_function, response_function, response_error_function } = {},
44
) {
5-
const errors_store = use_errors_store()
5+
const feedback_store = use_feedback_store()
66
const viewer_store = use_viewer_store()
77

88
const { valid, error } = validate_schema(schema, params)
99

1010
if (!valid) {
11-
errors_store.add_error({
11+
feedback_store.add_feedback({
12+
type: "error",
1213
code: 400,
1314
route: schema.route,
1415
name: "Bad request",
@@ -41,7 +42,8 @@ export function viewer_call(
4142
},
4243
)
4344
.catch((error) => {
44-
errors_store.add_error({
45+
feedback_store.add_feedback({
46+
type: "error",
4547
code: error.code,
4648
route: schema.route,
4749
name: error.message,

stores/errors.js

Lines changed: 0 additions & 17 deletions
This file was deleted.

stores/feedback.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
})

stores/geode.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ export const use_geode_store = defineStore("geode", {
2424
setInterval(() => this.do_ping(), 10 * 1000)
2525
},
2626
async do_ping() {
27-
const errors_store = use_errors_store()
27+
const feedback_store = use_feedback_store()
2828
const { data } = await useFetch(`${this.base_url}/ping`, {
2929
method: "POST",
3030
})
3131
if (data.value !== null) {
3232
this.is_running = true
3333
return
3434
} else {
35-
errors_store.$patch({ server_error: true })
35+
feedback_store.$patch({ server_error: true })
3636
return
3737
}
3838
},

stores/infra.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export const use_infra_store = defineStore("infra", {
6363
async create_backend() {
6464
const geode_store = use_geode_store()
6565
const viewer_store = use_viewer_store()
66-
const errors_store = use_errors_store()
66+
const feedback_store = use_feedback_store()
6767

6868
if (isElectron()) {
6969
await window.electronAPI.run_back(geode_store.PORT)
@@ -87,7 +87,7 @@ export const use_infra_store = defineStore("infra", {
8787
geode_store.$patch({ is_running: true })
8888
return geode_store.ping_task()
8989
} else {
90-
errors_store.server_error = true
90+
feedback_store.server_error = true
9191
}
9292
}
9393
},

test/components/Errors/ErrorsBanner.nuxt.test.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ describe("ErrorsBanner.vue", async () => {
2121
},
2222
})
2323
const reload_spy = vi.spyOn(wrapper.vm, "reload")
24-
const errors_store = use_errors_store()
25-
await errors_store.$patch({ server_error: true })
26-
expect(errors_store.server_error).toBe(true)
24+
const feedback_store = use_feedback_store()
25+
await feedback_store.$patch({ server_error: true })
26+
expect(feedback_store.server_error).toBe(true)
2727
const v_btn = wrapper.findAll(".v-btn")
2828
await v_btn[0].trigger("click")
2929

@@ -36,11 +36,11 @@ describe("ErrorsBanner.vue", async () => {
3636
},
3737
})
3838

39-
const errors_store = use_errors_store()
40-
await errors_store.$patch({ server_error: true })
41-
expect(errors_store.server_error).toBe(true)
39+
const feedback_store = use_feedback_store()
40+
await feedback_store.$patch({ server_error: true })
41+
expect(feedback_store.server_error).toBe(true)
4242
const v_btn = wrapper.findAll(".v-btn")
4343
await v_btn[1].trigger("click")
44-
expect(errors_store.server_error).toBe(false)
44+
expect(feedback_store.server_error).toBe(false)
4545
})
4646
})

0 commit comments

Comments
 (0)