package Seleniumtests;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.Test;

import java.time.Duration;

public class Login {
    @Test  //Test č.1

    public void loginTest (){

        //inicializace Chromu
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--incognito");
        WebDriver driver = new ChromeDriver(options);

        //kontrola otevření správné stránky
        driver.get("https://school.moodledemo.net/login/");
        WebElement loginText = driver.findElement(By.xpath("//*[contains(text(), 'Přihlášení do Mount Orange')]"));
        Assert.assertTrue(loginText.isDisplayed(), "Stránka nebyla správně načtena");

        //Přihlášení do Moodlu
        WebElement usernameInput = driver.findElement(By.id("username"));
        usernameInput.sendKeys("student");
        //Při zadávání hesla docházelo k problémům s vyplněním hesla, bylo nutné Selenium trochu zpomalit
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        WebElement passwordInput = driver.findElement(By.id("password"));
        passwordInput.sendKeys("moodle25");
        WebElement submitButton = driver.findElement(By.id("loginbtn"));
        submitButton.click();

        //Kontrola přechodu na správnou stránku
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
        wait.until(ExpectedConditions.urlToBe("https://school.moodledemo.net/my/courses.php"));
        String expectedUrl = "https://school.moodledemo.net/my/courses.php";
        String actualUrl = driver.getCurrentUrl();
        Assert.assertEquals(actualUrl, expectedUrl, "Přihlášení neproběhlo na správnou stránku");

        //Kontroluje, že jsou zobrazeny kurzy
        String expectedMessage = "My courses";
        String pageSource = driver.getPageSource();
        Assert.assertTrue(pageSource.contains(expectedMessage), "Stránka kurzů není načtená správně");

        driver.quit();
    }
}
