import { describe, expect, it, beforeAll, beforeEach } from 'vitest';
import { createWrapper } from 'app/test/vitest/helper';
import VnTable from 'src/components/VnTable/VnTable.vue';

describe('VnTable', () => {
    let wrapper;
    let vm;

    beforeAll(() => {
        wrapper = createWrapper(VnTable, {
            propsData: {
                columns: [],
            },
        });
        vm = wrapper.vm;
    });

    beforeEach(() => (vm.selected = []));

    describe('handleSelection()', () => {
        const rows = [{ $index: 0 }, { $index: 1 }, { $index: 2 }];
        const selectedRows = [{ $index: 1 }];
        it('should add rows to selected when shift key is pressed and rows are added except last one', () => {
            vm.handleSelection(
                { evt: { shiftKey: true }, added: true, rows: selectedRows },
                rows
            );
            expect(vm.selected).toEqual([{ $index: 0 }]);
        });

        it('should not add rows to selected when shift key is not pressed', () => {
            vm.handleSelection(
                { evt: { shiftKey: false }, added: true, rows: selectedRows },
                rows
            );
            expect(vm.selected).toEqual([]);
        });

        it('should not add rows to selected when rows are not added', () => {
            vm.handleSelection(
                { evt: { shiftKey: true }, added: false, rows: selectedRows },
                rows
            );
            expect(vm.selected).toEqual([]);
        });
    });
});