package nl.hsac.fitnesse.fixture.util; import org.junit.Test; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; public class JsonHelperTest { private JsonHelper helper = new JsonHelper(); @Test public void testFormatNull() { assertNull(helper.format(null)); } @Test public void testFormatSimple() { assertEquals( "{\n" + " \"category\": \"reference\",\n" + " \"price\": 8.95\n" + "}", helper.format("{\"category\": \"reference\",\"price\": 8.95}")); } @Test public void testNullToMap() { assertNull(helper.jsonStringToMap(null)); } @Test public void testSimpleMap() { Map<String, Object> expected = new LinkedHashMap<>(); expected.put("category", "reference"); expected.put("price", 8.95); assertEquals(expected, helper.jsonStringToMap("{\"category\": \"reference\",\"price\": 8.95}")); } @Test public void testSortingOnString() { String h = helper.sort("{\n" + " \"extraKey\": 2,\n" + " \"parameters\": [\n" + " {\n" + " \"category\": \"reference\",\n" + " \"price\": 8.95\n" + " },\n" + " {\n" + " \"category\": \"areference\",\n" + " \"price\": 18.95\n" + " }\n" + " ]\n" + "}", "$.parameters", "$.category"); assertEquals("{\n" + " \"extraKey\": 2,\n" + " \"parameters\": [\n" + " {\n" + " \"category\": \"areference\",\n" + " \"price\": 18.95\n" + " },\n" + " {\n" + " \"category\": \"reference\",\n" + " \"price\": 8.95\n" + " }\n" + " ]\n" + "}", helper.format(h)); } @Test public void testSortingOnNumber() { String h = helper.sort("{\n" + " \"extraKey\": 2,\n" + " \"parameters\": [\n" + " {\n" + " \"category\": \"reference\",\n" + " \"price\": 8.95\n" + " },\n" + " {\n" + " \"category\": \"areference\",\n" + " \"price\": 18.95\n" + " }\n" + " ]\n" + "}", "$.parameters", "$.price"); assertEquals("{\n" + " \"extraKey\": 2,\n" + " \"parameters\": [\n" + " {\n" + " \"category\": \"reference\",\n" + " \"price\": 8.95\n" + " },\n" + " {\n" + " \"category\": \"areference\",\n" + " \"price\": 18.95\n" + " }\n" + " ]\n" + "}", helper.format(h)); } @Test public void testComplexMap() { Map<String, Object> mobileEmulation = new LinkedHashMap<>(); mobileEmulation.put("deviceName", "Google Nexus 5"); Map<String, Object> chromeOptions = new LinkedHashMap<>(); chromeOptions.put("mobileEmulation", mobileEmulation); Map<String, Object> expected = new LinkedHashMap<>(); expected.put("browserName", "chrome"); expected.put("chromeOptions", chromeOptions); assertEquals(expected, helper.jsonStringToMap("{\"browserName\":\"chrome\",\"chromeOptions\":{\"mobileEmulation\":{\"deviceName\":\"Google Nexus 5\"}}}")); } @Test public void testListedMap() { ArrayList<Object> listargs = new ArrayList<>(); listargs.add("start-maximized"); Map<String, Object> chromeOptions = new LinkedHashMap<>(); chromeOptions.put("args", listargs); Map<String, Object> expected = new LinkedHashMap<>(); expected.put("browserName", "chrome"); expected.put("chromeOptions", chromeOptions); assertEquals(expected, helper.jsonStringToMap("{\"browserName\":\"chrome\",\"chromeOptions\":{\"args\":[\"start-maximized\"]}}")); } }