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

Commit

Permalink
Merge pull request #53 from zanata/for-loops-in-tests-are-bad
Browse files Browse the repository at this point in the history
Remove for loops and conditions in tests.
  • Loading branch information
Patrick Huang committed Jul 18, 2013
2 parents 1fc5a53 + cbd2656 commit df00dc1
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 88 deletions.
Expand Up @@ -20,8 +20,6 @@
*/
package org.zanata.feature.startNewProject;

import java.util.List;

import org.concordion.api.extension.Extensions;
import org.concordion.ext.ScreenshotExtension;
import org.concordion.ext.TimestampFormatterExtension;
Expand All @@ -36,12 +34,9 @@
import org.zanata.page.administration.ManageLanguageTeamMemberPage;
import org.zanata.workflow.LoginWorkFlow;

import lombok.extern.slf4j.Slf4j;

/**
* @author Patrick Huang <a href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
@Slf4j
@RunWith(ConcordionRunner.class)
@Extensions({ScreenshotExtension.class, TimestampFormatterExtension.class, CustomResourceExtension.class})
@Category(ConcordionTest.class)
Expand All @@ -64,31 +59,11 @@ public ManageLanguagePage goToManageLanguagePage()

public ManageLanguagePage addNewLanguage(String locale)
{
List<String> locales = manageLanguagePage.getLanguageLocales();
if (locales.contains(locale))
{
log.warn("{} has already been added, enabling by default", locale);
manageLanguagePage = manageLanguagePage.enableLanguageByDefault(locale);
}
else
{
//continue to add the new language
manageLanguagePage = manageLanguagePage.addNewLanguage().enableLanguageByDefault().inputLanguage(locale).saveLanguage();
}
return manageLanguagePage;
return manageLanguagePage.addNewLanguage().enableLanguageByDefault().inputLanguage(locale).saveLanguage();
}

public ManageLanguageTeamMemberPage joinLanguageAsAdmin(String locale)
{
ManageLanguageTeamMemberPage teamMemberPage = manageLanguagePage.manageTeamMembersFor(locale);
if (teamMemberPage.getMemberUsernames().contains("admin"))
{
log.warn("admin has already joined the language [{}]", locale);
return teamMemberPage;
}
else
{
return teamMemberPage.joinLanguageTeam();
}
return manageLanguagePage.manageTeamMembersFor(locale).joinLanguageTeam();
}
}
Expand Up @@ -20,28 +20,25 @@
*/
package org.zanata.feature.versionGroup;

import java.util.*;

import org.hamcrest.Matchers;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.*;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.zanata.feature.BasicAcceptanceTest;
import org.zanata.feature.DetailedTest;
import org.zanata.page.HomePage;
import org.zanata.page.groups.CreateVersionGroupPage;
import org.zanata.page.groups.VersionGroupPage;
import org.zanata.page.groups.VersionGroupsPage;
import org.zanata.page.groups.CreateVersionGroupPage;
import org.zanata.util.ResetDatabaseRule;
import org.zanata.workflow.LoginWorkFlow;

import lombok.extern.slf4j.Slf4j;
import static org.hamcrest.MatcherAssert.assertThat;

/**
* @author Damian Jansen <a href="mailto:djansen@redhat.com">djansen@redhat.com</a>
*/
@Slf4j
@Category(DetailedTest.class)
public class VersionGroupFullTest
{
Expand Down Expand Up @@ -73,21 +70,6 @@ public void createABasicGroup()
assertThat("The group is displayed", groupView.getTitle(), Matchers.equalTo("Zanata: Groups:".concat(groupName)));
}

@Test
public void inputValidationForID()
{
String errorMsg = "must start and end with letter or number, and contain only letters, numbers, underscores and hyphens.";
for (Map.Entry<String, String> entry : inputValidationForIDData().entrySet())
{
VersionGroupFullTest.log.info("Test " + entry.getKey() + ":" + entry.getValue());
VersionGroupsPage versionGroupsPage = homePage.goToGroups();
CreateVersionGroupPage groupPage = versionGroupsPage.createNewGroup();
groupPage.inputGroupId(entry.getValue()).inputGroupName(entry.getValue());
groupPage.saveGroupFailure();
assertThat("Validation error is displayed for " + entry.getKey(), groupPage.getErrors().contains(errorMsg));
}
}

@Test
public void requiredFields()
{
Expand All @@ -96,7 +78,7 @@ public void requiredFields()
String groupName = "verifyRequiredFieldsGroupName";

CreateVersionGroupPage groupPage = homePage.goToGroups().createNewGroup().saveGroupFailure();
assertThat("The two errors are value is required", groupPage.getErrors(),Matchers.contains(errorMsg, errorMsg));
assertThat("The two errors are value is required", groupPage.getErrors(), Matchers.contains(errorMsg, errorMsg));

groupPage.clearFields();
groupPage.inputGroupName(groupName);
Expand Down Expand Up @@ -150,41 +132,4 @@ public void groupDescriptionFieldSize()

}

