import { describe, expect, it, beforeAll } from 'vitest';
import { axios } from 'app/test/vitest/helper';
import { useArrayData } from 'composables/useArrayData';

describe('useArrayData', () => {
    let arrayData;
    beforeAll(() => {
        axios.get.mockResolvedValue({ data: [] });
        arrayData = useArrayData('InvoiceIn', { url: 'invoice-in/list' });
        Object.defineProperty(window.location, 'href', {
            writable: true,
            value: 'localhost:9000/invoice-in/list',
        });

        // Mock the window.history.pushState method within useArrayData
        window.history.pushState = (data, title, url) => (window.location.href = url);

        //  Mock the URL constructor within useArrayData
        global.URL = class URL {
            constructor(url) {
                this.hash = url.split('localhost:9000/')[1];
            }
        };
    });

    it('should add the params to the url', async () => {
        arrayData.store.userParams = { supplierFk: 2 };
        arrayData.updateStateParams();
        expect(window.location.href).contain('params=%7B%22supplierFk%22%3A2%7D');
    });
});
