Skip to content

Commit

Permalink
Split SeleniumVersionCheck tests into two classes, style improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
koryl committed Feb 27, 2019
1 parent d9a94a5 commit 9e07e96
Show file tree
Hide file tree
Showing 5 changed files with 220 additions and 223 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static java.util.Objects.nonNull;

/**
* Responsible for retrieving information about Selenium version from pom.xml (if present). It logs warning when wrong
* version is used.
Expand Down Expand Up @@ -115,26 +117,30 @@ static String checkModelForParametrizedValue(String seleniumVersion, Model model
if (seleniumVersion == null || model == null) {
return null;
}
String version = seleniumVersion.substring(2, seleniumVersion.length() - 1);
String version = getNamePropertyName(seleniumVersion);
String versionProp = null;

if (model.getProperties() != null) {
if (nonNull(model.getProperties())) {
versionProp = model.getProperties().getProperty(version);

} else if (System.getProperty(version) != null) {
} else if (nonNull(System.getProperty(version))) {
versionProp = System.getProperty(version);

} else if (model.getProfiles() != null && model.getProfiles().size() > 0) {
} else if (nonNull(model.getProfiles()) && model.getProfiles().size() > 0) {
versionProp = model.getProfiles().stream()
.filter(prof ->
prof.getProperties() != null && prof.getProperties().getProperty(version) != null)
nonNull(prof.getProperties()) && nonNull(prof.getProperties().getProperty(version)))
.findAny()
.map(prof -> prof.getProperties().getProperty(version))
.orElse(null);
}
return versionProp;
}

private static String getNamePropertyName(String propertyVersion) {
return propertyVersion.substring(2, propertyVersion.length() - 1);
}

private static Model readPom(MavenXpp3Reader reader, String pathToPom) {
Model model;
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
package org.fluentlenium.utils;

import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

import static org.assertj.core.api.Assertions.assertThat;
import static org.fluentlenium.utils.SeleniumVersionChecker.checkVersionFromMaven;

public class SeleniumVersionCheckerLoggerTest extends SeleniumVersionCheckerRetrieveVersionTest {

private ListAppender<ILoggingEvent> listAppender;

private static final String FAILED_TO_READ_MESSAGE =
"Failed to read Selenium version from your pom.xml."
+ " Skipped compatibility check."
+ " Please make sure you are using correct Selenium version - {}";
private static final String WRONG_VERSION_MESSAGE =
"You are using incompatible Selenium version. Please change it to {}. "
+ "You can find example on project main page {}";

@Before
public void reset() {

Logger fooLogger = (Logger) LoggerFactory.getLogger(SeleniumVersionChecker.class);
listAppender = new ListAppender<>();
listAppender.start();

fooLogger.addAppender(listAppender);

SeleniumVersionChecker.isSeleniumVersionFound = false;
SeleniumVersionChecker.notifiedAlready = false;
}

@Test
public void shouldLogWrongVersionOfLibraryTest() {

checkVersionFromMaven(WRONG_VERSION_POM);

assertThat(getLogsForThread(listAppender))
.hasSize(1)
.element(0)
.isEqualTo(WRONG_VERSION_MESSAGE);
}

@Test
public void shouldLogMessageOnlyOnceTest() {

checkVersionFromMaven(WRONG_VERSION_POM);
checkVersionFromMaven(WRONG_VERSION_POM);

assertThat(getLogsForThread(listAppender))
.hasSize(1)
.element(0)
.isEqualTo(WRONG_VERSION_MESSAGE);
}

@Test
public void shouldNotLogAnythingWhenFileIsNotPresentTest() {

checkVersionFromMaven(PATH_TO_TEST_FOLDER + "/not_exisitng.xml");

assertThat(getLogsForThread(listAppender))
.hasSize(0);
}

@Test
public void shouldNotLogAnythingWhenVersionParametrizedInPomPropertiesIsCorrectTest() {

checkVersionFromMaven(PARAMETRIZED_POM);

assertThat(getLogsForThread(listAppender))
.hasSize(0);
}

@Test
public void shouldNotLogAnythingWhenVersionParametrizedInParentPomPropertiesIsCorrectTest() {

checkVersionFromMaven(PARAMETRIZED_CHILD_POM);

assertThat(getLogsForThread(listAppender)).hasSize(0);
}

@Test
public void shouldLogWrongParametrizedVersionOfLibraryTest() {

checkVersionFromMaven(PARAMETRIZED_WRONG_VERSION_POM);

assertThat(getLogsForThread(listAppender))
.hasSize(1)
.element(0)
.isEqualTo(WRONG_VERSION_MESSAGE);
}

@Test
public void shouldLogMessageWhenWrongFileWasPassedTest() {

checkVersionFromMaven(PATH_TO_TEST_FOLDER + "dummy_resource.json");

assertThat(getLogsForThread(listAppender))
.hasSize(1)
.element(0)
.isEqualTo(FAILED_TO_READ_MESSAGE);
}

private List<String> getLogsForThread(ListAppender<ILoggingEvent> listAppender) {

return listAppender.list.stream()
.filter(event -> Objects.equals(event.getThreadName(), Thread.currentThread().getName()))
.map(ILoggingEvent::getMessage)
.collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package org.fluentlenium.utils;

import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.junit.Before;
import org.junit.Test;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import static org.assertj.core.api.Assertions.assertThat;
import static org.fluentlenium.utils.SeleniumVersionChecker.checkModelForParametrizedValue;
import static org.fluentlenium.utils.SeleniumVersionChecker.retrieveVersionFromPom;

public class SeleniumVersionCheckerRetrieveVersionTest extends SeleniumVersionCheckerTestConstants {

private MavenXpp3Reader reader;

@Before
public void init() {
reader = new MavenXpp3Reader();
}

@Test
public void retrieveGoodVersionShouldReturnTrueTest() throws IOException, XmlPullParserException {

File file = new File(PARENT_POM);

Model model = reader.read(new FileReader(file));

String actualVersion = retrieveVersionFromPom(model);

assertThat(actualVersion).isEqualTo(EXPECTED_VERSION);
}

@Test
public void retrieveGoodVersionFromPomPropertiesShouldReturnTrueTest() throws IOException, XmlPullParserException {

File file = new File(PARAMETRIZED_POM);

Model model = reader.read(new FileReader(file));

String parametrizedVersion = retrieveVersionFromPom(model);
String actualVersion = checkModelForParametrizedValue(parametrizedVersion, model);

assertThat(actualVersion).isEqualTo(EXPECTED_VERSION);
}

@Test
public void retrieveBadVersionShouldReturnFalseTest() throws IOException, XmlPullParserException {

File file = new File(WRONG_VERSION_POM);

Model model = reader.read(new FileReader(file));

String actualVersion = retrieveVersionFromPom(model);

assertThat(actualVersion).isNotEqualTo(EXPECTED_VERSION);
}

@Test
public void retrieveVersionShouldReturnNullWhenVersionNotPresentTest() throws IOException, XmlPullParserException {

File file = new File(CHILD_POM);

Model model = reader.read(new FileReader(file));

String actualVersion = retrieveVersionFromPom(model);

assertThat(actualVersion).isNull();
}

}
Loading

0 comments on commit 9e07e96

Please sign in to comment.