Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Add test for setting a project language alias
Browse files Browse the repository at this point in the history
  • Loading branch information
djansen-redhat committed Mar 6, 2015
1 parent 0aadf8c commit 69ecd10
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 8 deletions.
Expand Up @@ -168,4 +168,31 @@ public boolean apply(WebDriver driver) {

return new ProjectLanguagesTab(getDriver());
}

public ProjectLanguagesTab clickLanguageActionsDropdown(String locale) {
LanguageList.clickActionsDropdown(waitForWebElement(activeLocales),
locale);
return new ProjectLanguagesTab(getDriver());
}

public ProjectLanguagesTab clickAddAlias(String locale) {
LanguageList.clickAddAlias(waitForWebElement(activeLocales), locale);
return new ProjectLanguagesTab(getDriver());
}

public ProjectLanguagesTab enterAliasForLocale(String locale, String alias) {
LanguageList.enterAlias(waitForWebElement(activeLocales),
locale, alias);
return new ProjectLanguagesTab(getDriver());
}

public ProjectLanguagesTab saveLocaleAlias(String locale) {
LanguageList.setAlias(waitForWebElement(activeLocales), locale);
return new ProjectLanguagesTab(getDriver());
}

public String getAlias(String locale) {
return LanguageList.getAliasForLocale(waitForWebElement(activeLocales),
locale);
}
}
55 changes: 47 additions & 8 deletions functional-test/src/main/java/org/zanata/util/LanguageList.java
Expand Up @@ -23,6 +23,7 @@
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebElement;

import java.util.List;
Expand All @@ -36,7 +37,12 @@ public class LanguageList {
private LanguageList(){}

private static By localeId = By.className("js-locale-id");
private static By localeAlias = By.className("js-locale-alias");
private static By languageActions = By.className("button--group");
private static By dropdown = By.className("i--arrow-down");
private static By aliasInput = By.className("form--inline__input");
private static By setAlias = By.className("form--inline__addon");
private static By addAliasLink = By.linkText("Add alias");

public static List<String> getListedLocales(WebElement localeList) {
return Lists.transform(getListElements(localeList),
Expand All @@ -61,18 +67,51 @@ public static void toggleEnabled(WebElement localeListElement) {
.findElements(By.tagName("button")).get(0).click();
}

public static boolean toggleLanguageInList(WebElement localeList, String localeId) {
boolean clickedLocale = false;
public static boolean toggleLanguageInList(WebElement localeList,
String locale) {
WebElement localeItem = getLocaleEntry(localeList, locale);
try {
LanguageList.toggleEnabled(localeItem);
} catch (NoSuchElementException nsee) {
return false;
}
return true;
}

public static void clickActionsDropdown(WebElement list, String locale) {
getLocaleEntry(list, locale).findElement(dropdown).click();
}

public static void clickAddAlias(WebElement list, String locale) {
getLocaleEntry(list, locale).findElement(addAliasLink).click();
}

public static void enterAlias(WebElement localeList, String locale,
String alias) {
getLocaleEntry(localeList, locale).findElement(aliasInput)
.sendKeys(alias);
}

public static void setAlias(WebElement localeList, String locale) {
getLocaleEntry(localeList, locale).findElement(setAlias).click();
}

public static String getAliasForLocale(WebElement list, String locale) {
return getLocaleEntry(list, locale).findElement(localeAlias)
.getText();
}

private static WebElement getLocaleEntry(WebElement list, String locale) {
List<WebElement> listElements = LanguageList
.getListElements(localeList);
.getListElements(list);
for (WebElement localeLi : listElements) {
if (LanguageList.getLocaleID(localeLi).equals(localeId)) {
LanguageList.toggleEnabled(localeLi);
clickedLocale = true;
break;
if (LanguageList.getLocaleID(localeLi).equals(locale)) {
return localeLi;
}
}
return clickedLocale;
throw new NoSuchElementException("Unable to find locale " + locale);

}

}

Expand Up @@ -108,4 +108,25 @@ public void editProjectLanguages() throws Exception {
.contains("en-US", "fr", "hi")
.as("The enabled language list contains en-US, fr and hi");
}

@Feature(summary = "The administrator can set an alias for a project " +
"language",
tcmsTestPlanIds = 5316, tcmsTestCaseIds = 0)
@Test
public void setLanguageAliasTest() {
ProjectLanguagesTab projectLanguagesTab = new ProjectWorkFlow()
.goToProjectByName("about fedora")
.gotoSettingsTab()
.gotoSettingsLanguagesTab()
.expectEnabledLocaleListCount(3);
projectLanguagesTab = projectLanguagesTab
.clickLanguageActionsDropdown("pl")
.clickAddAlias("pl")
.enterAliasForLocale("pl", "pl-PL")
.saveLocaleAlias("pl");

assertThat(projectLanguagesTab.getAlias("pl"))
.isEqualTo("pl-PL")
.as("The alias was set");
}
}

0 comments on commit 69ecd10

Please sign in to comment.