Package com.github.ferstl.maven.pomenforcers

Source Code of com.github.ferstl.maven.pomenforcers.PedanticDependencyConfigurationEnforcerTest

package com.github.ferstl.maven.pomenforcers;

import java.util.Collections;

import org.junit.Test;

import com.github.ferstl.maven.pomenforcers.model.ArtifactModel;
import com.github.ferstl.maven.pomenforcers.model.DependencyModel;

import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

/**
* JUnit tests for {@link PedanticDependencyConfigurationEnforcer}.
*/
public class PedanticDependencyConfigurationEnforcerTest extends AbstractPedanticEnforcerTest<PedanticDependencyConfigurationEnforcer> {

  @Override
  PedanticDependencyConfigurationEnforcer createRule() {
    return new PedanticDependencyConfigurationEnforcer();
  }

  @Override
  @Test
  public void getDescription() {
    assertThat(this.testRule.getDescription(), equalTo(PedanticEnforcerRule.DEPENDENCY_CONFIGURATION));
  }

  @Override
  @Test
  public void accept() {
    PedanticEnforcerVisitor visitor = mock(PedanticEnforcerVisitor.class);
    this.testRule.accept(visitor);

    verify(visitor).visit(this.testRule);
  }

  @Test
  public void defaultSettingsCorrect() {
    this.projectModel.getDependencies().add(createDependency(false, false));

    executeRuleAndCheckReport(false);
  }

  @Test
  public void allowedProjectVersion1() {
    DependencyModel dependency = createDependency(false, false);
    when(dependency.getVersion()).thenReturn("${project.version}");
    this.projectModel.getDependencies().add(dependency);

    executeRuleAndCheckReport(false);
  }

  @Test
  public void allowedProjectVersion2() {
    DependencyModel dependency = createDependency(false, false);
    when(dependency.getVersion()).thenReturn("${version}");
    this.projectModel.getDependencies().add(dependency);

    executeRuleAndCheckReport(false);
  }

  @Test
  public void forbiddenProjectVersion() {
    this.testRule.setAllowUnmanagedProjectVersions(false);
    DependencyModel dependency = createDependency(false, false);
    when(dependency.getVersion()).thenReturn("${project.version}");
    this.projectModel.getDependencies().add(dependency);

    executeRuleAndCheckReport(true);
  }

  @Test
  public void forbiddenManagedExclusion() {
    this.projectModel.getDependencies().add(createDependency(false, true));

    executeRuleAndCheckReport(true);
  }

  @Test
  public void allowedManagedExclusion() {
    this.testRule.setManageExclusions(false);
    this.projectModel.getDependencies().add(createDependency(false, true));

    executeRuleAndCheckReport(false);
  }

  @Test
  public void forbiddenVersion() {
    this.projectModel.getDependencies().add(createDependency(true, false));

    executeRuleAndCheckReport(true);
  }

  @Test
  public void allowedVersion() {
    this.testRule.setManageVersions(false);
    this.projectModel.getDependencies().add(createDependency(true, false));

    executeRuleAndCheckReport(false);
  }

  private DependencyModel createDependency(boolean withVersion, boolean withExclusion) {
    DependencyModel dependency = mock(DependencyModel.class);

    if (withVersion) {
      when(dependency.getVersion()).thenReturn("1.0");
    }

    if (withExclusion) {
      when(dependency.getExclusions()).thenReturn(Collections.singletonList(new ArtifactModel("a.b.c", "a")));
    }

    return dependency;
  }
}
TOP

Related Classes of com.github.ferstl.maven.pomenforcers.PedanticDependencyConfigurationEnforcerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.