const { Builder, By, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

const webdriver = process.env.Chrome_DRIVER
const service = new chrome.ServiceBuilder(webdriver);
const login = require("./helperSimulations/simulateAdminLogin");
const findLastDegreeCourse = require('./helperSimulations/findDegreeCourseID');

describe("To create an Application for 'Architektur'", () => {
    let driver

    beforeAll(async () => {
        driver = new Builder().forBrowser('chrome').setChromeService(service).build();
        await login(driver)
    })

    afterAll(async () => {
        await driver.quit();
    })

    it("should have a button to create an application", async () => {
        const degreeCourseManagementButton = await driver.wait(until.elementLocated(By.id("OpenDegreeCourseManagementPageButton")), 5000)
        expect(degreeCourseManagementButton).toBeDefined();
        await degreeCourseManagementButton.click();
        const id = await findLastDegreeCourse(driver)
        const architectureButton = await driver.wait(until.elementLocated(By.id("CreateDegreeCourseApplicationForDegreeCourse" +  id)), 5000)
        expect(architectureButton).toBeDefined();
    })

    it("should open a view to type in data for an application", async () => {
        const degreeCourseManagementButton = await driver.wait(until.elementLocated(By.id("OpenDegreeCourseManagementPageButton")), 5000)
        expect(degreeCourseManagementButton).toBeDefined();
        await degreeCourseManagementButton.click();
        const id = await findLastDegreeCourse(driver)
        const architectureButton = await driver.wait(until.elementLocated(By.id("CreateDegreeCourseApplicationForDegreeCourse" +  id)), 5000)
        expect(architectureButton).toBeDefined();
        await architectureButton.click();
        
        const targetPeriodYearTextField = await driver.wait(until.elementLocated(By.id("CreateDegreeCourseApplicationEditTargetPeriodYear")), 5000)
        const targetPeriodName = await driver.wait(until.elementLocated(By.id("CreateDegreeCourseApplicationEditTargetPeriodName")), 5000)
        const userID = await driver.wait(until.elementLocated(By.id("CreateDegreeCourseApplicationEditUserID")), 5000)
        
        expect(targetPeriodYearTextField).toBeDefined();
        expect(targetPeriodName).toBeDefined();
        expect(userID).toBeDefined();
       
        await targetPeriodYearTextField.sendKeys("2022")
        await targetPeriodName.sendKeys("WiSe")
        await userID.sendKeys("test123")
       
        const finishCreateDegreeCourseApplicationButton = await driver.wait(until.elementLocated(By.id("CreateDegreeCourseApplicationCreateButton")), 5000)
        expect(finishCreateDegreeCourseApplicationButton).toBeDefined();
        finishCreateDegreeCourseApplicationButton.click();
    })
})