import { PASSWORD, USERNAME, createProviders, createRandomString } from './config';
import { describe, expect, it } from 'vitest';

describe('test getMany', async () => {
  const { dataProvider, authProvider } = createProviders();

  it('should fail when not logged in', async () => {
    expect(dataProvider.getMany('entities/category', { ids: [] })).rejects.toThrow('iam.error.forbidden');
  });

  it('should fail with invalid id', async () => {
    await authProvider.login({ username: USERNAME, password: PASSWORD });
    const { data } = await dataProvider.getMany('entities/category', { ids: ['fake'] });

    expect(data).toBeDefined();
    expect(data?.length).toBe(0);
  });

  it('should success with valid data', async () => {
    await authProvider.login({ username: USERNAME, password: PASSWORD });
    const category = await dataProvider.create('entities/category', {
      data: {
        description: { it: createRandomString(10) }
      }
    });

    expect(category).toBeDefined();
    expect(category?.data?.id).toBeDefined();

    const { data } = await dataProvider.getMany('entities/category', { ids: [category.data?.id] });
    expect(data).toBeDefined();
    expect(data?.length).toBe(1);
  });
});
