import { mount } from '@vue/test-utils';
import { describe, it, expect } from 'vitest';
import MDivider from './MDivider.vue';

describe('MDivider component', () => {
  it('renders correctly with default props', () => {
    const wrapper = mount(MDivider);
    expect(wrapper.classes()).toContain('mc-divider');

    const innerDiv = wrapper.find('.mc-divider > div');
    expect(innerDiv.classes()).toContain('mc-divider-horizontal');
  });

  it('renders with vertical orientation', () => {
    const wrapper = mount(MDivider, {
      props: { orientation: 'vertical' },
    });
    const innerDiv = wrapper.find('.mc-divider > div');
    expect(innerDiv.classes()).toContain('mc-divider-vertical');
  });

  it('applies the correct appearance class', () => {
    const wrapper = mount(MDivider, {
      props: { appearance: 'secondary' },
    });
    const innerDiv = wrapper.find('.mc-divider > div');
    expect(innerDiv.classes()).toContain('mc-divider-horizontal--secondary');
  });

  it('applies the correct size class', () => {
    const wrapper = mount(MDivider, {
      props: { size: 'm' },
    });
    const innerDiv = wrapper.find('.mc-divider > div');
    expect(innerDiv.classes()).toContain('mc-divider-horizontal--m');
  });

  it('uses default props when none are provided', () => {
    const wrapper = mount(MDivider);
    expect(wrapper.props().orientation).toBe('horizontal');
    expect(wrapper.props().appearance).toBe('primary');
    expect(wrapper.props().size).toBe('s');
  });

  it('handles custom props correctly', () => {
    const wrapper = mount(MDivider, {
      props: {
        orientation: 'vertical',
        appearance: 'tertiary',
        size: 'l',
      },
    });
    expect(wrapper.props().orientation).toBe('vertical');
    expect(wrapper.props().appearance).toBe('tertiary');
    expect(wrapper.props().size).toBe('l');
  });
});
