Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/components/Button/Base.vue
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ defineExpose({
<template>
<button
ref="el"
class="group gap-x-1 items-center justify-center font-mono border border-border rounded-md transition-all duration-200 disabled:(opacity-40 cursor-not-allowed border-transparent)"
class="group gap-x-1 items-center justify-center font-mono border border-border rounded-md transition-all duration-200 cursor-pointer disabled:(opacity-40 cursor-not-allowed border-transparent)"
:class="{
'inline-flex': !block,
'flex': block,
Expand Down
34 changes: 34 additions & 0 deletions test/nuxt/components/ButtonBase.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { describe, expect, it } from 'vitest'
import { mountSuspended } from '@nuxt/test-utils/runtime'
import ButtonBase from '~/components/Button/Base.vue'

describe('ButtonBase', () => {
it('has cursor-pointer class on enabled button', async () => {
const wrapper = await mountSuspended(ButtonBase)
const button = wrapper.find('button')
expect(button.classes()).toContain('cursor-pointer')
})

it('has cursor-not-allowed on disabled state via class', async () => {
const wrapper = await mountSuspended(ButtonBase, {
props: { disabled: true },
})
const button = wrapper.find('button')
// The class string includes the disabled modifier with cursor-not-allowed
expect(button.attributes('class')).toContain('cursor-not-allowed')
})

it('does not have disabled attribute when not disabled', async () => {
const wrapper = await mountSuspended(ButtonBase)
const button = wrapper.find('button')
expect(button.attributes('disabled')).toBeUndefined()
})

it('has disabled attribute when disabled prop is true', async () => {
const wrapper = await mountSuspended(ButtonBase, {
props: { disabled: true },
})
const button = wrapper.find('button')
expect(button.attributes('disabled')).toBeDefined()
})
})
Loading