瀏覽代碼

mock the persistent store with jmock

John Lees-Miller 11 年之前
父節點
當前提交
318e11deeb
共有 1 個文件被更改,包括 17 次插入 和 34 次删除
  1. 17 34
      services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcherTest.java

+ 17 - 34
services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/data/model/ResourceFetcherTest.java

@@ -7,6 +7,9 @@ import static org.mockserver.model.HttpResponse.response;
 
 import org.eclipse.jgit.lib.*;
 import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
+import org.jmock.Expectations;
+import org.jmock.Mockery;
+import org.hamcrest.TypeSafeMatcher;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -33,6 +36,8 @@ public class ResourceFetcherTest {
     public void fetchesFilesThatAreMissingFromUrlStoreCache() throws IOException {
         final String testProjectName = "123abc";
         final String testUrl = "http://localhost:" + mockServerRule.getHttpPort() + "/123abc";
+        final String oldTestPath = "testPath";
+        final String newTestPath = "missingPath";
 
         mockServerClient.when(
             request()
@@ -45,47 +50,25 @@ public class ResourceFetcherTest {
             .withBody("content")
         );
 
-        final PersistentStore persistentStore = new PersistentStore() {
-            @Override
-            public List<String> getProjectNames() {
-                return null;
-            }
+        final Mockery context = new Mockery();
+        final PersistentStore persistentStore = context.mock(PersistentStore.class);
+        context.checking(new Expectations() {{
+            // It should fetch the file once it finds it is missing.
+            oneOf(persistentStore).getPathForURLInProject(testProjectName, testUrl);
+            will(returnValue(oldTestPath));
 
-            @Override
-            public void setLatestVersionForProject(String project, int versionID) {
-
-            }
-
-            @Override
-            public int getLatestVersionForProject(String project) {
-                return 0;
-            }
-
-            @Override
-            public void addURLIndexForProject(String projectName, String url, String path) {
-
-            }
-
-            @Override
-            public void deleteFilesForProject(String project, String... files) {
-
-            }
-
-            @Override
-            public String getPathForURLInProject(String projectName, String url) {
-                assertEquals(testProjectName, projectName);
-                assertEquals(testUrl, url);
-                return "missingPath";
-            }
-        };
+            // It should update the URL index store once it has fetched; at present, it does not actually change the stored path.
+            oneOf(persistentStore).addURLIndexForProject(testProjectName, testUrl, oldTestPath);
+        }});
 
         ResourceFetcher resourceFetcher = new ResourceFetcher(persistentStore);
         TemporaryFolder repositoryFolder = new TemporaryFolder();
         repositoryFolder.create();
         Repository repository = new FileRepositoryBuilder().setWorkTree(repositoryFolder.getRoot()).build();
         Map<String, byte[]> fetchedUrls = new HashMap<String, byte[]>();
-        resourceFetcher.get(testProjectName, testUrl, "testPath", repository, fetchedUrls);
-                //     public RawFile get(String projectName, String url, String newPath, Repository repository, Map<String, byte[]> fetchedUrls) throws IOException {
+        resourceFetcher.get(testProjectName, testUrl, newTestPath, repository, fetchedUrls);
 
+        // We don't bother caching in this case, at present.
+        assertEquals(0, fetchedUrls.size());
     }
 }