@Before
  public void init() throws IOException {
    final Map<String, Object> atrMap = new HashMap<String, Object>();
    atrMap.put("helper", writerFactory);

    underTest = new CsvStreamView();
    underTest.setAttributesMap(atrMap);
    underTest.setUrl("activityReport");

    given(response.getWriter()).willReturn(sourceWriter);
    given(writerFactory.getWriter(sourceWriter)).willReturn(writer);
  }
  @Test
  public void shouldLoadFilledModel() throws Exception {
    // GIVEN a filled data model
    final Map<String, Object> modelData = createFilledModel();
    // Some static data is changed at this moment, so need to reset the extractors list
    ReportColumnsExtractorHelper.reset();

    // WHEN asking the view to render the model contents
    underTest.renderMergedOutputModel(modelData, mock(HttpServletRequest.class), response);

    // THEN the resulting CSV contains the expected data
    verify(writer).write("\"Header\",\"Header NG\",\"H\",\"Header\"\n");
    verify(writer).write("\"str\",\"\",\"2\",\"\"\n");
    verify(writer).flush();
  }
  @Test
  public void shouldLoadEmptyModel() throws Exception {
    // GIVEN a data model (empty in our case)
    final Map<String, Object> modelData = createEmptyModel();

    // WHEN asking the view to render the model contents
    underTest.renderMergedOutputModel(modelData, mock(HttpServletRequest.class), response);

    // THEN the response sets the correct MIME type
    verify(response).setContentType("text/csv");
    verify(response).setHeader("Content-Disposition", "attachment; filename=activityReport.csv");

    // AND returns an empty closed stream
    verify(sourceWriter).close();
  }