package com.justrelease;
import com.github.zafarkhaja.semver.Version;
import com.justrelease.config.NPMProjectConfig;
import com.justrelease.config.ReleaseConfig;
import com.justrelease.git.GitOperations;
import com.justrelease.git.GithubRepo;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.File;
import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class ReleaseConfigNpmTest {
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-npm"));
GitOperations.initializeLocalRepository(githubRepo);
releaseConfig = new ReleaseConfig(githubRepo, true, null, "patch");
}
@Test
public void testProjectType() {
assertTrue(releaseConfig.getConfig() instanceof NPMProjectConfig);
}
@Test
public void testReleaseVersion() {
Version.Builder builder = new Version.Builder(releaseConfig.getConfig().getCurrentVersion());
String releaseVersion = releaseConfig.getConfig().getReleaseVersion();
assertEquals(releaseVersion, builder.build().incrementPatchVersion().getNormalVersion());
}
@Test
public void testNextVersion() {
assertEquals(releaseConfig.getConfig().getNextVersion(), releaseConfig.getConfig().getReleaseVersion());
}
@Test
public void testIsDryRun() {
assertTrue(releaseConfig.isDryRun());
}
@Test
public void testArtifactCommands() {
assertEquals(releaseConfig.getConfig().getArtifactCommands().get(0), "npm install");
}
//also this test checks ${version} replace functionality.
@Test
public void testCommitMessageIncludesVersion() {
assertTrue(releaseConfig.getConfig().getCommitMessage().contains(releaseConfig.getConfig().getReleaseVersion()));
}
}