@Test
  public void testGetVariablesEmptyList() {
    ServerBridge bridge = mock(ServerBridge.class);
    when(bridge.get("datasources/a/variables")).thenReturn("[]");

    ApiClient api = new ApiClient("abc");
    api.setServerBridge(bridge);

    Map<String, Object> raw = new HashMap<String, Object>();
    raw.put("id", "a");
    raw.put("name", "MyDS");

    DataSource dataSource = new DataSource(raw, api);
    Variable[] variables = dataSource.getVariables();

    verify(bridge).get("datasources/a/variables");
    assertEquals(0, variables.length);
  }
  @Test
  public void testGetVariablesThreeVariables() {
    ServerBridge bridge = mock(ServerBridge.class);
    when(bridge.get("datasources/a/variables"))
        .thenReturn(
            "["
                + "{'id': 'a', 'name': 'A', 'unit': 'unitA', 'icon': 'iconA'},"
                + "{'id': 'b', 'name': 'B', 'unit': 'unitB', 'icon': 'iconB'},"
                + "{'id': 'c', 'name': 'C', 'unit': 'unitC', 'icon': 'iconC'}"
                + "]");

    ApiClient api = new ApiClient("abc");
    api.setServerBridge(bridge);

    Map<String, Object> raw = new HashMap<String, Object>();
    raw.put("id", "a");
    raw.put("name", "MyDS");

    DataSource dataSource = new DataSource(raw, api);
    Variable[] variables = dataSource.getVariables();

    verify(bridge).get("datasources/a/variables");
    assertEquals(3, variables.length);

    // Check IDs
    assertEquals("a", variables[0].getId());
    assertEquals("b", variables[1].getId());
    assertEquals("c", variables[2].getId());

    // Check names
    assertEquals("A", variables[0].getName());
    assertEquals("B", variables[1].getName());
    assertEquals("C", variables[2].getName());

    // Check units
    assertEquals("unitA", variables[0].getUnit());
    assertEquals("unitB", variables[1].getUnit());
    assertEquals("unitC", variables[2].getUnit());

    // Check icons
    assertEquals("iconA", variables[0].getIcon());
    assertEquals("iconB", variables[1].getIcon());
    assertEquals("iconC", variables[2].getIcon());
  }