package org.limewire.core.impl.library;
import java.util.Collection;
import java.util.HashSet;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.lib.legacy.ClassImposteriser;
import org.limewire.collection.AutoCompleteDictionary;
import org.limewire.core.api.FilePropertyKey;
import org.limewire.core.api.search.SearchCategory;
import org.limewire.util.BaseTestCase;
/**
* Ensures The FriendAutoCompleterFactoryImpl is able to generate working
* FriendAutoCompleter instances.
*/
public class FriendAutoCompleterFactoryImplTest extends BaseTestCase {
public FriendAutoCompleterFactoryImplTest(String name) {
super(name);
}
/**
* Test the dictionary create method without a FileProperyKey.
*/
public void testGetDictionary() {
Mockery context = new Mockery() {{
setImposteriser(ClassImposteriser.INSTANCE);
}};
final FriendLibraries libraries = context.mock(FriendLibraries.class);
final String searchTerm = "lunedì";
final Collection<String> results = new HashSet<String>();
results.add(searchTerm);
FriendAutoCompleterFactoryImpl factory = new FriendAutoCompleterFactoryImpl(libraries);
context.checking(new Expectations() {{
exactly(1).of(libraries).getSuggestions(searchTerm, SearchCategory.OTHER);
will(returnValue(results));
}});
AutoCompleteDictionary dictionary = factory.getDictionary(SearchCategory.OTHER);
assertNotNull(dictionary);
assertEquals(searchTerm, dictionary.lookup(searchTerm));
context.assertIsSatisfied();
}
/**
* Test the dictionary create method with a FileProperyKey.
*/
public void testGetDictionaryWithFileProp() {
Mockery context = new Mockery() {{
setImposteriser(ClassImposteriser.INSTANCE);
}};
final FriendLibraries libraries = context.mock(FriendLibraries.class);
final String searchTerm = "alla mattina";
final String foundTerm = "adasdsad";
final Collection<String> results = new HashSet<String>();
results.add(foundTerm);
results.add(searchTerm + ", blah!");
FriendAutoCompleterFactoryImpl factory = new FriendAutoCompleterFactoryImpl(libraries);
context.checking(new Expectations() {{
allowing(libraries).getSuggestions(searchTerm, SearchCategory.IMAGE, FilePropertyKey.COMPANY);
will(returnValue(results));
}});
AutoCompleteDictionary dictionary = factory.getDictionary(SearchCategory.IMAGE, FilePropertyKey.COMPANY);
assertNotNull(dictionary);
assertTrue(dictionary.getPrefixedBy(searchTerm).contains(foundTerm));
assertEquals(2, dictionary.getPrefixedBy(searchTerm).size());
context.assertIsSatisfied();
}
}