package com.overloop.automation.stepdefs;

import com.overloop.automation.helpers.LocalStorageJS;
import com.overloop.automation.pages.*;
import cucumber.api.PendingException;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.And;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class WorkstationSteps {
    private WebDriver driver;
    private WorkstationPage workstationPage;
    private LocalStorageJS localStorageJS;

    @Before(order = 1)
    public void webDriverManager() throws Throwable {
        WebDriverManager.chromedriver().setup();
    }

    @Before(order = 2)
    public void initWebDriver() throws Throwable {
        driver = new ChromeDriver();
    }

    @Before(order = 10)
    public void initEcommercePage() throws Throwable {
        workstationPage = new WorkstationPage(driver);
        localStorageJS = new LocalStorageJS(driver);
    }

    @Given("^web browser is on workstation page$")
    public void webBrowserIsOnWorkstationPage() throws Throwable {
        workstationPage.navigatesToWorkstation();
    }

    @And("^login using \"([^\"]*)\" user and \"([^\"]*)\" password$")
    public void loginUsingUserAndPassword(String username, String password) throws Throwable {
        workstationPage.loginToWorkstation(username, password);
    }

    @And("^user navigates to project$")
    public void userNavigatesToProject() throws Throwable {
        workstationPage.navigatesToProject();
    }

    @After(value = "@workstation")
    public void disposeWebDriver() throws Throwable {
        driver.quit();
    }

    @And("^user clicks on tabs$")
    public void userClicksOnTabs() throws Throwable {
        workstationPage.clickOnTabs();
    }

    @When("^reload page$")
    public void reloadPage() throws Throwable {
        workstationPage.reload();
    }

    @Given("^clear locale storage$")
    public void clearLocaleStorage() throws Throwable {
        localStorageJS.clearLocalStorage();
    }
}
