const request = require('supertest');
const { expect } = require('chai');
const app = require('../../src/app');

describe('GET /benchmark', () => {
  beforeEach(async () => {
    const res = await request(app).get('/benchmark');
    this.res = res;
  });

  it('Benchmark base route should return a redirect', async () => {
    expect(this.res.status).to.equal(302);
  });

  it('Benchmark base route should return an HTML response', async () => {
    expect(this.res.headers['content-type']).contains('text/plain');
  });

  it('Benchmark base route should redirect to /benchmark/list', async () => {
    expect(this.res.headers['location']).contains('/benchmark/list');
  });
});

describe('GET /benchmark/list', () => {
  beforeEach(async () => {
    const res = await request(app).get('/benchmark/list');
    this.res = res;
  });

  it('Benchmark list route should return a 200 status', async () => {
    expect(this.res.status).to.equal(200);
  });

  it('Benchmark list route should return an HTML response', async () => {
    expect(this.res.headers['content-type']).contains('text/html');
  });

  it('Benchmark list route should contain "List of Benchmarks" in body', async() => {
    expect(this.res.text).contains('List of Benchmarks');
  });
});

describe('GET /benchmark/add', () => {
  beforeEach(async () => {
    const res = await request(app).get('/benchmark/add');
    this.res = res;
  });

  it('Benchmark add route should return a 200 status', async () => {
    expect(this.res.status).to.equal(200);
  });

  it('Benchmark add route should return an HTML response', async () => {
    expect(this.res.headers['content-type']).contains('text/html');
  });

  it('Benchmark add route should contain "Add a Benchmark" in body', async() => {
    expect(this.res.text).contains('Add a Benchmark');
  });
});
