Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ua.net.azhytnytskyi.housework;
- import com.codeborne.selenide.*;
- import org.junit.After;
- import org.junit.Assert;
- import org.junit.Before;
- import org.junit.Test;
- import static com.codeborne.selenide.CollectionCondition.exactTexts;
- import static com.codeborne.selenide.Condition.*;
- import static com.codeborne.selenide.Selenide.*;
- public class TodoMvcTest extends BaseTest {
- @Before
- public void setUp() {
- open("/");
- clearCompletedButton.waitUntil(exist,1000L);
- }
- @After
- public void tearDown() {
- Selenide.executeJavaScript("localStorage.clear()");
- }
- @Test
- public void testAddingTasks() {
- add("a", "b", "c");
- assertActiveTasks("a", "b", "c");
- }
- @Test
- public void testDeletingTask() {
- add("a", "b", "c");
- delete("c");
- assertActiveTasks("a", "b");
- }
- @Test
- public void testEditingTask() {
- add("a", "b", "c");
- edit("a", "a edited");
- assertActiveTasks("a edited", "b", "c");
- }
- @Test
- public void testDiscardedEditing() {
- add("a", "b", "c");
- discardEdit("a", "a to be discarded");
- assertActiveTasks("a", "b", "c");
- }
- @Test
- public void testTogglingTask() {
- add("a", "b", "c");
- toggle("a");
- assertCompletedTasks("a");
- }
- @Test
- public void testClearCompletedButton() {
- add("a", "b", "c");
- toggle("a");
- clearCompleted();
- assertActiveTasks("b", "c");
- }
- @Test
- public void testToggleAllButton() {
- add("a", "b", "c");
- toggleAll();
- assertCompletedTasks("a", "b", "c");
- }
- @Test
- public void testItemsLeftCounter() {
- add("a", "b", "c");
- Assert.assertEquals("3", getItemsLeftCounter());
- toggle("a");
- Assert.assertEquals("2", getItemsLeftCounter());
- }
- @Test
- public void testThatClearCompletedButtonAppearsOnlyWithCompletedTasks() {
- add("a", "b", "c");
- Assert.assertFalse(isClearCompletedButtonDisplayed());
- toggle("a");
- Assert.assertTrue(isClearCompletedButtonDisplayed());
- }
- @Test
- public void testTasksFilters() {
- add("a", "b", "c", "d");
- toggle("b");
- applyActiveFilter();
- assertDisplayedTasks("a", "", "c", "d");
- applyCompleteFilter();
- assertDisplayedTasks("", "b", "", "");
- applyAllFilter();
- assertDisplayedTasks("a", "b", "c", "d");
- }
- private static final ElementsCollection tasks = $$("#todo-list>li");
- private static final SelenideElement itemsLeftCounter = $("#todo-count>strong");
- private static final SelenideElement clearCompletedButton = $("#clear-completed");
- private void assertDisplayedTasks(String... taskNames) {
- tasks.shouldHave(exactTexts(taskNames));
- }
- private void applyActiveFilter() {
- $("[href$='active']").click();
- }
- private void applyCompleteFilter() {
- $("[href$='completed']").click();
- }
- private void applyAllFilter() {
- $("[href$='#/']").click();
- }
- private void add(String... taskNames) {
- for (String task: taskNames) {
- $("#new-todo").setValue(task).pressEnter();
- }
- }
- private void edit(String oldTaskName, String newTaskName) {
- startEdit(oldTaskName, newTaskName).pressEnter();
- }
- private boolean isClearCompletedButtonDisplayed() {
- return clearCompletedButton.isDisplayed();
- }
- private void discardEdit(String oldTaskName, String newTaskName) {
- startEdit(oldTaskName, newTaskName).pressEscape();
- }
- private void toggle(String taskName) {
- tasks.findBy(exactText(taskName)).find(".toggle").click();
- }
- private void toggleAll() {
- $("#toggle-all").click();
- }
- private void clearCompleted() {
- clearCompletedButton.click();
- }
- private String getItemsLeftCounter() {
- return itemsLeftCounter.text();
- }
- private void delete(String taskName) {
- tasks.findBy(exactText(taskName)).hover().find(".destroy").click();
- }
- private static void assertActiveTasks(String... taskNames) {
- tasks.filterBy(cssClass("active")).shouldHave(exactTexts(taskNames));
- }
- private static void assertCompletedTasks(String... taskNames) {
- tasks.filterBy(cssClass("completed")).shouldHave(exactTexts(taskNames));
- }
- private SelenideElement startEdit(String oldTaskName, String newTaskName) {
- tasks.findBy(exactText(oldTaskName)).doubleClick();
- return tasks.findBy(cssClass("editing")).find(".edit").setValue(newTaskName);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement