/*
* Tanaguru - Automated webpage assessment
* Copyright (C) 2008-2015 Tanaguru.org
*
* This file is part of Tanaguru.
*
* Tanaguru is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Contact us by mail: tanaguru AT tanaguru DOT org
*/
package org.tanaguru.service.command;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.easymock.EasyMock;
import org.tanaguru.entity.audit.AuditStatus;
import org.tanaguru.entity.audit.Content;
import org.tanaguru.entity.subject.Page;
import org.tanaguru.entity.subject.Site;
import org.tanaguru.service.ContentLoaderService;
/**
*
* @author jkowalczyk
*/
public class UploadAuditCommandImplTest extends AuditCommandTestCase {
private ContentLoaderService mockContentLoaderService;
private Map<String, String> fileMap;
public UploadAuditCommandImplTest(String testName) {
super(testName);
}
@Override
protected void setUp() throws Exception {
super.setUp();
fileMap = new HashMap<String, String>();
mockContentLoaderService = EasyMock.createMock(ContentLoaderService.class);
mockConstructorCalls();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
/**
* Test of init method, of class UploadAuditCommandImpl.
*/
public void testInit() {
System.out.println("init");
mockInitialisationCalls(true, AuditStatus.CONTENT_LOADING);
getInstance();
setVerifyMode();
}
/**
* Test of loadContent method, of class UploadAuditCommandImpl.
*/
public void testLoadContent1() {
System.out.println("LoadContent with 1 file");
mockInitialisationCalls(false, AuditStatus.CONTENT_LOADING);
fileMap.put("My File Name", "MyFileContent");
EasyMock.expect(mockAudit.getStatus()).andReturn(AuditStatus.CONTENT_LOADING).once();
Page mockPage = EasyMock.createMock(Page.class);
EasyMock.expect(mockWebResourceDataService.createPage("My File Name"))
.andReturn(mockPage)
.once();
mockPage.setAudit(mockAudit);
EasyMock.expectLastCall().once();
EasyMock.expect(mockWebResourceDataService.saveOrUpdate(mockPage))
.andReturn(mockPage)
.once();
mockAudit.setSubject(mockPage);
EasyMock.expectLastCall().once();
EasyMock.expect(mockAudit.getSubject()).
andReturn(mockPage).
once();
EasyMock.expect(mockContentLoaderService.loadContent(mockPage, fileMap))
.andReturn(new ArrayList<Content>())
.once();
mockAudit.setStatus(AuditStatus.CONTENT_ADAPTING);
EasyMock.expectLastCall().once();
EasyMock.expect(mockAuditDataService.saveOrUpdate(mockAudit))
.andReturn(mockAudit)
.once();
EasyMock.replay(mockPage);
setReplayMode();
UploadAuditCommandImpl instance = getInstance();
instance.loadContent();
EasyMock.verify(mockPage);
setVerifyMode();
}
/**
* Test of loadContent method, of class UploadAuditCommandImpl.
*/
public void testLoadContent2() {
System.out.println("LoadContent with several file");
mockInitialisationCalls(false, AuditStatus.CONTENT_LOADING);
fileMap.put("file:///MyFileName1", "MyFileContent1");
fileMap.put("file:///MyFileName2", "MyFileContent2");
EasyMock.expect(mockAudit.getStatus()).andReturn(AuditStatus.CONTENT_LOADING).once();
Site mockSite = EasyMock.createMock(Site.class);
Page mockPage1 = EasyMock.createMock(Page.class);
Page mockPage2 = EasyMock.createMock(Page.class);
EasyMock.expect(mockWebResourceDataService.createSite("file:///MyFileName1"))
.andReturn(mockSite)
.once();
EasyMock.expect(mockWebResourceDataService.createPage("file:///MyFileName1"))
.andReturn(mockPage1)
.once();
EasyMock.expect(mockWebResourceDataService.createPage("file:///MyFileName2"))
.andReturn(mockPage2)
.once();
mockSite.addChild(mockPage1);
EasyMock.expectLastCall().once();
mockSite.addChild(mockPage2);
EasyMock.expectLastCall().once();
mockSite.setAudit(mockAudit);
EasyMock.expectLastCall().once();
EasyMock.expect(mockWebResourceDataService.saveOrUpdate(mockSite))
.andReturn(mockSite)
.times(2);
EasyMock.expect(mockWebResourceDataService.saveOrUpdate(mockPage1))
.andReturn(mockSite)
.once();
EasyMock.expect(mockWebResourceDataService.saveOrUpdate(mockPage2))
.andReturn(mockSite)
.once();
mockAudit.setSubject(mockSite);
EasyMock.expectLastCall().once();
EasyMock.expect(mockAudit.getSubject()).
andReturn(mockSite).
once();
EasyMock.expect(mockContentLoaderService.loadContent(mockSite, fileMap))
.andReturn(new ArrayList<Content>())
.once();
mockAudit.setStatus(AuditStatus.CONTENT_ADAPTING);
EasyMock.expectLastCall().once();
EasyMock.expect(mockAuditDataService.saveOrUpdate(mockAudit))
.andReturn(mockAudit)
.once();
EasyMock.replay(mockSite);
EasyMock.replay(mockPage1);
EasyMock.replay(mockPage2);
setReplayMode();
UploadAuditCommandImpl instance = getInstance();
instance.loadContent();
EasyMock.verify(mockSite);
EasyMock.verify(mockPage1);
EasyMock.verify(mockPage2);
setVerifyMode();
}
/**
*
* @param fileMap
* @param paramSet
* @return
*/
private UploadAuditCommandImpl getInstance() {
UploadAuditCommandImpl instance = new UploadAuditCommandImpl(
fileMap,
null,
mockAuditDataService);
instance.setTestDataService(mockTestDataService);
instance.setParameterDataService(mockParameterDataService);
instance.setWebResourceDataService(mockWebResourceDataService);
instance.setContentDataService(mockContentDataService);
instance.setProcessResultDataService(mockProcessResultDataService);
instance.setPreProcessResultDataService(mockPreProcessResultDataService);
instance.setContentAdapterService(mockContentAdapterService);
instance.setProcessorService(mockProcessorService);
instance.setConsolidatorService(mockConsolidatorService);
instance.setAnalyserService(mockAnalyserService);
instance.setAdaptationListener(mockAdaptationListener);
instance.setContentLoaderService(mockContentLoaderService);
instance.setAdaptationTreatmentWindow(5);
instance.setProcessingTreatmentWindow(5);
instance.setConsolidationTreatmentWindow(5);
instance.setAnalyseTreatmentWindow(5);
instance.init();
return instance;
}
@Override
protected void setReplayModeOfLocalMocks() {
EasyMock.replay(mockContentLoaderService);
}
@Override
protected void setVerifyModeOfLocalMocks() {
EasyMock.verify(mockContentLoaderService);
}
}