/** * This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details. */ package edu.illinois.codingspectator.monitor.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.eclipse.core.runtime.CoreException; import org.junit.BeforeClass; import org.junit.Test; import org.tmatesoft.svn.core.SVNException; import edu.illinois.codingspectator.efs.EFSFile; import edu.illinois.codingspectator.monitor.ui.submission.Submitter; import edu.illinois.codingspectator.monitor.ui.submission.Submitter.AuthenticanResult; import edu.illinois.codingspectator.monitor.ui.submission.Submitter.InitializationException; import edu.illinois.codingspectator.monitor.ui.submission.Submitter.SubmissionException; /** * * @author Mohsen Vakilian * */ public class TestSubmitterWithConflicts { private static MockSubmitterFactory submitterFactory; @BeforeClass public static void setUpBeforeClass() throws Exception { submitterFactory= new MockSubmitterFactory(); } @Test public void shouldSubmitOutdatedWorkingCopy() throws SubmissionException, InitializationException, SVNException, CoreException { modifyLog(); submit(); long initialRevisionNumber= submitterFactory.getFileRevisionNumber(); modifyLog(); assertFalse(submitterFactory.getSubmitter().doLocalAndRemoteDataMatch()); submit(); assertEquals(initialRevisionNumber + 2, submitterFactory.getFileRevisionNumber()); } @Test public void shouldSubmitConflictedWorkingCopy() throws SubmissionException, InitializationException, SVNException, CoreException { modifyLog(); submit(); long initialRevisionNumber= submitterFactory.getFileRevisionNumber(); modifyLog(); submitterFactory.getSVNManager().doUpdate(); assertTrue(submitterFactory.getSubmitter().doLocalAndRemoteDataMatch()); submit(); assertEquals(initialRevisionNumber + 2, submitterFactory.getFileRevisionNumber()); } private void modifyLog() throws CoreException { cleanWatchedFolder(); makeWatchedFolderOutdated(); submitterFactory.modifyFileInWatchedFolder(); } private void submit() throws InitializationException, SubmissionException { AuthenticanResult authenticanResult= submitterFactory.getSubmitter().authenticate(); assertEquals(MockSubmitterFactory.UUID, submitterFactory.getSubmitter().getUUID()); assertEquals(AuthenticanResult.OK, authenticanResult); submitterFactory.getSubmitter().submit(); } private void makeWatchedFolderOutdated() throws CoreException { EFSFile outdatedWatchedFolder= new EFSFile("outdated-watched-folder"); EFSFile watchedFolder= new EFSFile(Submitter.WATCHED_FOLDER); outdatedWatchedFolder.copyTo(watchedFolder); } private void cleanWatchedFolder() throws CoreException { new EFSFile(Submitter.WATCHED_FOLDER).delete(); } }