import supertest from 'supertest';
import { server, getToken, createCompanyUser } from '../helpers';

describe('GET /auth/verify-email', () => {
  it('should return 400 if token is not passed', async () => {
    const res = await supertest(server).get('/api/v1/auth/verify-email');

    expect(res.status).toBe(400);
  });

  it('should return 404 if token is passed and cannot be found', async () => {
    const user = {
      email: 'abc@email.com',
      password: '12345678',
      companyName: 'Dre',
      rcNumber: 'bn 12345',
      address: 'lekki, lagos',
      phoneNumber: '+2348012345678',
    };

    const token = getToken(user);

    const res = await supertest(server)
      .get('/api/v1/auth/verify-email')
      .query({ token });

    expect(res.status).toBe(404);
    expect(res.body).toMatchObject({
      success: false,
      message: 'invalid request please kindly register',
    });
  });

  it('should return 200 if token is passed and user exists', async () => {
    const user = await createCompanyUser();

    const token = getToken(user.toObject());

    const res = await supertest(server)
      .get('/api/v1/auth/verify-email')
      .query({ token });

    expect(res.status).toBe(200);
    expect(res.body).toMatchObject({
      success: true,
      message: 'email verified successfully, please login to proceed',
    });
  });
});
