package org.jfrog.build.api.builder;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.jfrog.build.api.release.Promotion;
import org.testng.annotations.Test;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import static org.testng.Assert.*;
/**
* @author Noam Y. Tenne
*/
@Test
public class PromotionBuilderTest {
public void testDefaultValues() {
Promotion promotion = new PromotionBuilder().build();
assertNull(promotion.getStatus(), "Unexpected default status.");
assertNull(promotion.getComment(), "Unexpected default comment.");
assertNull(promotion.getCiUser(), "Unexpected default ci user.");
assertNull(promotion.getTimestamp(), "Unexpected default timestamp.");
assertFalse(promotion.isDryRun(), "Unexpected default dry run state.");
assertNull(promotion.getTargetRepo(), "Unexpected default target repo.");
assertNull(promotion.getSourceRepo(), "Unexpected default source repo.");
assertFalse(promotion.isCopy(), "Unexpected default copy state.");
assertTrue(promotion.isArtifacts(), "Unexpected default artifacts state.");
assertFalse(promotion.isDependencies(), "Unexpected default dependencies state.");
assertNull(promotion.getScopes(), "Unexpected default scopes.");
assertNull(promotion.getProperties(), "Unexpected default properties.");
assertTrue(promotion.isFailFast(), "Unexpected default fail-fast state.");
}
public void testNormalValues() {
Set<String> scopes = Sets.newHashSet();
Map<String, Collection<String>> properties = Maps.newHashMap();
Promotion promotion = new PromotionBuilder().status(Promotion.ROLLED_BACK).comment("comment").ciUser("ciUser").
timestamp("timestamp").dryRun(true).targetRepo("targetRepo").sourceRepo("sourceRepo").copy(false).
artifacts(true).dependencies(false).scopes(scopes).properties(properties).failFast(false).build();
assertEquals(promotion.getStatus(), Promotion.ROLLED_BACK, "Unexpected status.");
assertEquals(promotion.getComment(), "comment", "Unexpected comment.");
assertEquals(promotion.getCiUser(), "ciUser", "Unexpected ci user.");
assertEquals(promotion.getTimestamp(), "timestamp", "Unexpected timestamp.");
assertTrue(promotion.isDryRun(), "Unexpected dry run state.");
assertEquals(promotion.getTargetRepo(), "targetRepo", "Unexpected target repo.");
assertEquals(promotion.getSourceRepo(), "sourceRepo", "Unexpected source repo.");
assertFalse(promotion.isCopy(), "Unexpected copy state.");
assertTrue(promotion.isArtifacts(), "Unexpected artifacts state.");
assertFalse(promotion.isDependencies(), "Unexpected dependencies state.");
assertEquals(promotion.getScopes(), scopes, "Unexpected scopes.");
assertEquals(promotion.getProperties(), properties, "Unexpected properties.");
assertFalse(promotion.isFailFast(), "Unexpected fail-fast state.");
}
public void testAddScopesAndPropertiesToEmptyDefaults() {
Promotion build = new PromotionBuilder().addProperty("momo", "popo").addScope("koko").build();
Map<String, Collection<String>> properties = build.getProperties();
Set<String> scopes = build.getScopes();
assertNotNull(properties, "Properties multimap should have been created.");
assertNotNull(scopes, "Scope set should have been created.");
assertFalse(properties.isEmpty(), "Added properties should have been added.");
assertFalse(scopes.isEmpty(), "Added scopes should have been added.");
assertEquals(properties.get("momo").iterator().next(), "popo", "Unexpected properties value.");
assertTrue(scopes.contains("koko"), "Unable to find expected scopes value.");
}
public void testAddScopesAndPropertiesToExistingCollections() {
Set<String> initialScopes = Sets.newHashSet("koko");
Map<String, Collection<String>> initialProperties = Maps.newHashMap();
initialProperties.put("momo", Sets.<String>newHashSet("popo"));
Promotion build = new PromotionBuilder().properties(initialProperties).addProperty("jojo", "lolo").
scopes(initialScopes).addScope("bobo").build();
Map<String, Collection<String>> properties = build.getProperties();
Set<String> scopes = build.getScopes();
assertNotNull(properties, "Properties multimap should have been created.");
assertNotNull(scopes, "Scope set should have been created.");
assertFalse(properties.isEmpty(), "Added properties should have been added.");
assertFalse(scopes.isEmpty(), "Added scopes should have been added.");
assertEquals(properties.get("momo").iterator().next(), "popo", "Unexpected properties value.");
assertEquals(properties.get("jojo").iterator().next(), "lolo", "Unexpected properties value.");
assertTrue(scopes.contains("koko"), "Unable to find expected scopes value.");
assertTrue(scopes.contains("bobo"), "Unable to find expected scopes value.");
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullDateForTimestamp() {
new PromotionBuilder().timestampDate(null);
}
}