import { matchNone } from '../js/query/boolean';
import '@testing-library/jest-dom/vitest';
import { URL } from 'node:url';
import { Blob } from 'node:buffer';
import { fireEvent } from '@testing-library/dom';

window.booru = {
  timeAgo: () => {},
  csrfToken: 'mockCsrfToken',
  hiddenTag: '/mock-tagblocked.svg',
  hiddenTagList: [],
  hideStaffTools: 'true',
  ignoredTagList: [],
  imagesWithDownvotingDisabled: [],
  spoilerType: 'off',
  spoileredTagList: [],
  userCanEditFilter: false,
  userIsSignedIn: false,
  watchedTagList: [],
  hiddenFilter: matchNone(),
  spoileredFilter: matchNone(),
  interactions: [],
  tagsVersion: 5,
};

// https://github.com/jsdom/jsdom/issues/1721#issuecomment-1484202038
// jsdom URL and Blob are missing most of the implementation
// Use the node version of these types instead
Object.assign(globalThis, { URL, Blob });

// Prevents an error when calling `form.submit()` directly in
// the code that is being tested
HTMLFormElement.prototype.submit = function () {
  fireEvent.submit(this);
};