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

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

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

  it('should fail with invalid id', async () => {
    await authProvider.login({ username: USERNAME, password: PASSWORD });
    expect(
      dataProvider.getOne('entities/category', {
        id: 'fake'
      })
    ).rejects.toThrow('error.not_found');
  });

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