    @Test
    public void testZipFile() throws Exception {

        MassConvertController controller = new MassConvertController();
        BatchDao batchDao = mock(BatchDao.class);
//        when(batchDao.findBatchPath(anyString(), anyString())).thenAnswer(new Answer<String>() {
//            @Override
//            public String answer(InvocationOnMock invocation) throws Throwable {
//                return createTestFile((String) invocation.getArguments()[0], (String) invocation.getArguments()[1]);
//            }
//        });
        when(batchDao.findBatchPath(anyString(), anyString())).thenReturn(null);

        controller.batchDao = batchDao;

        UrlDao urlDao = mock(UrlDao.class);
        when(urlDao.findUrlInfo("http://flibusta.net/b/123/fb2")).thenAnswer(new Answer<UrlInfo>() {
            @Override
            public UrlInfo answer(InvocationOnMock invocation) throws Throwable {
                UrlInfo info = new UrlInfo();
                info.setBookId("123");
                info.setSourceFormat("epub");
                return info;
            }
        });
        when(urlDao.findUrlInfo("http://flibusta.net/b/345/fb2?t=def")).thenAnswer(new Answer<UrlInfo>() {
            @Override
            public UrlInfo answer(InvocationOnMock invocation) throws Throwable {
                UrlInfo info = new UrlInfo();
                info.setBookId("345");
                info.setSourceFormat("epub");
                return info;
            }
        });

        controller.urlDao = urlDao;


        BookDao bookDao = mock(BookDao.class);
        when(bookDao.findBook("123", "epub")).thenReturn(null);
        File testFile = createTestFile("345", "epub");
        when(bookDao.findBook("345", "epub")).thenReturn(testFile);

        controller.bookDao = bookDao;

        controller.singleConverterController = new SingleUrlConverter() {
            @Override
            public void convert(String sourceUrl, String sourceMd5, String outputFormat, String sourceFormat, HttpServletResponse response) throws Exception {

            }
        };

        controller.convert("123;abc;dd_345;def", "http://flibusta.net/b/{0}/fb2?t={1}", "epub",
                new HttpServletResponse() {
            @Override
            public void addCookie(Cookie cookie) {

            }

            @Override
            public boolean containsHeader(String name) {
                return false;
            }

            @Override
            public String encodeURL(String url) {
                return null;
            }

            @Override
            public String encodeRedirectURL(String url) {
                return null;
            }

            @Override
            public String encodeUrl(String url) {
                return null;
            }

            @Override
            public String encodeRedirectUrl(String url) {
                return null;
            }

            @Override
            public void sendError(int sc, String msg) throws IOException {

            }

            @Override
            public void sendError(int sc) throws IOException {

            }

            @Override
            public void sendRedirect(String location) throws IOException {
                System.out.println("location = " + location);
            }

            @Override
            public void setDateHeader(String name, long date) {

            }

            @Override
            public void addDateHeader(String name, long date) {

            }

            @Override
            public void setHeader(String name, String value) {

            }

            @Override
            public void addHeader(String name, String value) {

            }

            @Override
            public void setIntHeader(String name, int value) {

            }

            @Override
            public void addIntHeader(String name, int value) {

            }

            @Override
            public void setStatus(int sc) {

            }

            @Override
            public void setStatus(int sc, String sm) {

            }

            @Override
            public String getCharacterEncoding() {
                return null;
            }

            @Override
            public String getContentType() {
                return null;
            }

            @Override
            public ServletOutputStream getOutputStream() throws IOException {
                return null;
            }

            @Override
            public PrintWriter getWriter() throws IOException {
                return null;
            }

            @Override
            public void setCharacterEncoding(String charset) {

            }

            @Override
            public void setContentLength(int len) {

            }

            @Override
            public void setContentType(String type) {

            }

            @Override
            public void setBufferSize(int size) {

            }

            @Override
            public int getBufferSize() {
                return 0;
            }

            @Override
            public void flushBuffer() throws IOException {

            }

            @Override
            public void resetBuffer() {

            }

            @Override
            public boolean isCommitted() {
                return false;
            }

            @Override
            public void reset() {

            }

            @Override
            public void setLocale(Locale loc) {

            }

            @Override
            public Locale getLocale() {
                return null;
            }
        });


    }