# encoding: UTF-8

require "json"
require "selenium-webdriver"
require "rspec"
include RSpec::Expectations

describe "Test1" do

  before(:each) do
    @driver = Selenium::WebDriver.for :firefox
    @base_url = "http://localhost:8000/login/index.php"
    @accept_next_alert = true
    @driver.manage.timeouts.implicit_wait = 30
    @verification_errors = []
  end
  
  after(:each) do
    @driver.quit
    @verification_errors.empty?
  end
  
  it "test_1" do
    @driver.get(@base_url + "/login/index.php")
    @driver.find_element(:id, "username").clear
    @driver.find_element(:id, "username").send_keys "test10"
    @driver.find_element(:id, "password").clear
    @driver.find_element(:id, "password").send_keys "1aA!test"
    @driver.find_element(:id, "loginbtn").click
    @driver.find_element(:link, "Test de classement en français").click
    @driver.find_element(:link, "Partie 1 - Accords et orthographe").click
    # Commencer le test...
    @driver.find_element(:css, "input[type=\"submit\"]").click

    # Un pop-up s'affiche et on veut commencer l'attempt.
    @driver.find_element(:css, "input[value=\"Start attempt\"]").click
    # selectionner des mots
    @driver.find_element(:css, "span[data-index=\"10\"]").click
    # envoyer une correction
    @driver.find_element(:css, "input[type=\"text\"]").clear
    @driver.find_element(:css, "input[type=\"text\"]").send_keys "apparances"
    @driver.find_element(:css, "button[type=\"submit\"]").click

    #Passer à l'étape suivante
    @driver.find_element(:css, "input[type=\"submit\"]").click
    # Remettre ce qu'on a fait.
    @driver.find_element(:css, "input[value=\"Submit all and finish\"]").click
    #@driver.find_element(:css, "input[type=\"submit\"]").click
    # Un pop-up s'affiche et on veut soumettre.
    @driver.find_element(:css, "input[value=\"Submit all and finish\"]").click
    


    @driver.find_element(:link, "Log out").click
  end
  def element_present?(how, what)
    @driver.find_element(how, what)
    true
  rescue Selenium::WebDriver::Error::NoSuchElementError
    false
  end
  
  def alert_present?()
    @driver.switch_to.alert
    true
  rescue Selenium::WebDriver::Error::NoAlertPresentError
    false
  end
  
  def verify(&blk)
    yield
  rescue ExpectationNotMetError => ex
    @verification_errors << ex
  end
  
  def close_alert_and_get_its_text(how, what)
    alert = @driver.switch_to().alert()
    alert_text = alert.text
    if (@accept_next_alert) then
      alert.accept()
    else
      alert.dismiss()
    end
    alert_text
  ensure
    @accept_next_alert = true
  end
end
