Skip to content

Commit

Permalink
merge PowerMockito support
Browse files Browse the repository at this point in the history
  • Loading branch information
barmintor committed Apr 1, 2013
2 parents fcca6d2 + 2c44278 commit 6093d02
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 4 deletions.
5 changes: 2 additions & 3 deletions fcrepo-kernel/src/main/java/org/fcrepo/Datastream.java
Expand Up @@ -6,6 +6,7 @@
import static org.fcrepo.services.PathService.getDatastreamJcrNodePath;
import static org.fcrepo.services.RepositoryService.metrics;
import static org.fcrepo.services.ServiceHelpers.getNodePropertySize;
import static org.fcrepo.utils.FedoraTypesUtils.getBinary;
import static org.fcrepo.utils.FedoraTypesUtils.map;
import static org.fcrepo.utils.FedoraTypesUtils.value2string;
import static org.modeshape.jcr.api.JcrConstants.JCR_CONTENT;
Expand Down Expand Up @@ -126,9 +127,7 @@ public void setContent(InputStream content, String checksumType,
* implement this public interface, so feel free to cast the values to
* gain access to the additional methods."
*/
Binary binary =
(Binary) node.getSession().getValueFactory().createBinary(
content);
Binary binary = (Binary) getBinary(node, content);

/*
* This next line of code deserves explanation. If we chose for the
Expand Down
25 changes: 25 additions & 0 deletions fcrepo-kernel/src/main/java/org/fcrepo/utils/FedoraTypesUtils.java
Expand Up @@ -7,11 +7,15 @@
import static org.fcrepo.utils.FedoraJcrTypes.FEDORA_OBJECT;
import static org.fcrepo.utils.FedoraJcrTypes.FEDORA_OWNED;

import java.io.InputStream;
import java.util.Collection;

import javax.jcr.Binary;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.UnsupportedRepositoryOperationException;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.nodetype.NodeType;

import com.google.common.base.Function;
Expand Down Expand Up @@ -103,6 +107,27 @@ public String apply(Value v) {
}
}
};

public static Function<Node, ValueFactory> getValueFactory =
new Function<Node, ValueFactory>() {
@Override
public ValueFactory apply(Node n) {
try {
return n.getSession().getValueFactory();
} catch (RepositoryException e) {
throw new IllegalStateException(e);
}
}
};

public static Binary getBinary(Node n, InputStream i) {
try {
return n.getSession().getValueFactory().createBinary(i);
} catch (RepositoryException e) {
throw new IllegalStateException(e);
}
}


/**
* Convenience method for transforming collections into
Expand Down
13 changes: 12 additions & 1 deletion fcrepo-kernel/src/test/java/org/fcrepo/DatastreamTest.java
Expand Up @@ -34,12 +34,20 @@
import org.apache.tika.io.IOUtils;
import org.fcrepo.exception.InvalidChecksumException;
import org.fcrepo.utils.FedoraJcrTypes;
import org.fcrepo.utils.FedoraTypesUtils;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest( { FedoraTypesUtils.class })
public class DatastreamTest implements FedoraJcrTypes {

String testPid = "testObj";
Expand Down Expand Up @@ -99,12 +107,15 @@ public void testGetContent() throws RepositoryException, IOException {

@Test
public void testSetContent() throws RepositoryException, InvalidChecksumException {
org.modeshape.jcr.api.Binary mockBin = mock(org.modeshape.jcr.api.Binary.class);
PowerMockito.mockStatic(FedoraTypesUtils.class);
when(FedoraTypesUtils.getBinary(any(Node.class), any(InputStream.class)))
.thenReturn(mockBin);
InputStream content = mock(InputStream.class);
Node mockContent = getContentNodeMock(8);
when(mockDsNode.getNode(JCR_CONTENT)).thenReturn(mockContent);
ValueFactory mockVF = mock(ValueFactory.class);
when(mockSession.getValueFactory()).thenReturn(mockVF);
org.modeshape.jcr.api.Binary mockBin = mock(org.modeshape.jcr.api.Binary.class);
when(mockVF.createBinary(any(InputStream.class))).thenReturn(mockBin);
Property mockSize = mock(Property.class);
when(mockContent.setProperty(JCR_DATA, mockBin)).thenReturn(mockSize);
Expand Down
23 changes: 23 additions & 0 deletions pom.xml
Expand Up @@ -35,6 +35,7 @@

<!-- https://github.com/github/maven-plugins/blob/master/README.md -->
<github.global.server>github</github.global.server>
<powermock.version>1.5</powermock.version>
</properties>

<modules>
Expand Down Expand Up @@ -207,6 +208,16 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

Expand Down Expand Up @@ -685,4 +696,16 @@
</developer>
</developers>

<dependencies>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

0 comments on commit 6093d02

Please sign in to comment.