X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fio%2FBioJsHTMLOutputTest.java;h=5c776f6e66e0db8a8db701def5b317cbef940372;hb=c19d2a91ca05e052e3408bf5852d88eb5d0608f1;hp=694419f65ca0259da3bc1c2fcd9ab72166b6eae8;hpb=7c9ed2475bfb426d786ba6e80d1965ebb74d518e;p=jalview.git diff --git a/test/jalview/io/BioJsHTMLOutputTest.java b/test/jalview/io/BioJsHTMLOutputTest.java index 694419f..5c776f6 100644 --- a/test/jalview/io/BioJsHTMLOutputTest.java +++ b/test/jalview/io/BioJsHTMLOutputTest.java @@ -1,96 +1,151 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2) + * Copyright (C) 2015 The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.io; -import jalview.datamodel.Alignment; -import jalview.datamodel.Sequence; +import jalview.json.binding.biojs.BioJSReleasePojo; +import jalview.json.binding.biojs.BioJSRepositoryPojo; +import java.io.File; import java.io.IOException; -import java.util.Iterator; +import java.net.MalformedURLException; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLConnection; +import java.util.TreeMap; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; -import org.json.simple.parser.ParseException; -import org.junit.Assert; -import org.junit.Test; - -import com.json.JSONException; +import org.testng.Assert; +import org.testng.AssertJUnit; +import org.testng.annotations.Test; public class BioJsHTMLOutputTest { - - @Test + @Test(groups = { "Functional" }) 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); + String bjsTemplate = null; try { + BioJsHTMLOutput.updateBioJS(); + try + { + // allow the update some three seconds to complete before getting latest + // version of BioJS template + Thread.sleep(1000 * 3); + } catch (InterruptedException e) + { + e.printStackTrace(); + } + bjsTemplate = BioJsHTMLOutput.getBioJsTemplateAsString(); + // System.out.println(bjsTemplate); + } catch (IOException e) + { + e.printStackTrace(); + } + Assert.assertNotNull(bjsTemplate); + } - JSONParser jsonParser = new JSONParser(); - String actualJsonString = bioJsHtmlOuput - .getJalviewAlignmentAsJsonString(al); - - JSONObject actualJsonObj = (JSONObject) jsonParser.parse(actualJsonString); - - System.out.println("Output : " + actualJsonString); - Assert.assertTrue(actualJsonObj.get("globalColorScheme") != null); - Assert.assertTrue((actualJsonObj.get("globalColorScheme").toString()).equals("zappo")); - - Assert.assertTrue(actualJsonObj.get("webStartUrl") != null); - Assert.assertTrue((actualJsonObj.get("webStartUrl").toString()) - .equals("http://www.jalview.org/services/launchApp")); - - JSONArray actualSeqJsonObj = (JSONArray) actualJsonObj.get("seqs"); - Assert.assertTrue(actualSeqJsonObj != null); - Assert.assertTrue(actualSeqJsonObj.size() == 1); - - @SuppressWarnings("unchecked") - Iterator jsonIter = actualSeqJsonObj.iterator(); - JSONObject jsonSeq = jsonIter.next(); - Assert.assertTrue(jsonSeq != null); - - Assert.assertTrue(jsonSeq.get("name") != null); - Assert.assertTrue((jsonSeq.get("name").toString()) - .equals("name/1-26")); - - Assert.assertTrue(jsonSeq.get("seq") != null); - Assert.assertTrue((jsonSeq.get("seq").toString()) - .equals("ABCDEFGHIJKLMNOPQRSTUVWXYZ")); - - Assert.assertTrue(jsonSeq.get("id") != null); - Assert.assertTrue((jsonSeq.get("id").toString()).equals("1")); + @Test( + groups = { "Functional" }, + expectedExceptions = NullPointerException.class) + public void expectedNullPointerException() + { + try + { + BioJsHTMLOutput.refreshBioJSVersionsInfo(null); + } catch (URISyntaxException e) + { + AssertJUnit.fail("Expception occured while testing!"); + e.printStackTrace(); + } + } - Assert.assertTrue(jsonSeq.get("start") != null); - Assert.assertTrue((jsonSeq.get("start").toString()).equals("1")); + @Test(groups = { "Functional" }) + public void getBioJsMSAVersions() + { + TreeMap versions = null; + try + { + BioJsHTMLOutput + .refreshBioJSVersionsInfo(BioJsHTMLOutput.BJS_TEMPLATES_LOCAL_DIRECTORY); + versions = BioJsHTMLOutput.getBioJsMSAVersions(); + } catch (URISyntaxException e) + { + AssertJUnit.fail("Expception occured while testing!"); + e.printStackTrace(); + } + AssertJUnit.assertNotNull("No versions found", versions); + AssertJUnit.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)); + } - Assert.assertTrue(jsonSeq.get("end") != null); - Assert.assertTrue((jsonSeq.get("end").toString()).equals("26")); + System.out.println("\nCurrent latest version : " + + BioJsHTMLOutput.getCurrentBJSTemplateFile()); + AssertJUnit.assertNotNull("Latest BioJsMSA version NOT found!", + BioJsHTMLOutput.getCurrentBJSTemplateFile()); - Assert.assertTrue(jsonSeq.get("features") != null); - Assert.assertTrue(jsonSeq.get("features").toString().equals("[]")); + } + @Test(groups = { "Network" }) + public void testBioJsUpdate() + { + String url = BioJsHTMLOutput.BJS_TEMPLATE_GIT_REPO; + AssertJUnit + .assertTrue("URL not reacable : " + url, urlIsReachable(url)); + String response = BioJsHTMLOutput.getURLContentAsString(url); + AssertJUnit.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()); + } + } - } catch (IOException e) + private static boolean urlIsReachable(String urlString) + { + try { - e.printStackTrace(); - } catch (JSONException e) + final URL url = new URL(urlString); + final URLConnection conn = url.openConnection(); + conn.connect(); + return true; + } catch (MalformedURLException e) { - e.printStackTrace(); - } catch (ParseException e) + throw new RuntimeException(e); + } catch (IOException e) { - e.printStackTrace(); + return false; } } - }