001/**
002 * The contents of this file are subject to the license and copyright
003 * detailed in the LICENSE and NOTICE files at the root of the source
004 * tree.
005 *
006 */
007package org.fcrepo.migration.pidlist;
008
009import org.junit.After;
010import org.junit.Assert;
011import org.junit.Before;
012import org.junit.Test;
013
014import java.io.File;
015import java.util.Arrays;
016import java.util.List;
017
018/**
019 * Unit test class for ResumePidListManager
020 *
021 * @author awoods
022 * @since 2019-11-08
023 */
024public class ResumePidListManagerTest {
025
026    private ResumePidListManager manager;
027    private final String testDir = System.getProperty("test.output.dir");
028
029    private List<String> pidList;
030
031    @Before
032    public void setUp() {
033        // Test PIDs
034        pidList = Arrays.asList("pid:1", "pid:2", "pid:3", "pid:4");
035
036        System.out.println("test dir: " + testDir);
037
038        // Define directory in which to find resume-file.
039        manager = new ResumePidListManager(new File(testDir), false);
040    }
041
042    @After
043    public void tearDown() {
044        manager.reset();
045    }
046
047    @Test
048    public void accept() {
049        pidList.forEach(pid -> Assert.assertTrue(pid + " should be accepted", manager.accept(pid)));
050    }
051
052    @Test
053    public void acceptIncrementalRuns() {
054        Assert.assertTrue("pid:1 should be accepted", manager.accept("pid:1"));
055        Assert.assertTrue("pid:2 should be accepted", manager.accept("pid:2"));
056
057        // Simulate stopping the migration process... and start over
058        manager = new ResumePidListManager(new File(testDir), false);
059        Assert.assertFalse("pid:1 should NOT be accepted", manager.accept("pid:1"));
060        Assert.assertFalse("pid:2 should NOT be accepted", manager.accept("pid:2"));
061
062        // ..however, unprocessed PIDs should be "accepted"
063        Assert.assertTrue("pid:3 should be accepted", manager.accept("pid:3"));
064        Assert.assertTrue("pid:4 should be accepted", manager.accept("pid:4"));
065
066        // Starting over again... no PIDs should be accepted
067        manager = new ResumePidListManager(new File(testDir), false);
068        pidList.forEach(pid -> Assert.assertFalse(pid + " should NOT be accepted", manager.accept(pid)));
069    }
070
071    @Test
072    public void acceptAll() {
073        Assert.assertTrue("pid:1 should be accepted", manager.accept("pid:1"));
074        Assert.assertTrue("pid:2 should be accepted", manager.accept("pid:2"));
075
076        // Simulate stopping the migration process... and start over - but accept all
077        manager = new ResumePidListManager(new File(testDir), true);
078        Assert.assertTrue("pid:1 should be accepted", manager.accept("pid:1"));
079        Assert.assertTrue("pid:2 should be accepted", manager.accept("pid:2"));
080
081        // ..however, unprocessed PIDs should be "accepted" - accept all
082        Assert.assertTrue("pid:3 should be accepted", manager.accept("pid:3"));
083        Assert.assertTrue("pid:4 should be accepted", manager.accept("pid:4"));
084
085        // Starting over again... no PIDs should be accepted - but, accept all
086        manager = new ResumePidListManager(new File(testDir), true);
087        pidList.forEach(pid -> Assert.assertTrue(pid + " should be accepted", manager.accept(pid)));
088    }
089}