Package org.ebayopensource.nexus.plugins.artifactusage.event

Source Code of org.ebayopensource.nexus.plugins.artifactusage.event.TestArtifactUsageEventInspector

package org.ebayopensource.nexus.plugins.artifactusage.event;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.only;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
import junit.framework.TestCase;

import org.ebayopensource.nexus.plugins.artifactusage.task.ArtifactUsageCalculator;
import org.sonatype.nexus.proxy.events.NexusStartedEvent;
import org.sonatype.nexus.proxy.events.RepositoryItemEvent;
import org.sonatype.nexus.proxy.events.RepositoryItemEventCache;
import org.sonatype.nexus.proxy.events.RepositoryItemEventDelete;
import org.sonatype.nexus.proxy.events.RepositoryItemEventRetrieve;
import org.sonatype.nexus.proxy.events.RepositoryItemEventStore;
import org.sonatype.nexus.proxy.item.StorageFileItem;

public class TestArtifactUsageEventInspector extends TestCase {
  public void testAcceptsCorrectEventTypes() throws Exception {
    ArtifactUsageEventInspector eventInspector = new ArtifactUsageEventInspector();
    assertTrue(eventInspector.accepts(mock(RepositoryItemEventCache.class)));
    assertTrue(eventInspector
        .accepts(mock(RepositoryItemEventDelete.class)));
    assertTrue(eventInspector.accepts(mock(RepositoryItemEventStore.class)));
    assertFalse(eventInspector
        .accepts(mock(RepositoryItemEventRetrieve.class)));
    assertFalse(eventInspector.accepts(mock(NexusStartedEvent.class)));
  }

  public void testInspectInvalidEventType() throws Exception {
    ArtifactUsageEventInspector eventInspector = new ArtifactUsageEventInspector();
    ArtifactUsageCalculator calculator = mock(ArtifactUsageCalculator.class);
    eventInspector.setArtifactUsageCalculator(calculator);
    eventInspector.inspect(mock(RepositoryItemEventRetrieve.class));
    verifyZeroInteractions(calculator);
  }

  public void testInspectNewArtifactPomFile() throws Exception {
    testCreateEventWithPomFile(RepositoryItemEventCache.class);
    testCreateEventWithPomFile(RepositoryItemEventStore.class);
  }

  public void testInspectValidEventsWithJarFile() throws Exception {
    testEventWithJarFile(RepositoryItemEventCache.class);
    testEventWithJarFile(RepositoryItemEventStore.class);
    testEventWithJarFile(RepositoryItemEventDelete.class);
  }

  protected void testCreateEventWithPomFile(
      Class<? extends RepositoryItemEvent> eventClass) throws Exception {
    ArtifactUsageEventInspector eventInspector = new ArtifactUsageEventInspector();
    ArtifactUsageCalculator calculator = mock(ArtifactUsageCalculator.class);
    eventInspector.setArtifactUsageCalculator(calculator);
    StorageFileItem item = mock(StorageFileItem.class);
    when(item.getPath()).thenReturn("some.pom");
    RepositoryItemEvent event = mock(eventClass);
    when(event.getItem()).thenReturn(item);

    eventInspector.inspect(event);

    verify(calculator, only()).calculateArtifactUsage(item);
  }

  public void testRemoteEventWithPomFile() throws Exception {
    ArtifactUsageEventInspector eventInspector = new ArtifactUsageEventInspector();
    ArtifactUsageCalculator calculator = mock(ArtifactUsageCalculator.class);
    eventInspector.setArtifactUsageCalculator(calculator);
    StorageFileItem item = mock(StorageFileItem.class);
    when(item.getPath()).thenReturn("some.pom");
    RepositoryItemEvent event = mock(RepositoryItemEventDelete.class);
    when(event.getItem()).thenReturn(item);

    eventInspector.inspect(event);

    verify(calculator, only()).removeArtifactUsage(item);
  }

  protected void testEventWithJarFile(
      Class<? extends RepositoryItemEvent> eventClass) throws Exception {
    ArtifactUsageEventInspector eventInspector = new ArtifactUsageEventInspector();
    ArtifactUsageCalculator calculator = mock(ArtifactUsageCalculator.class);
    eventInspector.setArtifactUsageCalculator(calculator);
    StorageFileItem item = mock(StorageFileItem.class);
    when(item.getPath()).thenReturn("some.jar");
    RepositoryItemEvent event = mock(eventClass);
    when(event.getItem()).thenReturn(item);

    eventInspector.inspect(event);

    verifyZeroInteractions(calculator);
  }

}
TOP

Related Classes of org.ebayopensource.nexus.plugins.artifactusage.event.TestArtifactUsageEventInspector

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.