import { describe, it, expect, beforeEach } from 'vitest'
import { mount } from '@vue/test-utils'
import { createPinia, setActivePinia } from 'pinia'
import FeedbackSummary from '@/views/FeedbackSummary.vue'
import { useFeedbackStore } from '@/stores/feedback'

describe('FeedbackSummary', () => {
  beforeEach(() => {
    localStorage.clear()
    setActivePinia(createPinia())

    const store = useFeedbackStore()
    store.addFeedback('a1', 'SepsisWarning', 'Critical', 'useful')
    store.addFeedback('a2', 'SepsisWarning', 'Critical', 'would-act')
    store.addFeedback('a3', 'WarningHeartRate', 'Warning', 'false-positive')
  })

  it('showsAggregateStats', () => {
    const wrapper = mount(FeedbackSummary)

    expect(wrapper.text()).toContain('Total Ratings')
    expect(wrapper.text()).toContain('Useful / Would Act')
    expect(wrapper.text()).toContain('False Positive')
    expect(wrapper.text()).toContain('67%')
    expect(wrapper.text()).toContain('33%')
  })

  it('showsPerAlertTypeBreakdown', () => {
    const wrapper = mount(FeedbackSummary)

    expect(wrapper.text()).toContain('Sepsis Warning (SIRS — Legacy)')
    expect(wrapper.text()).toContain('Warning Heart Rate')
    expect(wrapper.text()).toContain('2 ratings')
    expect(wrapper.text()).toContain('1 ratings')
  })

  it('exportButtonsExist', () => {
    const wrapper = mount(FeedbackSummary)
    const buttons = wrapper.findAll('button')

    expect(buttons.some(b => b.text().includes('Export JSON'))).toBe(true)
    expect(buttons.some(b => b.text().includes('Export CSV'))).toBe(true)
  })
})
