2022-07-13 11:03:10 +00:00
|
|
|
import { expect, it } from 'vitest'
|
|
|
|
import UnitTestCase from '@/__tests__/UnitTestCase'
|
|
|
|
import SettingsScreen from './SettingsScreen.vue'
|
|
|
|
import { settingStore } from '@/stores'
|
|
|
|
import { fireEvent, waitFor } from '@testing-library/vue'
|
|
|
|
import router from '@/router'
|
2022-07-26 14:46:02 +00:00
|
|
|
import { DialogBoxStub } from '@/__tests__/stubs'
|
2022-07-13 11:03:10 +00:00
|
|
|
|
|
|
|
new class extends UnitTestCase {
|
|
|
|
protected test () {
|
|
|
|
it('renders', () => expect(this.render(SettingsScreen).html()).toMatchSnapshot())
|
|
|
|
|
|
|
|
it('submits the settings form', async () => {
|
|
|
|
const updateMock = this.mock(settingStore, 'update')
|
|
|
|
const goMock = this.mock(router, 'go')
|
|
|
|
|
|
|
|
settingStore.state.media_path = ''
|
|
|
|
const { getByLabelText, getByText } = this.render(SettingsScreen)
|
|
|
|
|
|
|
|
await fireEvent.update(getByLabelText('Media Path'), '/media')
|
|
|
|
await fireEvent.click(getByText('Scan'))
|
|
|
|
|
|
|
|
await waitFor(() => {
|
|
|
|
expect(updateMock).toHaveBeenCalledWith({ media_path: '/media' })
|
|
|
|
expect(goMock).toHaveBeenCalledWith('home')
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
it('confirms upon media path change', async () => {
|
|
|
|
const updateMock = this.mock(settingStore, 'update')
|
|
|
|
const goMock = this.mock(router, 'go')
|
2022-07-26 14:46:02 +00:00
|
|
|
const confirmMock = this.mock(DialogBoxStub.value, 'confirm')
|
2022-07-13 11:03:10 +00:00
|
|
|
|
|
|
|
settingStore.state.media_path = '/old'
|
|
|
|
const { getByLabelText, getByText } = this.render(SettingsScreen)
|
|
|
|
|
|
|
|
await fireEvent.update(getByLabelText('Media Path'), '/new')
|
|
|
|
await fireEvent.click(getByText('Scan'))
|
|
|
|
|
|
|
|
await waitFor(() => {
|
|
|
|
expect(updateMock).not.toHaveBeenCalled()
|
|
|
|
expect(goMock).not.toHaveBeenCalled()
|
|
|
|
expect(confirmMock).toHaveBeenCalled()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|