@@ -0,0 +1,2410 @@
+package uk.ac.ebi.atlas.experimentpage;%0A%0Aimport org.junit.Before;%0Aimport org.junit.Test;%0Aimport org.junit.runner.RunWith;%0Aimport org.springframework.beans.factory.annotation.Autowired;%0Aimport org.springframework.http.MediaType;%0Aimport org.springframework.test.context.ContextConfiguration;%0Aimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;%0Aimport org.springframework.test.context.web.WebAppConfiguration;%0Aimport org.springframework.test.web.servlet.MockMvc;%0Aimport org.springframework.test.web.servlet.setup.MockMvcBuilders;%0Aimport org.springframework.web.context.WebApplicationContext;%0A%0Aimport java.util.concurrent.ThreadLocalRandom;%0A%0Aimport static org.hamcrest.Matchers.greaterThan;%0Aimport static org.hamcrest.Matchers.hasSize;%0Aimport static org.hamcrest.Matchers.is;%0Aimport static org.hamcrest.Matchers.isA;%0Aimport static org.hamcrest.Matchers.isOneOf;%0Aimport static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;%0Aimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;%0Aimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;%0Aimport static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;%0A%0A@RunWith(SpringJUnit4ClassRunner.class)%0A@WebAppConfiguration%0A@ContextConfiguration(locations = %7B%22classpath:applicationContext.xml%22, %22/dispatcher-servlet.xml%22%7D)%0Apublic class JsonSingleCellExperimentControllerWIT %7B%0A    @Autowired%0A    WebApplicationContext wac;%0A%0A    MockMvc mockMvc;%0A%0A    @Before%0A    public void setUp() %7B%0A        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();%0A    %7D%0A%0A    @Test%0A    public void blah() throws Exception %7B%0A        int k = ThreadLocalRandom.current().nextInt(2, 11);%0A%0A        this.mockMvc%0A                .perform(get(%22/json/experiments/E-MTAB-4388/tsneplot/5/clusters/%22 + k + %22/expression/ENSFOOBAR%22))%0A                .andExpect(status().isOk())%0A                .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))%0A                .andExpect(jsonPath(%22$.min%22, isA(Double.class)))%0A                .andExpect(jsonPath(%22$.min%22, is(greaterThan(0.0))))%0A                .andExpect(jsonPath(%22$.max%22, isA(Double.class)))%0A                .andExpect(jsonPath(%22$.max%22, is(greaterThan(0.0))))%0A                .andExpect(jsonPath(%22$.unit%22, isOneOf(%22TPM%22)))%0A                .andExpect(jsonPath(%22$.series%22, hasSize(k)));%0A    %7D%0A%7D

Add E2E test for the SC JSON payload controller