JAL-1740 updated synch codes to use a git repo rather than FTP
[jalview.git] / test / jalview / io / BioJsHTMLOutputTest.java
index cbda794..3e94aa9 100644 (file)
 package jalview.io;
 
-import jalview.datamodel.Alignment;
-import jalview.datamodel.Sequence;
+import jalview.json.binding.v1.BioJSReleasePojo;
+import jalview.json.binding.v1.BioJSRepositoryPojo;
 
+import java.io.File;
 import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.TreeMap;
 
+import org.junit.Assert;
 import org.junit.Test;
 
-import com.json.JSONException;
 
 public class BioJsHTMLOutputTest
 {
 
-
   @Test
   public void getJalviewAlignmentAsJsonString()
   {
-    BioJsHTMLOutput bioJsHtmlOuput = new BioJsHTMLOutput(null, null);
-    bioJsHtmlOuput.setGlobalColorScheme("Zappo");
-
-    Sequence[] seqs = new Sequence[1];
-    Sequence seq = new Sequence("name", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1, 26);
-    // SequenceFeature seqFeature = new SequenceFeature("type", "desc",
-    // "status", 1, 5, "jalview");
-    // seq.addSequenceFeature(seqFeature);
-    seq.setDatasetSequence(seq);
-    seqs[0] = seq;
-
-    Alignment al = new Alignment(seqs);
+    BioJsHTMLOutput bioJsHtmlOutput = new BioJsHTMLOutput(null, null);
+    String bjsTemplate = null;
     try
     {
-      String generatedJson = bioJsHtmlOuput
-              .getJalviewAlignmentAsJsonString(al);
-      assert (generatedJson
-              .equalsIgnoreCase("{\"globalColorScheme\":\"zappo\",\"seqs\":[{\"id\":\"1\",\"start\":1,\"name\":\"name/1-26\",\"features\":[],\"seq\":\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\"end\":26}]}"));
-      System.out.println("Output : " + generatedJson);
+      bioJsHtmlOutput.updateBioJS();
+      bjsTemplate = BioJsHTMLOutput.getBioJsTemplateAsString();
+      // System.out.println(bjsTemplate);
     } catch (IOException e)
     {
       e.printStackTrace();
-    } catch (JSONException e)
+    }
+    Assert.assertNotNull(bjsTemplate);
+  }
+
+  @Test(expected = NullPointerException.class)
+  public void expectedNullPointerException()
+  {
+    BioJsHTMLOutput bjs = new BioJsHTMLOutput(null, null);
+    try
+    {
+      bjs.refreshBioJSVersionsInfo(null);
+    } catch (URISyntaxException e)
     {
+      Assert.fail("Expception occured while testing!");
       e.printStackTrace();
     }
   }
 
+  @Test
+  public void getBioJsMSAVersions()
+  {
+    BioJsHTMLOutput bjs = new BioJsHTMLOutput(null, null);
+    TreeMap<String, File> versions = null;
+    try
+    {
+      bjs.refreshBioJSVersionsInfo(BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY);
+      versions = BioJsHTMLOutput.getBioJsMSAVersions();
+    } catch (URISyntaxException e)
+    {
+      Assert.fail("Expception occured while testing!");
+      e.printStackTrace();
+    }
+    Assert.assertNotNull("No versions found", versions);
+    Assert.assertTrue("One or more Templates required", versions.size() > 0);
+    System.out
+            .println("Number of discovered versions : "
+            + versions.size());
+    for (String v : versions.keySet())
+    {
+      System.out.println("version : " + v);
+      System.out.println("File : " + versions.get(v));
+    }
+
+    System.out.println("\nCurrent latest version : "
+            + BioJsHTMLOutput.getCurrentBJSTemplateFile());
+    Assert.assertNotNull("Latest BioJsMSA version NOT found!",
+            BioJsHTMLOutput.getCurrentBJSTemplateFile());
+
+  }
+
+  @Test
+  public void testBioJsUpdate()
+  {
+    String url = BioJsHTMLOutput.BJS_TEMPLATE_GIT_REPO;
+    Assert.assertTrue("URL not reacable : " + url, urlIsReachable(url));
+    String response = BioJsHTMLOutput.getURLContentAsString(url);
+    Assert.assertNotNull("Null response read from url!", response);
+    BioJSRepositoryPojo repository = new BioJSRepositoryPojo(response);
+    System.out.println(">>> description : " + repository.getDescription());
+    System.out
+.println(">>> latest version : "
+            + repository.getLatestReleaseVersion());
+    System.out.println(">>> repo count : "
+            + repository.getReleases().size());
+    for (BioJSReleasePojo release : repository.getReleases())
+    {
+      System.out.println("repo type : " + release.getType());
+      System.out.println("url : " + release.getUrl());
+      System.out.println("release version : " + release.getVersion());
+    }
+  }
+
+  private static boolean urlIsReachable(String urlString)
+  {
+    try
+    {
+      final URL url = new URL(urlString);
+      final URLConnection conn = url.openConnection();
+      conn.connect();
+      return true;
+    } catch (MalformedURLException e)
+    {
+      throw new RuntimeException(e);
+    } catch (IOException e)
+    {
+      return false;
+    }
+  }
 }