package com.justrelease;
import com.github.zafarkhaja.semver.Version;
import com.justrelease.config.MavenProjectConfig;
import com.justrelease.config.ReleaseConfig;
import com.justrelease.git.GitOperations;
import com.justrelease.git.GithubRepo;
import junit.framework.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.File;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class ReleaseConfigMavenTest {
static GithubRepo githubRepo;
static ReleaseConfig releaseConfig;
@BeforeClass
public static void setup() throws Exception {
githubRepo = mock(GithubRepo.class);
when(githubRepo.getBranch()).thenReturn("master");
when(githubRepo.getFolderToExecute()).thenReturn(new File("release/test"));
when(githubRepo.getLocalDirectory()).thenReturn("release/test");
when(githubRepo.getRepoUrl()).thenReturn(String.format("https://github.com/justrelease/justrelease-sample-maven"));
GitOperations.initializeLocalRepository(githubRepo);
releaseConfig = new ReleaseConfig(githubRepo, true, null, "patch");
}
@Test
public void testProjectType() {
assertTrue(releaseConfig.getConfig() instanceof MavenProjectConfig);
}
@Test
public void testReleaseVersion() {
Version.Builder builder = new Version.Builder(releaseConfig.getConfig().getCurrentVersion());
String releaseVersion = releaseConfig.getConfig().getReleaseVersion();
assertEquals(releaseVersion, builder.build().getNormalVersion());
}
@Test
public void testNextVersion() {
assertNotNull(releaseConfig.getConfig().getNextVersion());
Assert.assertTrue(releaseConfig.getConfig().getNextVersion().contains("-SNAPSHOT"));
}
@Test
public void testIsDryRun() {
assertTrue(releaseConfig.isDryRun());
}
@Test
public void testArtifactCommands() {
assertEquals(releaseConfig.getConfig().getArtifactCommands().get(0), "mvn clean install");
}
//also this test checks ${version} replace functionality.
@Test
public void testCommitMessageIncludesVersion() {
assertTrue(releaseConfig.getConfig().getCommitMessage().contains(releaseConfig.getConfig().getReleaseVersion()));
}
@Test
public void testAttachment() {
assertEquals(releaseConfig.getConfig().getAttachment(), "target/hello-world-" + releaseConfig.getConfig().getReleaseVersion() + ".jar");
}
@Test
public void testDescriptionFileName() {
assertEquals(releaseConfig.getConfig().getDescription(), "releasenotes.md");
}
}