001/* 002 * Copyright 2015 DuraSpace, Inc. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.fcrepo.http.commons.api.rdf; 017 018import static com.google.common.collect.ImmutableBiMap.of; 019import static com.hp.hpl.jena.graph.NodeFactory.createURI; 020import static com.hp.hpl.jena.rdf.model.ModelFactory.createDefaultModel; 021import static org.junit.Assert.assertTrue; 022import static org.mockito.Matchers.eq; 023import static org.mockito.Mockito.verify; 024import static org.mockito.Mockito.when; 025import java.util.Map; 026 027import javax.ws.rs.core.UriInfo; 028 029import org.fcrepo.kernel.api.identifiers.IdentifierConverter; 030import org.fcrepo.kernel.api.models.FedoraResource; 031import org.fcrepo.kernel.api.rdf.DefaultRdfStream; 032import org.fcrepo.kernel.api.RdfStream; 033import org.fcrepo.kernel.modeshape.FedoraResourceImpl; 034import org.junit.Before; 035import org.junit.Test; 036import org.junit.runner.RunWith; 037import org.mockito.Mock; 038import org.mockito.runners.MockitoJUnitRunner; 039import org.springframework.context.ApplicationContext; 040 041import com.hp.hpl.jena.rdf.model.Resource; 042 043/** 044 * <p>HttpTripleUtilTest class.</p> 045 * 046 * @author awoods 047 */ 048@RunWith(MockitoJUnitRunner.class) 049public class HttpTripleUtilTest { 050 051 private HttpTripleUtil testObj; 052 053 054 @Mock 055 private UriInfo mockUriInfo; 056 057 @Mock 058 private IdentifierConverter<Resource,FedoraResource> mockSubjects; 059 060 @Mock 061 private UriAwareResourceModelFactory mockBean1; 062 063 @Mock 064 private UriAwareResourceModelFactory mockBean2; 065 066 @Mock 067 private ApplicationContext mockContext; 068 069 @Mock 070 private FedoraResourceImpl mockResource; 071 072 @Before 073 public void setUp() { 074 testObj = new HttpTripleUtil(); 075 testObj.setApplicationContext(mockContext); 076 } 077 078 @Test 079 public void shouldAddTriplesFromRegisteredBeans() { 080 final Map<String, UriAwareResourceModelFactory> mockBeans = of("doesnt", mockBean1, "matter", mockBean2); 081 when(mockContext.getBeansOfType(UriAwareResourceModelFactory.class)).thenReturn(mockBeans); 082 when(mockBean1.createModelForResource(eq(mockResource), eq(mockUriInfo), eq(mockSubjects))).thenReturn( 083 createDefaultModel()); 084 when(mockBean2.createModelForResource(eq(mockResource), eq(mockUriInfo), eq(mockSubjects))).thenReturn( 085 createDefaultModel()); 086 087 try (final RdfStream rdfStream = new DefaultRdfStream(createURI("info:subject"))) { 088 089 assertTrue(testObj.addHttpComponentModelsForResourceToStream(rdfStream, mockResource, mockUriInfo, 090 mockSubjects).count() >= 0); 091 092 verify(mockBean1).createModelForResource(eq(mockResource), eq(mockUriInfo), eq(mockSubjects)); 093 verify(mockBean2).createModelForResource(eq(mockResource), eq(mockUriInfo), eq(mockSubjects)); 094 } 095 } 096}