Skip to content

Commit

Permalink
[java] Making a reusable condition to shorten test code
Browse files Browse the repository at this point in the history
  • Loading branch information
barancev committed Apr 29, 2020
1 parent 188a6ad commit d64e7b4
Showing 1 changed file with 36 additions and 27 deletions.
Expand Up @@ -17,6 +17,8 @@

package org.openqa.selenium.grid.node.config;

import static java.util.Collections.emptyMap;
import static java.util.Collections.singletonMap;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assume.assumeFalse;
import static org.junit.Assume.assumeTrue;
Expand All @@ -26,8 +28,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoInteractions;

import com.google.common.collect.ImmutableMap;

import org.assertj.core.api.Condition;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Capabilities;
Expand Down Expand Up @@ -76,8 +77,8 @@ public void canConfigureNodeWithDriverDetection() {
assumeFalse("We don't have driver servers in PATH when we run unit tests",
Boolean.parseBoolean(System.getenv("TRAVIS")));

Config config = new MapConfig(ImmutableMap.of(
"node", ImmutableMap.of("detect-drivers", "true")));
Config config = new MapConfig(singletonMap(
"node", singletonMap("detect-drivers", "true")));
new NodeOptions(config).configure(tracer, clientFactory, builderSpy);

Capabilities chrome = toPayload("chrome");
Expand All @@ -87,8 +88,8 @@ public void canConfigureNodeWithDriverDetection() {
argThat(factory -> factory instanceof DriverServiceSessionFactory && factory.test(chrome)));

LocalNode node = builder.build();
assertThat(node.isSupporting(chrome)).isTrue();
assertThat(node.isSupporting(toPayload("cheese"))).isFalse();
assertThat(node).is(supporting(chrome));
assertThat(node).isNot(supporting("cheese"));
}

@Test
Expand All @@ -97,16 +98,16 @@ public void shouldDetectCorrectDriversOnWindows() {
assumeFalse("We don't have driver servers in PATH when we run unit tests",
Boolean.getBoolean("TRAVIS"));

Config config = new MapConfig(ImmutableMap.of(
"node", ImmutableMap.of("detect-drivers", "true")));
Config config = new MapConfig(singletonMap(
"node", singletonMap("detect-drivers", "true")));
new NodeOptions(config).configure(tracer, clientFactory, builder);

LocalNode node = builder.build();
assertThat(node.isSupporting(toPayload("chrome"))).isTrue();
assertThat(node.isSupporting(toPayload("firefox"))).isTrue();
assertThat(node.isSupporting(toPayload("internet explorer"))).isTrue();
assertThat(node.isSupporting(toPayload("MicrosoftEdge"))).isTrue();
assertThat(node.isSupporting(toPayload("safari"))).isFalse();
assertThat(node).is(supporting("chrome"));
assertThat(node).is(supporting("firefox"));
assertThat(node).is(supporting("internet explorer"));
assertThat(node).is(supporting("MicrosoftEdge"));
assertThat(node).isNot(supporting("safari"));
}

@Test
Expand All @@ -115,22 +116,22 @@ public void shouldDetectCorrectDriversOnMac() {
assumeFalse("We don't have driver servers in PATH when we run unit tests",
Boolean.getBoolean("TRAVIS"));

Config config = new MapConfig(ImmutableMap.of(
"node", ImmutableMap.of("detect-drivers", "true")));
Config config = new MapConfig(singletonMap(
"node", singletonMap("detect-drivers", "true")));
new NodeOptions(config).configure(tracer, clientFactory, builder);

LocalNode node = builder.build();
assertThat(node.isSupporting(toPayload("chrome"))).isTrue();
assertThat(node.isSupporting(toPayload("firefox"))).isTrue();
assertThat(node.isSupporting(toPayload("internet explorer"))).isFalse();
assertThat(node.isSupporting(toPayload("MicrosoftEdge"))).isTrue();
assertThat(node.isSupporting(toPayload("safari"))).isTrue();
assertThat(node).is(supporting("chrome"));
assertThat(node).is(supporting("firefox"));
assertThat(node).isNot(supporting("internet explorer"));
assertThat(node).is(supporting("MicrosoftEdge"));
assertThat(node).is(supporting("safari"));
}

@Test
public void canAddMoreSessionFactoriesAfterDriverDetection() throws URISyntaxException {
Config config = new MapConfig(ImmutableMap.of(
"node", ImmutableMap.of("detect-drivers", "true")));
Config config = new MapConfig(singletonMap(
"node", singletonMap("detect-drivers", "true")));
new NodeOptions(config).configure(tracer, clientFactory, builder);

Capabilities cheese = toPayload("cheese");
Expand All @@ -151,22 +152,22 @@ public HttpResponse execute(HttpRequest req) throws UncheckedIOException {
builder.add(cheese, new TestSessionFactory((id, c) -> new Handler(c)));

LocalNode node = builder.build();
assertThat(node.isSupporting(toPayload("chrome"))).isTrue();
assertThat(node.isSupporting(cheese)).isTrue();
assertThat(node).is(supporting("chrome"));
assertThat(node).is(supporting(cheese));
}

@Test
public void canConfigureNodeWithoutDriverDetection() {
Config config = new MapConfig(ImmutableMap.of(
"node", ImmutableMap.of("detect-drivers", "false")));
Config config = new MapConfig(singletonMap(
"node", singletonMap("detect-drivers", "false")));
new NodeOptions(config).configure(tracer, clientFactory, builderSpy);

verifyNoInteractions(builderSpy);
}

@Test
public void doNotDetectDriversByDefault() {
Config config = new MapConfig(ImmutableMap.of());
Config config = new MapConfig(emptyMap());
new NodeOptions(config).configure(tracer, clientFactory, builderSpy);

verifyNoInteractions(builderSpy);
Expand All @@ -175,4 +176,12 @@ public void doNotDetectDriversByDefault() {
private Capabilities toPayload(String browserName) {
return new ImmutableCapabilities("browserName", browserName);
}

private Condition<LocalNode> supporting(Capabilities caps) {
return new Condition<>(node -> node.isSupporting(caps), "supporting " + caps);
}

private Condition<LocalNode> supporting(String browserName) {
return new Condition<>(node -> node.isSupporting(toPayload(browserName)), "supporting " + browserName);
}
}

0 comments on commit d64e7b4

Please sign in to comment.