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

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

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

  it('should success with valid data', async () => {
    await authProvider.login({ username: USERNAME, password: PASSWORD });

    const category1 = await dataProvider.create('entities/category', {
      data: {
        description: { it: createRandomString(10) }
      }
    });
    const category2 = await dataProvider.create('entities/category', {
      data: {
        description: { it: createRandomString(10) }
      }
    });
    const category3 = await dataProvider.create('entities/category', {
      data: {
        description: { it: createRandomString(10) }
      }
    });

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

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

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

    const { data } = await dataProvider.deleteMany('entities/category', {
      ids: [category1?.data?.id, category2?.data?.id]
    });

    expect(data).toBeDefined();

    expect(data?.length).toBe(2);
    expect(data).toContain(category1?.data?.id);
    expect(data).toContain(category2?.data?.id);
  });
});
