UI/logic updates, tests added, backend updated
This commit is contained in:
54
Seasoned.Frontend/test/IndexPage.spec.ts
Normal file
54
Seasoned.Frontend/test/IndexPage.spec.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import { describe, it, expect } from 'vitest'
|
||||
import { mount } from '@vue/test-utils'
|
||||
import { ref } from 'vue'
|
||||
import { createVuetify } from 'vuetify'
|
||||
import * as components from 'vuetify/components'
|
||||
import * as directives from 'vuetify/directives'
|
||||
import IndexPage from '@/pages/index.vue'
|
||||
|
||||
const vuetify = createVuetify({ components, directives })
|
||||
|
||||
const mockIsLoggedIn = ref(false)
|
||||
vi.stubGlobal('useState', vi.fn((key, init) => {
|
||||
if (key === 'isLoggedIn') return mockIsLoggedIn
|
||||
return ref(init ? init() : null)
|
||||
}))
|
||||
|
||||
describe('IndexPage.vue', () => {
|
||||
it('renders the brand title and subtitle', () => {
|
||||
const wrapper = mount(IndexPage, {
|
||||
global: {
|
||||
plugins: [vuetify],
|
||||
stubs: { 'nuxt-link': true }
|
||||
}
|
||||
})
|
||||
|
||||
expect(wrapper.text()).toContain('Seasoned')
|
||||
expect(wrapper.text()).toContain('A Recipe Generator')
|
||||
})
|
||||
|
||||
it('shows "Get Started" button when NOT logged in', () => {
|
||||
const wrapper = mount(IndexPage, {
|
||||
global: { plugins: [vuetify] }
|
||||
})
|
||||
|
||||
expect(wrapper.text()).toContain('Get Started')
|
||||
expect(wrapper.text()).not.toContain('Talk to Chef')
|
||||
})
|
||||
|
||||
it('hides "Get Started" and shows action buttons when logged in', async () => {
|
||||
|
||||
const wrapper = mount(IndexPage, {
|
||||
global: { plugins: [vuetify] }
|
||||
})
|
||||
|
||||
const isLoggedIn = useState('isLoggedIn')
|
||||
isLoggedIn.value = true
|
||||
|
||||
await wrapper.vm.$nextTick()
|
||||
|
||||
expect(wrapper.text()).toContain('Talk to Chef')
|
||||
expect(wrapper.text()).toContain('Go to Uploader')
|
||||
expect(wrapper.text()).not.toContain('Get Started')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user