/*******************************************************************************
* Copyright (c) 2008, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.kernel.services.repository.internal;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import org.junit.Test;
import org.eclipse.virgo.kernel.services.repository.internal.RepositoryFactoryBean;
import org.eclipse.virgo.medic.test.eventlog.MockEventLogger;
import org.eclipse.virgo.repository.ArtifactBridge;
import org.eclipse.virgo.repository.Repository;
import org.eclipse.virgo.repository.RepositoryFactory;
/**
*/
public class RepositoryFactoryBeanTests {
private static MockEventLogger mockEventLogger = new MockEventLogger();
@Test
public void testCreateEmpty() throws Exception {
mockEventLogger.reinitialise();
Properties properties = new Properties();
RepositoryFactory factory = createMock(RepositoryFactory.class);
File work = new File("build");
RepositoryFactoryBean bean = new RepositoryFactoryBean(properties, mockEventLogger, factory, work, Collections.<ArtifactBridge>emptySet(), null);
Repository r = bean.getObject();
assertNotNull(r);
assertTrue("Event KS0001I was not logged.", mockEventLogger.isLogged("KS0001I"));
}
@SuppressWarnings("unchecked")
@Test
public void testCreate() throws Exception {
File work = new File("build");
mockEventLogger.reinitialise();
Properties properties = new Properties();
properties.put("bundles.type", "external");
properties.put("bundles.searchPattern", "build/*.jar");
properties.put("chain", "bundles");
RepositoryFactory factory = createMock(RepositoryFactory.class);
expect(factory.createRepository(isA(List.class))).andReturn(null);
replay(factory);
RepositoryFactoryBean bean = new RepositoryFactoryBean(properties, mockEventLogger, factory, work, Collections.<ArtifactBridge>emptySet(), null);
bean.getObject();
verify(factory);
assertFalse("Events were logged.", mockEventLogger.getCalled());
}
@Test
public void testBasicContract() {
mockEventLogger.reinitialise();
Properties properties = new Properties();
RepositoryFactory factory = createMock(RepositoryFactory.class);
File work = new File("build");
RepositoryFactoryBean bean = new RepositoryFactoryBean(properties, mockEventLogger, factory, work, Collections.<ArtifactBridge>emptySet(), null);
assertTrue(bean.isSingleton());
assertEquals(Repository.class, bean.getObjectType());
assertFalse("Events were logged.", mockEventLogger.getCalled());
}
}