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 CourseMaterialVisibilityCheckStudent {
    @Test  //Test č.2

    public void courseMaterialVisibilityTest(){

        //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");
        //Selenium měl problém se zadáváním textu do hesla, bylo nutné ho 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ě");

        //Otevření kurzu
        WebElement course = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("(//div[contains(@id,'course-info-container')]/div/div/a/span[3]/span[2])[1]")));
        course.click();


        //Kontroluje správnou URL kurzu
        wait.until(ExpectedConditions.urlContains("/course/view"));
        String expectedUrlCourse = "https://school.moodledemo.net/course/view.php?id=";
        String actualUrlCourse = driver.getCurrentUrl();
        Assert.assertTrue(actualUrlCourse.startsWith(expectedUrlCourse), "Neproběhlo přesměrování na správnou URL");

        // Kontrola, že se prvky na stránce načetly
        String expectedTitle = "Course";
        String title = driver.getTitle();
        Assert.assertTrue(title.contains(expectedTitle), "Prvky na stránce kurzu nebyly načteny");

        driver.quit();
    }
}
