Skip to content

Commit

Permalink
Add RegExJobFilter config roundtrip test
Browse files Browse the repository at this point in the history
  • Loading branch information
svenschoenung committed Sep 11, 2018
1 parent cc2a0a5 commit edc6b8b
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 5 deletions.
33 changes: 30 additions & 3 deletions src/test/java/hudson/views/AbstractHudsonTest.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package hudson.views;

import hudson.model.Descriptor;
import hudson.model.FreeStyleProject;
import hudson.model.ListView;
import hudson.model.TopLevelItem;
import hudson.util.DescribableList;

import java.io.IOException;
Expand All @@ -18,7 +20,7 @@
public abstract class AbstractHudsonTest {

@Rule
public JenkinsRule j = new JenkinsRule();
public JenkinsRule j = new JenkinsRule();

public void setUp() throws Exception {
// create some jobs
Expand All @@ -31,12 +33,37 @@ public void setUp() throws Exception {

private void addRegexView(String name, String regex) throws IOException {
ListView v = new ListView(name);
DescribableList<ViewJobFilter, Descriptor<ViewJobFilter>> filters =
(DescribableList<ViewJobFilter, Descriptor<ViewJobFilter>>) v.getJobFilters();
DescribableList<ViewJobFilter, Descriptor<ViewJobFilter>> filters = v.getJobFilters();
RegExJobFilter regexFilter = new RegExJobFilter(regex,
AbstractIncludeExcludeJobFilter.IncludeExcludeType.includeMatched.toString(),
RegExJobFilter.ValueType.NAME.toString());
filters.add(regexFilter);
j.getInstance().addView(v);
}

protected ListView createFilteredView(String name, ViewJobFilter... filters) throws IOException {
ListView view = new ListView(name, j.getInstance());
for (ViewJobFilter filter: filters) {
view.getJobFilters().add(filter);
}
j.getInstance().addView(view);
return view;
}

protected ListView createListView(String name, TopLevelItem... items) throws IOException {
ListView view = new ListView(name, j.getInstance().getItemGroup());
for (TopLevelItem item: items) {
view.add(item);
}
j.getInstance().addView(view);
return view;
}

protected FreeStyleProject createFreeStyleProject(String name) throws IOException {
return j.createFreeStyleProject(name);
}

protected TopLevelItem getItem(String name) {
return j.getInstance().getItem(name);
}
}
60 changes: 58 additions & 2 deletions src/test/java/hudson/views/RegExJobFilterTest.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package hudson.views;

import hudson.matrix.MatrixProject;
import hudson.maven.MavenModuleSet;
import hudson.model.*;

import hudson.views.test.JobMocker;
import hudson.views.test.JobType;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

import static org.hamcrest.Matchers.*;
import static hudson.views.AbstractIncludeExcludeJobFilter.IncludeExcludeType.*;
import static hudson.views.RegExJobFilter.ValueType.*;
import static hudson.views.test.JobMocker.jobOf;
import static hudson.views.test.JobType.*;
import static org.junit.Assert.*;
Expand Down Expand Up @@ -248,4 +252,56 @@ public void testNode() {
}
}

@Test
public void testConfigRoundtrip() throws Exception {
testConfigRoundtrip(
"regex-view-1",
new RegExJobFilter("NaMeRegEx", excludeMatched.name(), NAME.name())
);

testConfigRoundtrip(
"regex-view-2",
new RegExJobFilter("DeScriptionRegEx", excludeMatched.name(), DESCRIPTION.name()),
new RegExJobFilter("EmailRegEx", includeUnmatched.name(), EMAIL.name())
);

testConfigRoundtrip(
"regex-view-3",
new RegExJobFilter("MavenRegEx", excludeUnmatched.name(), MAVEN.name()),
new RegExJobFilter("NodeRegEx", excludeMatched.name(), NODE.name()),
new RegExJobFilter("ScmRegEx", excludeMatched.name(), SCM.name())
);
}

private void testConfigRoundtrip(String viewName, RegExJobFilter... filters) throws Exception {
List<RegExJobFilter> expectedFilters = new ArrayList<RegExJobFilter>();
for (RegExJobFilter filter: filters) {
expectedFilters.add(new RegExJobFilter(filter.getRegex(), filter.getIncludeExcludeTypeString(), filter.getValueTypeString()));
}

ListView view = createFilteredView(viewName, filters);
j.configRoundtrip(view);

ListView viewAfterRoundtrip = (ListView)j.getInstance().getView(viewName);
assertFilterEquals(expectedFilters, viewAfterRoundtrip.getJobFilters());

viewAfterRoundtrip.save();
j.getInstance().reload();

ListView viewAfterReload = (ListView)j.getInstance().getView(viewName);
assertFilterEquals(expectedFilters, viewAfterReload.getJobFilters());
}

private void assertFilterEquals(List<RegExJobFilter> expectedFilters, List<ViewJobFilter> actualFilters) {
assertThat(actualFilters.size(), is(expectedFilters.size()));
for (int i = 0; i < actualFilters.size(); i++) {
ViewJobFilter actualFilter = actualFilters.get(i);
RegExJobFilter expectedFilter = expectedFilters.get(i);
assertThat(actualFilter, instanceOf(RegExJobFilter.class));
assertThat(((RegExJobFilter)actualFilter).getRegex(), is(expectedFilter.getRegex()));
assertThat(((RegExJobFilter)actualFilter).getIncludeExcludeTypeString(), is(expectedFilter.getIncludeExcludeTypeString()));
assertThat(((RegExJobFilter)actualFilter).getValueTypeString(), is(expectedFilter.getValueTypeString()));
}
}

}

0 comments on commit edc6b8b

Please sign in to comment.