package org.limewire.ui.swing.search.model; import junit.framework.TestCase; import org.jmock.Expectations; import org.jmock.Mockery; import org.limewire.core.impl.search.MockSearchResult; import org.limewire.ui.swing.util.PropertiableHeadings; import com.google.inject.Provider; public class SearchResultAdapterTest extends TestCase { private MockSearchResult result; private MockPropertiableHeadings propertiableHeadings; private SearchResultAdapter adapter; private Provider<PropertiableHeadings> provider; private Mockery context; @SuppressWarnings("unchecked") @Override protected void setUp() { result = new MockSearchResult(); propertiableHeadings = new MockPropertiableHeadings(); context = new Mockery(); provider = context.mock(Provider.class); adapter = new SearchResultAdapter(result, provider, new VisualSearchResultStatusListener() { @Override public void resultChanged(VisualSearchResult vsr, String propertyName, Object oldValue, Object newValue) {} @Override public void resultCreated(VisualSearchResult vsr) {} @Override public void resultsCleared() {} }); } public void testHeadingAndSubHeadingCached() { propertiableHeadings.heading = "foo"; propertiableHeadings.subheading = "bar"; context.checking(new Expectations(){ { allowing(provider).get(); will(returnValue(propertiableHeadings)); } }); assertEquals("foo", adapter.getHeading()); assertEquals("bar", adapter.getSubHeading()); assertEquals(1, propertiableHeadings.getHeadingCalledCount); assertEquals(1, propertiableHeadings.getSubHeadingCalledCount); //Call again to test caching adapter.getHeading(); adapter.getSubHeading(); assertEquals(1, propertiableHeadings.getHeadingCalledCount); assertEquals(1, propertiableHeadings.getSubHeadingCalledCount); } public void testHeadingWithHTMLIsAutomaticallySanitizedAndMarkedAsSpam() { propertiableHeadings.heading = "<html><b>foo</b></html>"; context.checking(new Expectations(){ { allowing(provider).get(); will(returnValue(propertiableHeadings)); } }); assertEquals("foo", adapter.getHeading()); assertTrue(adapter.isSpam()); } public void testHeadingWithAnyMarkupIsAutomaticallySanitizedAndMarkedAsSpam() { propertiableHeadings.heading = "<html><a href=\"http://www.booya.com/&?foo:#23432-heynow\">foo</a></html>"; context.checking(new Expectations(){ { allowing(provider).get(); will(returnValue(propertiableHeadings)); } }); assertEquals("foo", adapter.getHeading()); assertTrue(adapter.isSpam()); } public void testSubHeadingWithHTMLIsAutomaticallySanitizedAndMarkedAsSpam() { propertiableHeadings.subheading = "<html><b>foo</b></html>"; context.checking(new Expectations(){ { allowing(provider).get(); will(returnValue(propertiableHeadings)); } }); assertEquals("foo", adapter.getSubHeading()); assertTrue(adapter.isSpam()); } }