changeset 543:a157a25fd3af

extract matcher
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Wed, 06 Feb 2013 19:23:46 +0400
parents 0f06e0e10540
children 4ff88460fb5d
files mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ModificationDataMatcher.java
diffstat 2 files changed, 61 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Wed Feb 06 17:03:41 2013 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Wed Feb 06 19:23:46 2013 +0400
@@ -34,6 +34,7 @@
 
 import static com.intellij.openapi.util.io.FileUtil.*;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport;
+import static jetbrains.buildServer.buildTriggers.vcs.mercurial.ModificationDataMatcher.modificationData;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.buildPatch;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository;
 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot;
@@ -567,10 +568,10 @@
             RepositoryStateData.createVersionState("default", map("default", "505c5b9d01e6", "personal-branch", "96b78d73081d")),
             CheckoutRules.DEFAULT);
     assertEquals(changes.size(), 4);
-    assertThat(changes, hasItem(withVersion("dec47d2d49bf")));
-    assertThat(changes, hasItem(withVersion("78e67807f916")));
-    assertThat(changes, hasItem(withVersion("96b78d73081d")));
-    assertThat(changes, hasItem(withVersion("505c5b9d01e6")));
+    assertThat(changes, hasItem(modificationData().withVersion("dec47d2d49bf")));
+    assertThat(changes, hasItem(modificationData().withVersion("78e67807f916")));
+    assertThat(changes, hasItem(modificationData().withVersion("96b78d73081d")));
+    assertThat(changes, hasItem(modificationData().withVersion("505c5b9d01e6")));
   }
 
 
@@ -581,37 +582,14 @@
             RepositoryStateData.createVersionState("default", map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298")),
             CheckoutRules.DEFAULT);
     assertEquals(changes.size(), 8);
-    assertThat(changes, hasItem(withVersion("9ec402c74298")));
-    assertThat(changes, hasItem(withVersion("505c5b9d01e6")));
-    assertThat(changes, hasItem(withVersion("96b78d73081d")));
-    assertThat(changes, hasItem(withVersion("78e67807f916")));
-    assertThat(changes, hasItem(withVersion("dec47d2d49bf")));
-    assertThat(changes, hasItem(withVersion("1e620196c4b6")));
-    assertThat(changes, hasItem(withVersion("48177654181c")));
-    assertThat(changes, hasItem(withVersion("fc524efc2bc4")));
-  }
-
-
-  private ModificationDataVersionMatcher withVersion(@NotNull String version) {
-    return new ModificationDataVersionMatcher(version);
-  }
-
-  class ModificationDataVersionMatcher extends TypeSafeMatcher<ModificationData> {
-
-    private final String myVersion;
-
-    public ModificationDataVersionMatcher(@NotNull String version) {
-      myVersion = version;
-    }
-
-    @Override
-    public boolean matchesSafely(ModificationData m) {
-      return myVersion.equals(m.getVersion());
-    }
-
-    public void describeTo(Description description) {
-      description.appendText("modification with version").appendValue(myVersion);
-    }
+    assertThat(changes, hasItem(modificationData().withVersion("9ec402c74298")));
+    assertThat(changes, hasItem(modificationData().withVersion("505c5b9d01e6")));
+    assertThat(changes, hasItem(modificationData().withVersion("96b78d73081d")));
+    assertThat(changes, hasItem(modificationData().withVersion("78e67807f916")));
+    assertThat(changes, hasItem(modificationData().withVersion("dec47d2d49bf")));
+    assertThat(changes, hasItem(modificationData().withVersion("1e620196c4b6")));
+    assertThat(changes, hasItem(modificationData().withVersion("48177654181c")));
+    assertThat(changes, hasItem(modificationData().withVersion("fc524efc2bc4")));
   }
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ModificationDataMatcher.java	Wed Feb 06 19:23:46 2013 +0400
@@ -0,0 +1,48 @@
+package jetbrains.buildServer.buildTriggers.vcs.mercurial;
+
+import jetbrains.buildServer.vcs.ModificationData;
+import org.hamcrest.Description;
+import org.hamcrest.TypeSafeMatcher;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static jetbrains.buildServer.util.Util.map;
+
+public class ModificationDataMatcher extends TypeSafeMatcher<ModificationData> {
+
+  private String myVersion;
+  private Map<String, String> myVcsRootProperties = new HashMap<String, String>();
+
+  @Override
+  public boolean matchesSafely(ModificationData m) {
+    if (myVersion != null && !myVersion.equals(m.getDisplayVersion()))
+      return false;
+    if (!myVcsRootProperties.isEmpty() && !myVcsRootProperties.equals(m.getVcsRootObject().getProperties()))
+      return false;
+    return true;
+  }
+
+  public void describeTo(Description description) {
+    description.appendText("modification");
+    if (myVersion != null)
+      description.appendText(" with version ").appendValue(myVersion);
+    if (!myVcsRootProperties.isEmpty())
+      description.appendText(" with vcs root properties ").appendValue(myVcsRootProperties);
+  }
+
+  public static ModificationDataMatcher modificationData() {
+    return new ModificationDataMatcher();
+  }
+
+  public ModificationDataMatcher withVersion(@NotNull String version) {
+    myVersion = version;
+    return this;
+  }
+
+  public ModificationDataMatcher withVcsRootProperties(Map<String, String> properties) {
+    myVcsRootProperties.putAll(properties);
+    return this;
+  }
+}