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

const preferences = {
    targetCurrency: 'EUR',
    itemsPerPage: 25,
    amountScaling: 'million' as const,
    decimalSeparator: ',' as const,
    dateFormatView: 'd/m/Y',
    dateFormatList: 'Y-m-d',
};

describe('SharedPropsSummary', () => {
    it('renders the typed guest defaults provided by Laravel', () => {
        const wrapper = mount(SharedPropsSummary, {
            props: {
                auth: {
                    user: null,
                    permissions: { admin: false },
                },
                locale: 'fr',
                preferences,
            },
        });

        expect(wrapper.get('section').text()).toContain('Visiteur local');
        expect(wrapper.text()).toContain('EUR');
        expect(wrapper.text()).toContain('25 lignes');
        expect(wrapper.text()).toContain('million');
    });

    it('renders authenticated identity and permissions', () => {
        const wrapper = mount(SharedPropsSummary, {
            props: {
                auth: {
                    user: {
                        id: 7,
                        name: 'Ada Lovelace',
                        email: 'ada@example.com',
                        avatarUrl: null,
                    },
                    permissions: { admin: true },
                },
                locale: 'fr',
                preferences,
            },
        });

        expect(wrapper.text()).toContain('Ada Lovelace');
        expect(wrapper.text()).toContain('Permission adminOui');
    });
});
