/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: BUSL-1.1
 */

import Application from 'consul-ui/app';
import config from 'consul-ui/config/environment';
import * as QUnit from 'qunit';
import { setApplication } from '@ember/test-helpers';
import { setup } from 'qunit-dom';
import { registerWaiter } from '@ember/test';
import './helpers/flash-message';
import start from 'ember-exam/test-support/start';
import setupSinon from 'ember-sinon-qunit';

import ClientConnections from 'consul-ui/services/client/connections';

let activeRequests = 0;
registerWaiter(function () {
  return activeRequests === 0;
});
ClientConnections.reopen({
  addVisibilityChange: function () {
    // for the moment don't listen for tab hiding during testing
    // TODO: make this controllable from testing so we can fake a tab hide
  },
  purge: function () {
    const res = this._super(...arguments);
    activeRequests = 0;
    return res;
  },
  acquire: function () {
    activeRequests++;
    return this._super(...arguments);
  },
  release: function () {
    const res = this._super(...arguments);
    activeRequests--;
    return res;
  },
});
const application = Application.create(config.APP);
application.inject('component:copy-button', 'clipboard', 'service:clipboard/local-storage');

setApplication(application);

setup(QUnit.assert);
setupSinon();

setup(QUnit.assert);

start();
