/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.xoai.tests.unit.services.impl;
import com.lyncode.builder.DateBuilder;
import com.lyncode.xoai.dataprovider.services.impl.BaseDateProvider;
import org.apache.solr.client.solrj.util.ClientUtils;
import org.dspace.xoai.services.api.database.CollectionsService;
import org.dspace.xoai.services.api.database.FieldResolver;
import org.dspace.xoai.services.api.database.HandleResolver;
import org.dspace.xoai.services.api.xoai.DSpaceFilterResolver;
import org.dspace.xoai.tests.DSpaceBasicTestConfiguration;
import org.dspace.xoai.tests.helpers.stubs.StubbedFieldResolver;
import org.junit.After;
import org.junit.Before;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.Date;
import static org.mockito.Mockito.mock;
public abstract class AbstractQueryResolverTest {
private final BaseDateProvider baseDateProvider = new BaseDateProvider();
protected HandleResolver handleResolver = mock(HandleResolver.class);
protected CollectionsService collectionsService = mock(CollectionsService.class);
private ApplicationContext applicationContext;
@Before
public void setUp () {
applicationContext = new AnnotationConfigApplicationContext(DSpaceBasicTestConfiguration.class);
}
@After
public void tearDown() {
//Nullify all resoruces so that JUnit cleans them up
applicationContext = null;
handleResolver = null;
collectionsService = null;
}
protected void autowire(Object obj) {
applicationContext.getAutowireCapableBeanFactory().autowireBean(obj);
}
protected DSpaceFilterResolver getFilterResolver() {
return applicationContext.getBean(DSpaceFilterResolver.class);
}
protected StubbedFieldResolver theFieldResolver () {
return (StubbedFieldResolver) applicationContext.getBean(FieldResolver.class);
}
protected String escapedFromDate(Date date) {
return ClientUtils.escapeQueryChars(baseDateProvider.format(new DateBuilder(date).setMinMilliseconds().build()).replace("Z", ".000Z"));
}
protected String escapedUntilDate(Date date) {
return ClientUtils.escapeQueryChars(baseDateProvider.format(new DateBuilder(date).setMaxMilliseconds().build()).replace("Z", ".999Z"));
}
}