Skip to content

Commit 7a029ac

Browse files
feat(ObjectSelector): auto select when importable with only one
1 parent 4b3feb2 commit 7a029ac

File tree

2 files changed

+43
-6
lines changed

2 files changed

+43
-6
lines changed

components/ObjectSelector.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
<template>
22
<FetchingData v-if="loading" />
33
<v-row v-else-if="Object.keys(allowed_objects).length" class="justify-left">
4-
<v-col v-for="(value, key) in allowed_objects" :key="key" cols="2" md="4">
4+
<v-col
5+
v-for="(value, key, index) in allowed_objects"
6+
:key="key"
7+
cols="3"
8+
md="4"
9+
>
510
<v-tooltip
611
:text="
712
value['is_loadable']
@@ -21,6 +26,7 @@
2126
:disabled="!value['is_loadable']"
2227
:elevation="value['is_loadable'] ? 5 : 3"
2328
>
29+
{{ index }}
2430
<v-img
2531
:src="geode_objects[key].image"
2632
cover
@@ -107,6 +113,9 @@
107113
}
108114
109115
allowed_objects.value = final_object
116+
if (Object.keys(allowed_objects.value).length == 1) {
117+
set_geode_object(Object.keys(allowed_objects.value)[0])
118+
}
110119
toggle_loading()
111120
}
112121

test/components/ObjectSelector.nuxt.test.js

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,18 @@ const vuetify = createVuetify({
2121
directives,
2222
})
2323

24-
const geode_object = "BRep"
2524
describe("ObjectSelector.vue", async () => {
2625
const pinia = createTestingPinia()
2726
setActivePinia(pinia)
2827
const geode_store = use_geode_store()
2928
geode_store.base_url = ""
3029

31-
test(`BRep`, async () => {
30+
test(`test loadable with one class`, async () => {
3231
var response = {
3332
allowed_objects: {},
3433
}
35-
response["allowed_objects"][geode_object] = { is_loadable: true }
34+
const geode_object_1 = "BRep"
35+
response["allowed_objects"][geode_object_1] = { is_loadable: true }
3636
registerEndpoint(allowed_objects.$id, {
3737
method: allowed_objects.methods[0],
3838
handler: () => response,
@@ -45,12 +45,40 @@ describe("ObjectSelector.vue", async () => {
4545
})
4646
const v_card = wrapper.findComponent(components.VCard)
4747
const v_img = v_card.findComponent(components.VImg)
48-
expect(v_img.vm.src).toContain(`${geode_object}.svg`)
48+
expect(v_img.vm.src).toContain(`${geode_object_1}.svg`)
49+
expect(wrapper.emitted()).toHaveProperty("update_values")
50+
expect(wrapper.emitted().update_values).toHaveLength(1)
51+
expect(wrapper.emitted().update_values[0][0]).toEqual({
52+
input_geode_object: geode_object_1,
53+
})
54+
})
55+
56+
test(`test loabable with multiple classes`, async () => {
57+
var response = {
58+
allowed_objects: {},
59+
}
60+
const geode_object_1 = "BRep"
61+
const geode_object_2 = "EdgedCurve3D"
62+
response["allowed_objects"][geode_object_1] = { is_loadable: true }
63+
response["allowed_objects"][geode_object_2] = { is_loadable: true }
64+
registerEndpoint(allowed_objects.$id, {
65+
method: allowed_objects.methods[0],
66+
handler: () => response,
67+
})
68+
const wrapper = await mountSuspended(ObjectSelector, {
69+
global: {
70+
plugins: [vuetify, pinia],
71+
},
72+
props: { filenames: ["test.toto"], supported_feature: "test" },
73+
})
74+
const v_card = wrapper.findComponent(components.VCard)
75+
const v_img = v_card.findComponent(components.VImg)
76+
expect(v_img.vm.src).toContain(`${geode_object_1}.svg`)
4977
await v_card.trigger("click")
5078
expect(wrapper.emitted()).toHaveProperty("update_values")
5179
expect(wrapper.emitted().update_values).toHaveLength(1)
5280
expect(wrapper.emitted().update_values[0][0]).toEqual({
53-
input_geode_object: geode_object,
81+
input_geode_object: geode_object_1,
5482
})
5583
})
5684
})

0 commit comments

Comments
 (0)