Skip to content

Commit 2b06431

Browse files
authored
Merge pull request #127 from simonsobs/dev
Improve the behavior of the auto mode button
2 parents 294a4d7 + ccaf5e9 commit 2b06431

File tree

3 files changed

+65
-10
lines changed

3 files changed

+65
-10
lines changed

src/components/schedule/auto-mode/auto-mode-button/AutoModeButton.vue

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
<template>
2-
<VCardActions>
3-
<VBtn v-if="loading" loading variant="tonal" color="tertiary"> </VBtn>
4-
<ButtonError v-else-if="error" :error="error"></ButtonError>
5-
<ButtonAutoMode v-else-if="autoMode"></ButtonAutoMode>
6-
<ButtonOff v-else-if="autoMode === false"></ButtonOff>
7-
<VBtn v-else variant="tonal" color="error"> Unknown </VBtn>
8-
</VCardActions>
2+
<VBtn v-if="loading" loading variant="tonal" color="tertiary"> </VBtn>
3+
<ButtonError v-else-if="error" :error="error"></ButtonError>
4+
<ButtonAutoMode v-else-if="autoMode"></ButtonAutoMode>
5+
<ButtonOff v-else-if="autoMode === false"></ButtonOff>
6+
<VBtn v-else variant="tonal" color="error"> Unknown </VBtn>
97
</template>
108

119
<script setup lang="ts">
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { describe, it, expect, vi } from "vitest";
2+
import { ref } from "vue";
3+
import { mount } from "@vue/test-utils";
4+
import fc from "fast-check";
5+
6+
import { fcError, fcUndefinedOr } from "@/graphql/tests/arbitraries";
7+
import { onReady } from "@/utils/on-ready";
8+
9+
import AutoModeButton from "../AutoModeButton.vue";
10+
import { useAutoMode } from "../use-auto-mode";
11+
12+
vi.mock("../use-auto-mode", () => ({ useAutoMode: vi.fn() }));
13+
14+
const fcReturns = () =>
15+
fc
16+
.record({
17+
autoMode: fcUndefinedOr(fc.boolean()).map((v) => ref(v)),
18+
pulling: fc.constant(ref(false)),
19+
loading: fc.boolean().map((v) => ref(v)),
20+
error: fcUndefinedOr(fcError).map((v) => ref(v)),
21+
})
22+
.map((ret) => onReady(ret, Promise.resolve()));
23+
24+
describe("AutoModeButton", () => {
25+
it("Property test", () => {
26+
fc.assert(
27+
fc.property(fcReturns(), (ret) => {
28+
vi.mocked(useAutoMode).mockReturnValue(ret);
29+
const wrapper = mount(AutoModeButton, {
30+
global: {
31+
stubs: {
32+
ButtonOff: true,
33+
ButtonAutoMode: true,
34+
ButtonError: true,
35+
},
36+
},
37+
});
38+
39+
if (ret.loading.value) {
40+
const button = wrapper.findComponent({ name: "VBtn" });
41+
expect(button.exists()).toBe(true);
42+
expect(button.props()["loading"]).toBe(true);
43+
} else if (ret.error.value) {
44+
const button = wrapper.findComponent({ name: "ButtonError" });
45+
expect(button.exists()).toBe(true);
46+
expect(button.props("error")).toEqual(ret.error.value);
47+
} else if (ret.autoMode.value === true) {
48+
expect(wrapper.findComponent({ name: "ButtonAutoMode" }).exists()).toBe(true);
49+
} else if (ret.autoMode.value === false) {
50+
expect(wrapper.findComponent({ name: "ButtonOff" }).exists()).toBe(true);
51+
} else {
52+
expect(wrapper.html()).toContain("Unknown");
53+
}
54+
wrapper.unmount();
55+
}),
56+
);
57+
});
58+
});

src/components/schedule/auto-mode/auto-mode-button/modes/auto-mode/Button.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@ import DialogQueue from "./queue/Dialog.vue";
3232
const { mobile } = useDisplay();
3333
const menuComponent = computed(() => (mobile.value ? VBottomSheet : VMenu));
3434
35-
const { data: mode, then: then1 } = useSubscribeScheduleAutoModeMode();
36-
const { pulling, then: then2 } = useAutoMode();
37-
await Promise.all([then1(), then2()]);
35+
const { data: mode } = useSubscribeScheduleAutoModeMode();
36+
const { pulling } = useAutoMode();
3837
</script>
3938

4039
<style scoped>

0 commit comments

Comments
 (0)