import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest';
import { createWrapper, axios } from 'app/test/vitest/helper';
import TicketBoxing from 'pages/Ticket/Card/TicketBoxing.vue';

// #4836 - Investigate how to test q-drawer outside
// q-layout or how to teleport q-drawer inside
describe('TicketBoxing', () => {
    let vm;
    beforeAll(() => {
        vm = createWrapper(TicketBoxing).vm;
    });

    afterEach(() => {
        vi.clearAllMocks();
    });

    describe('getVideoList()', () => {
        it('should when response videoList use to list', async () => {
            const expeditionId = 1;
            const timed = {
                min: 1,
                max: 2,
            };
            const videoList = ['2022-01-01T01-01-00.mp4', '2022-02-02T02-02-00.mp4', '2022-03-03T03-03-00.mp4'];

            vi.spyOn(axios, 'get').mockResolvedValue({ data: videoList });
            vi.spyOn(vm.quasar, 'notify');

            await vm.getVideoList(expeditionId, timed);

            expect(vm.videoList.length).toEqual(videoList.length);
            expect(vm.slide).toEqual(videoList.reverse()[0]);
        });

        it('should if not have video show notify', async () => {
            const expeditionId = 1;
            const timed = {
                min: 1,
                max: 2,
            };

            vi.spyOn(axios, 'get').mockResolvedValue({ data: [] });
            vi.spyOn(vm.quasar, 'notify');

            await vm.getVideoList(expeditionId, timed);

            expect(vm.quasar.notify).toHaveBeenCalledWith(expect.objectContaining({ type: 'negative' }));
        });
    });
});
