/* * 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.rules.test; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import junit.framework.TestCase; import static org.easymock.EasyMock.*; import org.tanaguru.entity.audit.DefiniteResult; import org.tanaguru.entity.audit.ProcessRemark; import org.tanaguru.entity.audit.SSP; import org.tanaguru.entity.audit.TestSolution; import org.tanaguru.entity.reference.Test; import org.tanaguru.entity.service.audit.ProcessResultDataService; import org.tanaguru.entity.subject.WebResource; import org.tanaguru.processor.SSPHandler; import org.tanaguru.service.ProcessRemarkService; /** * This abstract test class is use to make tests on an url and not on files. * We use the EasyMock class to emulate (and mock) the interface implementation. * * @author alingua */ public abstract class AbstractUrlRuleImplementationTestCase extends TestCase { protected SSPHandler mockSspHandler; protected ProcessRemarkService mockProcessRemarkService; protected SSP mockSsp; protected ProcessRemark mockProcessRemark; protected WebResource mockWebResource; protected ProcessResultDataService mockProcessResultDataService; protected Test mockTest; protected DefiniteResult mockDefiniteResult; public AbstractUrlRuleImplementationTestCase(String testName) { super(testName); } @Override protected void tearDown() throws Exception { verify(mockSspHandler, mockSsp, mockProcessRemark, mockProcessRemarkService, mockWebResource, mockDefiniteResult, mockProcessResultDataService, mockTest); } /** * * Call this method to initialize the mock implementation. * * @param url * @param remarkMessage * @param solution */ protected void initMocks(String url, String remarkMessage, TestSolution solution) { mockSspHandler = createMock(SSPHandler.class); mockProcessRemarkService = createMock(ProcessRemarkService.class); mockSsp = createMock(SSP.class); mockProcessRemark = createMock(ProcessRemark.class); mockWebResource = createMock(WebResource.class); mockProcessResultDataService = createMock(ProcessResultDataService.class); mockTest = createMock(Test.class); mockDefiniteResult = createMock(DefiniteResult.class); expect(mockSspHandler.getProcessRemarkService()) .andReturn(mockProcessRemarkService).anyTimes(); mockProcessRemarkService.resetService(); expectLastCall(); expect(mockSspHandler.getSSP()).andReturn(mockSsp).anyTimes(); expect(mockSsp.getURI()).andReturn(url).anyTimes(); expect(mockSspHandler.getPage()).andReturn(mockWebResource); if (solution.equals(TestSolution.PASSED) || solution.equals(TestSolution.NOT_APPLICABLE)) { expect(mockProcessRemarkService.getRemarkList()) .andReturn(Collections.EMPTY_LIST); expect(mockProcessResultDataService.getDefiniteResult( mockTest, mockWebResource, solution, Collections.EMPTY_LIST)).andReturn(mockDefiniteResult); } else { mockProcessRemarkService.addProcessRemark(solution, remarkMessage); expectLastCall().once(); Collection<ProcessRemark> processRemarks = new HashSet<>(); processRemarks.add(mockProcessRemark); expect(mockProcessRemarkService.getRemarkList()) .andReturn(processRemarks).anyTimes(); expect(mockProcessResultDataService.getDefiniteResult( mockTest, mockWebResource, solution, processRemarks)).andReturn(mockDefiniteResult); } replay(mockSspHandler, mockSsp, mockProcessRemark, mockProcessRemarkService, mockWebResource, mockDefiniteResult, mockProcessResultDataService, mockTest); } }