package hudson.plugins.clearcase.ucm;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import hudson.plugins.clearcase.Baseline;
import hudson.plugins.clearcase.ClearTool;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.junit.Before;
import org.junit.Test;
public class UcmCommonTest {
private Mockery context;
private ClearTool cleartool;
@Before
public void setUp() {
context = new JUnit4Mockery();
cleartool = context.mock(ClearTool.class);
}
@Test
public void testGenerateLoadRulesFromBaselinesOneBaseline() throws Exception {
context.checking(new Expectations() {
{
one(cleartool).describe("%[root_dir]p\\n", "component:comp1@\\pvob"); will(returnValue(new StringReader("/vob/comp1")));
}
});
assertTrue(UcmCommon.generateLoadRulesFromBaselines(cleartool, "mystream", null) == null);
List<Baseline> baselines = new ArrayList<Baseline>();
baselines.add(new Baseline("bl1@\\pvob", "comp1@\\pvob"));
String[] loadRules = UcmCommon.generateLoadRulesFromBaselines(cleartool, "mystream", baselines);
assertTrue(loadRules.length == 1);
assertEquals("vob/comp1", loadRules[0]);
}
@Test
public void testGenerateLoadRulesFromBaselinesMultiBaseline() throws Exception {
context.checking(new Expectations() {
{
one(cleartool).describe("%[root_dir]p\\n", "component:comp1@\\pvob"); will(returnValue(new StringReader("/vob/comp1")));
one(cleartool).describe("%[root_dir]p\\n", "component:comp2@\\otherpvob"); will(returnValue(new StringReader("/othervob/comp2")));
}
});
assertTrue(UcmCommon.generateLoadRulesFromBaselines(cleartool, "mystream", null) == null);
List<Baseline> baselines = new ArrayList<Baseline>();
baselines.add(new Baseline("bl1@\\pvob", "comp1@\\pvob"));
baselines.add(new Baseline("bl2@\\otherpvob", "comp2@\\otherpvob"));
String[] loadRules = UcmCommon.generateLoadRulesFromBaselines(cleartool, "mystream", baselines);
assertTrue(loadRules.length == 2);
assertEquals("vob/comp1", loadRules[0]);
assertEquals("othervob/comp2", loadRules[1]);
}
}