1
2
3
4
5
6
7
8
9
10
11 package psiprobe.controllers;
12
13 import static org.junit.jupiter.api.Assertions.assertEquals;
14 import static org.junit.jupiter.api.Assertions.assertNull;
15 import static org.junit.jupiter.api.Assertions.assertTrue;
16
17 import com.codebox.bean.JavaBeanTester;
18
19 import org.jfree.data.xy.DefaultTableXYDataset;
20 import org.jfree.data.xy.XYSeries;
21 import org.junit.jupiter.api.Test;
22 import org.springframework.context.support.StaticApplicationContext;
23 import org.springframework.mock.web.MockHttpServletRequest;
24 import org.springframework.mock.web.MockHttpServletResponse;
25 import org.springframework.test.util.ReflectionTestUtils;
26
27 import psiprobe.beans.stats.providers.SeriesProvider;
28 import psiprobe.model.stats.StatsCollection;
29
30
31
32
33 class RenderChartControllerTest {
34
35 public static class TestSeriesProvider implements SeriesProvider {
36
37 @Override
38 public void populate(DefaultTableXYDataset dataset, StatsCollection statsCollection,
39 jakarta.servlet.http.HttpServletRequest request) {
40 XYSeries series = new XYSeries("series-1", true, false);
41 series.add(1L, 2L);
42 dataset.addSeries(series);
43 }
44 }
45
46 public static class NotASeriesProvider {
47
48 }
49
50
51
52
53 @Test
54 void javabeanTester() {
55 JavaBeanTester.builder(RenderChartController.class)
56 .skip("applicationContext", "supportedMethods").test();
57 }
58
59 @Test
60 void handleRequestRendersLineChartFromSeriesProvider() throws Exception {
61 RenderChartController controller = new RenderChartController();
62 ReflectionTestUtils.setField(controller, "statsCollection", new StatsCollection());
63
64 StaticApplicationContext applicationContext = new StaticApplicationContext();
65 applicationContext.registerSingleton("seriesProvider", TestSeriesProvider.class);
66 controller.setApplicationContext(applicationContext);
67
68 MockHttpServletRequest request = new MockHttpServletRequest("GET", "/chart.png");
69 request.addParameter("ct", "line");
70 request.addParameter("p", "seriesProvider");
71 request.addParameter("xz", "320");
72 request.addParameter("yz", "200");
73
74 MockHttpServletResponse response = new MockHttpServletResponse();
75
76 assertNull(controller.handleRequest(request, response));
77 assertEquals("image/png", response.getHeader("Content-type"));
78 assertTrue(response.getContentAsByteArray().length > 0);
79 }
80
81 @Test
82 void handleRequestRendersChartWhenProviderBeanDoesNotImplementSeriesProvider() throws Exception {
83 RenderChartController controller = new RenderChartController();
84 ReflectionTestUtils.setField(controller, "statsCollection", new StatsCollection());
85
86 StaticApplicationContext applicationContext = new StaticApplicationContext();
87 applicationContext.registerSingleton("badProvider", NotASeriesProvider.class);
88 controller.setApplicationContext(applicationContext);
89
90 MockHttpServletRequest request = new MockHttpServletRequest("GET", "/chart.png");
91 request.addParameter("ct", "area");
92 request.addParameter("p", "badProvider");
93
94 MockHttpServletResponse response = new MockHttpServletResponse();
95
96 assertNull(controller.handleRequest(request, response));
97 assertEquals("image/png", response.getHeader("Content-type"));
98 assertTrue(response.getContentAsByteArray().length > 0);
99 }
100
101 }