import { it, describe, expect } from 'vitest'
import Select from '@/components/Select.vue'

describe('Comparing Options', () => {
  const comparator = Select.methods.optionComparator.bind({
    getOptionKey: Select.props.getOptionKey.default,
  })

  it('can compare numbers', () => {
    expect(comparator(1, 2)).toBeFalsy()
    expect(comparator(1, 1)).toBeTruthy()
  })

  it('can compare strings', () => {
    expect(comparator('one', 'one')).toBeTruthy()
    expect(comparator('one', 'two')).toBeFalsy()
  })

  it('can compare objects', () => {
    //  compare ID keys
    expect(
      comparator({ label: 'halo', id: 1 }, { label: 'halo', id: 2 })
    ).toBeFalsy()
    //  compare objects
    expect(
      comparator({ label: 'halo', value: 1 }, { label: 'halo', value: 1 })
    ).toBeTruthy()
    //  compare objects with different orders
    expect(
      comparator({ value: 1, label: 'halo' }, { label: 'halo', value: 1 })
    ).toBeTruthy()
  })
})