private LinkedHashMap<String, String> inputValidationForIDData()
{
LinkedHashMap<String, String> inputData = new LinkedHashMap<String, String>(100);
inputData.put("Invalid char |", "Group|ID");
inputData.put("Invalid char /", "Group/ID");
inputData.put("Invalid char ", "Group\\ID");
inputData.put("Invalid char +", "Group+ID");
inputData.put("Invalid char *", "Group*ID");
inputData.put("Invalid char |", "Group|ID");
inputData.put("Invalid char (", "Group(ID");
inputData.put("Invalid char )", "Group)ID");
inputData.put("Invalid char $", "Group$ID");
inputData.put("Invalid char [", "Group[ID");
inputData.put("Invalid char ]", "Group]ID");
inputData.put("Invalid char :", "Group:ID");
inputData.put("Invalid char ;", "Group;ID");
inputData.put("Invalid char '", "Group'ID");
inputData.put("Invalid char ,", "Group,ID");
inputData.put("Invalid char ?", "Group?ID");
inputData.put("Invalid char !", "Group!ID");
inputData.put("Invalid char @", "Group@ID");
inputData.put("Invalid char #", "Group#ID");
inputData.put("Invalid char %", "Group%ID");
inputData.put("Invalid char ^", "Group^ID");
inputData.put("Invalid char =", "Group=ID");
inputData.put("Must start with alphanumeric", "-GroupID");
inputData.put("Must end with alphanumeric", "GroupID-");

/* BUG id=973509 - remove/uncomment depending on outcome
inputData.put("Invalid char .", "Group.ID");
inputData.put("Invalid char {", "Group{ID");
inputData.put("Invalid char }", "Group}ID");
*/

return inputData;
}

}
@@ -0,0 +1,76 @@
/*
* Copyright 2013, Red Hat, Inc. and individual contributors as indicated by the
* @author tags. See the copyright.txt file in the distribution for a full
* listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this software; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
* site: http://www.fsf.org.
*/
package org.zanata.feature.versionGroup;

import org.junit.ClassRule;
import org.junit.experimental.theories.DataPoint;
import org.junit.experimental.theories.Theories;
import org.junit.experimental.theories.Theory;
import org.junit.runner.RunWith;
import org.zanata.page.groups.CreateVersionGroupPage;
import org.zanata.util.ResetDatabaseRule;
import org.zanata.workflow.LoginWorkFlow;

import static org.hamcrest.MatcherAssert.assertThat;

/**
* @author Damian Jansen <a href="mailto:djansen@redhat.com">djansen@redhat.com</a>
*/
@RunWith(Theories.class)
public class VersionGroupIDValidationTest {

@ClassRule
public static ResetDatabaseRule resetDatabaseRule = new ResetDatabaseRule();

@DataPoint public static String INVALID_CHARACTER_PIPE = "Group|ID";
@DataPoint public static String INVALID_CHARACTER_SLASH = "Group/ID";
@DataPoint public static String INVALID_CHARACTER_BACKSLASH = "Group\\ID";
@DataPoint public static String INVALID_CHARACTER_PLUS = "Group+ID";
@DataPoint public static String INVALID_CHARACTER_ASTERISK = "Group*ID";
@DataPoint public static String INVALID_CHARACTER_LEFT_PARENTHESES = "Group(ID";
@DataPoint public static String INVALID_CHARACTER_RIGHT_PARENTHESES = "Group)ID";
@DataPoint public static String INVALID_CHARACTER_DOLLAR = "Group$ID";
@DataPoint public static String INVALID_CHARACTER_LEFT_BRACKET = "Group[ID";
@DataPoint public static String INVALID_CHARACTER_RIGHT_BRACKET = "Group]ID";
@DataPoint public static String INVALID_CHARACTER_COLON = "Group:ID";
@DataPoint public static String INVALID_CHARACTER_SEMICOLON = "Group;ID";
@DataPoint public static String INVALID_CHARACTER_APOSTROPHE = "Group'ID";
@DataPoint public static String INVALID_CHARACTER_COMMA = "Group,ID";
@DataPoint public static String INVALID_CHARACTER_QUESTION = "Group?ID";
@DataPoint public static String INVALID_CHARACTER_EXCLAMATION = "Group!ID";
@DataPoint public static String INVALID_CHARACTER_AMPERSAT = "Group@ID";
@DataPoint public static String INVALID_CHARACTER_HASH = "Group#ID";
@DataPoint public static String INVALID_CHARACTER_PERCENT = "Group%ID";
@DataPoint public static String INVALID_CHARACTER_CARAT = "Group^ID";
@DataPoint public static String INVALID_CHARACTER_EQUALS = "Group=ID";
@DataPoint public static String MUST_START_ALPHANUMERIC = "-GroupID";
@DataPoint public static String MUST_END_ALPHANUMERIC = "GroupID-";

@Theory
public void inputValidationForID(String inputText)
{
String errorMsg = "must start and end with letter or number, and contain only letters, numbers, underscores and hyphens.";
CreateVersionGroupPage groupPage = new LoginWorkFlow().signIn("admin", "admin").goToGroups().createNewGroup();
groupPage.inputGroupId(inputText).inputGroupName(inputText);
groupPage.saveGroupFailure();
assertThat("Validation error is displayed for input " + inputText, groupPage.getErrors().contains(errorMsg));
}
}

0 comments on commit df00dc1

Please sign in to comment.