import { shallowMount } from '@vue/test-utils';
import radio from '@/ux-components/radio/radio.vue';

describe('radio.vue', () => {
    it('Should return group name', async () => {
    // Act
        const wrapper = shallowMount(radio, {
            propsData: {
                groupName: 'radio-button-test'
            }
        });

        // Assert
        const input = wrapper.find('input');

        // Expect
        expect(input.attributes().name).toEqual('radio-button-test');
    });

    it('Should return checkbox id', async () => {
    // Act
        const wrapper = shallowMount(radio, {
            propsData: {
                buttonID: 'Radio ID'
            }
        });

        // Assert
        const input = wrapper.find('input');

        // Expect
        expect(input.attributes().id).toEqual('Radio ID');
    });

    it('Should return label text', async () => {
    // Act
        const wrapper = shallowMount(radio, {
            propsData: {
                buttonLabel: 'label text'
            }
        });

        // Assert
        const paragraph = wrapper.find('p');

        expect(paragraph.text()).toEqual('label text');
    });

    it('Should return label text', async () => {
    // Act
        const wrapper = shallowMount(radio, {
            propsData: {
                screenReaderOnlyText: 'screenreader text'
            }
        });

        // Assert
        const paragraph = wrapper.find('span');

        expect(paragraph.text()).toEqual('screenreader text');
    });

    it('Should emit button value on click', async () => {
    // Act
        const wrapper = shallowMount(radio, {
            global: {
                mocks: {
                    $route: { query: { issPage: 'page-name' } }
                }
            },
            propsData: {
                buttonLabel: 'Windshield',
                value: 'List Card Checkbox',
                buttonID: 'List Card Checkbox',
                groupID: 'radio-demo-1',
                groupName: 'radio 1',
                isRequired: true,
                isWide: false,
                modelValue: ['List Card Checkbox']
            }
        });
        wrapper.vm.handleCheckChange();
        // Assert
        expect(wrapper.emitted().isCheckedChanged[0])
            .toEqual([{ buttonID: 'List Card Checkbox', value: 'List Card Checkbox', checkValue: false }]);
    });

    it('Should set checkValue data if selectedButtonIDs has value(s)', async () => {
    // Act
        const wrapper = shallowMount(radio, {
            global: {
                mocks: {
                    $route: { query: { issPage: 'page-name' } }
                }
            },
            propsData: {
                buttonLabel: 'Windshield',
                buttonID: 'List Card Checkbox',
                groupID: 'radio-demo-1',
                groupName: 'radio 1',
                buttonImage: 'windshield-damage.svg',
                isRequired: true,
                modelValue: ['List Card Checkbox'],
                value: 'Car-Front',
                selectedValues: 'Car-Front'
            }
        });
        // Assert
        expect(wrapper.componentVM.checkValue).toEqual(true);
    });
});
