/*
 * Hibernate Search, full-text search for your domain model
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.search.test.util;

import java.util.Map;
import java.util.Set;

/**
 * Contract to several testing setup utilities to define the
 * configuration of a SessionFactory for testing.
 *
 * @author Sanne Grinovero
 * @since 5.4
 */
public interface TestConfiguration {

	/**
	 * The implementation should set the configuration properties
	 * on the passed object. Usually this will be a String value,
	 * but sometimes it can be different type.
	 * @param settings
	 */
	void configure(Map<String,Object> settings);

	/**
	 * Use this to enable a multi-tenant capable SessionFactory,
	 * or return an empty Set.
	 * @return the tenant identifiers
	 */
	Set<String> multiTenantIds();

	/**
	 * List the entities which should be used by the SessionFactory
	 * building system as a metatada source.
	 * @return usually all entity types used by the test
	 */
	Class<?>[] getAnnotatedClasses();

}
