import express from 'express';
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import extractSelects from '../../src/middlewares/selects.js';

describe('selects middleware', () => {
  it('data', () => {
    const request = { query: { select: 'foo,bar.spam,baz,a%23b' } } as express.Request<
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      any,
      object,
      object,
      { select: string }
    >;
    const response = { locals: {} } as express.Response;

    extractSelects(request, response, () => {});

    assert.deepEqual(response.locals, {
      selects: ['foo', 'bar.spam', 'baz', 'a#b'],
    });
  });

  it('no data', () => {
    const request = { query: {} } as express.Request;
    const response = { locals: {} } as express.Response;

    extractSelects(request, response, () => {});

    assert.deepEqual(response.locals, {
      selects: [],
    });
  });
});
