import { browser, ExpectedConditions as ec, promise } from 'protractor';
import { NavBarPage, SignInPage } from '../../page-objects/jhi-page-objects';

import { LikesComponentsPage, LikesDeleteDialog, LikesUpdatePage } from './likes.page-object';

const expect = chai.expect;

describe('Likes e2e test', () => {
  let navBarPage: NavBarPage;
  let signInPage: SignInPage;
  let likesComponentsPage: LikesComponentsPage;
  let likesUpdatePage: LikesUpdatePage;
  let likesDeleteDialog: LikesDeleteDialog;
  const username = process.env.E2E_USERNAME ?? 'admin';
  const password = process.env.E2E_PASSWORD ?? 'search@admin';

  before(async () => {
    await browser.get('/');
    navBarPage = new NavBarPage();
    signInPage = await navBarPage.getSignInPage();
    await signInPage.autoSignInUsing(username, password);
    await browser.wait(ec.visibilityOf(navBarPage.entityMenu), 5000);
    // await navBarPage.clickOnEntityMenu();
    await browser.sleep(5000);
  });

  it('should load Likes', async () => {
    await navBarPage.goToEntity('likes');
    likesComponentsPage = new LikesComponentsPage();
    await browser.wait(ec.visibilityOf(likesComponentsPage.title), 5000);
    expect(await likesComponentsPage.getTitle()).to.eq('gitsearchApp.likes.home.title');
    await browser.wait(ec.or(ec.visibilityOf(likesComponentsPage.entities), ec.visibilityOf(likesComponentsPage.noResult)), 10000);
  });

  it('should load create Likes page', async () => {
    await likesComponentsPage.clickOnCreateButton();
    likesUpdatePage = new LikesUpdatePage();
    expect(await likesUpdatePage.getPageTitle()).to.eq('gitsearchApp.likes.home.createOrEditLabel');
    await likesUpdatePage.cancel();
  });

  // it('should create and save Likes', async () => {
  //   const nbButtonsBeforeCreate = await likesComponentsPage.countDeleteButtons();

  //   await likesComponentsPage.clickOnCreateButton();

  //   await promise.all([
  //     likesUpdatePage.setDateInput('2000-12-31'),
  //     likesUpdatePage.setUserIDInput('5'),
  //     likesUpdatePage.setProjectIDInput('5'),
  //   ]);

  //   expect(await likesUpdatePage.getDateInput()).to.eq('2000-12-31', 'Expected date value to be equals to 2000-12-31');
  //   expect(await likesUpdatePage.getUserIDInput()).to.eq('5', 'Expected userID value to be equals to 5');
  //   expect(await likesUpdatePage.getProjectIDInput()).to.eq('5', 'Expected projectID value to be equals to 5');

  //   await likesUpdatePage.save();
  //   expect(await likesUpdatePage.getSaveButton().isPresent(), 'Expected save button disappear').to.be.false;

  //   expect(await likesComponentsPage.countDeleteButtons()).to.eq(nbButtonsBeforeCreate + 1, 'Expected one more entry in the table');
  // });

  // it('should delete last Likes', async () => {
  //   const nbButtonsBeforeDelete = await likesComponentsPage.countDeleteButtons();
  //   await likesComponentsPage.clickOnLastDeleteButton();

  //   likesDeleteDialog = new LikesDeleteDialog();
  //   expect(await likesDeleteDialog.getDialogTitle()).to.eq('gitsearchApp.likes.delete.question');
  //   await likesDeleteDialog.clickOnConfirmButton();

  //   expect(await likesComponentsPage.countDeleteButtons()).to.eq(nbButtonsBeforeDelete - 1);
  // });

  after(async () => {
    await navBarPage.autoSignOut();
  });
});