|
|
@@ -0,0 +1,141 @@ |
|
|
|
package com.vaadin.tests.components.link; |
|
|
|
|
|
|
|
import static org.hamcrest.CoreMatchers.is; |
|
|
|
import static org.junit.Assert.assertFalse; |
|
|
|
import static org.junit.Assert.assertThat; |
|
|
|
import static org.junit.Assert.assertTrue; |
|
|
|
|
|
|
|
import java.util.regex.Matcher; |
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Test; |
|
|
|
import org.openqa.selenium.By; |
|
|
|
|
|
|
|
import com.vaadin.testbench.elements.ButtonElement; |
|
|
|
import com.vaadin.testbench.elements.LinkElement; |
|
|
|
import com.vaadin.testbench.elements.VerticalLayoutElement; |
|
|
|
import com.vaadin.tests.tb3.MultiBrowserTest; |
|
|
|
|
|
|
|
public class LinkInsideDisabledContainerTest extends MultiBrowserTest { |
|
|
|
|
|
|
|
private static final Pattern CLICK_MATCHER = Pattern |
|
|
|
.compile(LinkInsideDisabledContainer.CLICK_COUNT_TEXT + "(\\d+)"); |
|
|
|
|
|
|
|
@Before |
|
|
|
public void init() { |
|
|
|
openTestURL(); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void clickOnEnabledLinkInEnabledContainerShouldPerformAction() |
|
|
|
throws InterruptedException { |
|
|
|
|
|
|
|
clickLink(); |
|
|
|
assertTrue(isLinkEnabled()); |
|
|
|
assertThat(clicksOnLink(), is(1)); |
|
|
|
|
|
|
|
clickLink(); |
|
|
|
assertThat(clicksOnLink(), is(2)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void clickOnEnabledLinkInDisabledContainerShouldNotPerformAction() |
|
|
|
throws InterruptedException { |
|
|
|
|
|
|
|
disableContainer(); |
|
|
|
|
|
|
|
clickLink(); |
|
|
|
|
|
|
|
assertFalse(isLinkEnabled()); |
|
|
|
assertThat(clicksOnLink(), is(0)); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void linkShouldMaintainDisabledStatusWhenTogglingContainerEnabledStatus() |
|
|
|
throws InterruptedException { |
|
|
|
|
|
|
|
toggleLinkEnabledStatus(); |
|
|
|
clickLink(); |
|
|
|
assertFalse(isLinkEnabled()); |
|
|
|
assertThat(clicksOnLink(), is(0)); |
|
|
|
|
|
|
|
disableContainer(); |
|
|
|
clickLink(); |
|
|
|
assertFalse(isLinkEnabled()); |
|
|
|
assertThat(clicksOnLink(), is(0)); |
|
|
|
|
|
|
|
enableContainer(); |
|
|
|
clickLink(); |
|
|
|
assertFalse(isLinkEnabled()); |
|
|
|
assertThat(clicksOnLink(), is(0)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void linkShouldMaintainEnabledStatusWhenTogglingContainerEnabledStatus() |
|
|
|
throws InterruptedException { |
|
|
|
|
|
|
|
clickLink(); |
|
|
|
assertTrue(isLinkEnabled()); |
|
|
|
assertThat(clicksOnLink(), is(1)); |
|
|
|
|
|
|
|
disableContainer(); |
|
|
|
clickLink(); |
|
|
|
assertFalse(isLinkEnabled()); |
|
|
|
assertThat(clicksOnLink(), is(1)); |
|
|
|
|
|
|
|
enableContainer(); |
|
|
|
clickLink(); |
|
|
|
assertTrue(isLinkEnabled()); |
|
|
|
assertThat(clicksOnLink(), is(2)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void disableContainer() { |
|
|
|
VerticalLayoutElement container = $(VerticalLayoutElement.class) |
|
|
|
.id("testContainer"); |
|
|
|
if (container.isEnabled()) { |
|
|
|
toggleContainerEnabledStatus(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void enableContainer() { |
|
|
|
VerticalLayoutElement container = $(VerticalLayoutElement.class) |
|
|
|
.id("testContainer"); |
|
|
|
if (!container.isEnabled()) { |
|
|
|
toggleContainerEnabledStatus(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void toggleContainerEnabledStatus() { |
|
|
|
ButtonElement button = $(ButtonElement.class).get(1); |
|
|
|
button.click(); |
|
|
|
} |
|
|
|
|
|
|
|
private void toggleLinkEnabledStatus() { |
|
|
|
ButtonElement button = $(ButtonElement.class).get(0); |
|
|
|
button.click(); |
|
|
|
} |
|
|
|
|
|
|
|
protected void clickLink() throws InterruptedException { |
|
|
|
findElement(By.tagName("A")).click(); |
|
|
|
sleep(250); |
|
|
|
} |
|
|
|
|
|
|
|
private boolean isLinkEnabled() { |
|
|
|
return $(LinkElement.class).first().isEnabled(); |
|
|
|
} |
|
|
|
|
|
|
|
private Integer clicksOnLink() { |
|
|
|
|
|
|
|
if (!getLogs().isEmpty()) { |
|
|
|
Matcher m = CLICK_MATCHER.matcher(getLogRow(0)); |
|
|
|
if (m.find()) { |
|
|
|
return Integer.valueOf(m.group(1)); |
|
|
|
} |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |