/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.search.web.internal.facet.display.context; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.search.facet.Facet; import com.liferay.portal.kernel.search.facet.collector.FacetCollector; import com.liferay.portal.kernel.search.facet.collector.TermCollector; import com.liferay.portal.kernel.service.GroupLocalService; import com.liferay.portal.kernel.test.util.RandomTestUtil; import com.liferay.portal.search.web.internal.facet.display.builder.ScopeSearchFacetDisplayBuilder; import java.util.Collections; import java.util.List; import java.util.Locale; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; /** * @author André de Oliveira */ public class ScopeSearchFacetDisplayContextTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); Mockito.doReturn( _facetCollector ).when( _facet ).getFacetCollector(); } @Test public void testEmptySearchResults() throws Exception { String parameterValue = "0"; ScopeSearchFacetDisplayContext scopeSearchFacetDisplayContext = createDisplayContext(parameterValue); List<ScopeSearchFacetTermDisplayContext> scopeSearchFacetTermDisplayContexts = scopeSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( scopeSearchFacetTermDisplayContexts.toString(), 0, scopeSearchFacetTermDisplayContexts.size()); Assert.assertEquals( parameterValue, scopeSearchFacetDisplayContext.getParameterValue()); Assert.assertTrue(scopeSearchFacetDisplayContext.isNothingSelected()); Assert.assertTrue(scopeSearchFacetDisplayContext.isRenderNothing()); } @Test public void testEmptySearchResultsWithPreviousSelection() throws Exception { long groupId = RandomTestUtil.randomLong(); String name = RandomTestUtil.randomString(); addGroup(groupId, name); String parameterValue = String.valueOf(groupId); ScopeSearchFacetDisplayContext scopeSearchFacetDisplayContext = createDisplayContext(parameterValue); List<ScopeSearchFacetTermDisplayContext> scopeSearchFacetTermDisplayContexts = scopeSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( scopeSearchFacetTermDisplayContexts.toString(), 1, scopeSearchFacetTermDisplayContexts.size()); ScopeSearchFacetTermDisplayContext scopeSearchFacetTermDisplayContext = scopeSearchFacetTermDisplayContexts.get(0); Assert.assertEquals(0, scopeSearchFacetTermDisplayContext.getCount()); Assert.assertEquals( name, scopeSearchFacetTermDisplayContext.getDescriptiveName()); Assert.assertEquals( groupId, scopeSearchFacetTermDisplayContext.getGroupId()); Assert.assertTrue(scopeSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue(scopeSearchFacetTermDisplayContext.isShowCount()); Assert.assertEquals( parameterValue, scopeSearchFacetDisplayContext.getParameterValue()); Assert.assertFalse(scopeSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(scopeSearchFacetDisplayContext.isRenderNothing()); } @Test public void testOneTerm() throws Exception { long groupId = RandomTestUtil.randomLong(); String name = RandomTestUtil.randomString(); addGroup(groupId, name); int count = RandomTestUtil.randomInt(); setUpOneTermCollector(groupId, count); String parameterValue = "0"; ScopeSearchFacetDisplayContext scopeSearchFacetDisplayContext = createDisplayContext(parameterValue); List<ScopeSearchFacetTermDisplayContext> scopeSearchFacetTermDisplayContexts = scopeSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( scopeSearchFacetTermDisplayContexts.toString(), 1, scopeSearchFacetTermDisplayContexts.size()); ScopeSearchFacetTermDisplayContext scopeSearchFacetTermDisplayContext = scopeSearchFacetTermDisplayContexts.get(0); Assert.assertEquals( count, scopeSearchFacetTermDisplayContext.getCount()); Assert.assertEquals( name, scopeSearchFacetTermDisplayContext.getDescriptiveName()); Assert.assertEquals( groupId, scopeSearchFacetTermDisplayContext.getGroupId()); Assert.assertFalse(scopeSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue(scopeSearchFacetTermDisplayContext.isShowCount()); Assert.assertEquals( parameterValue, scopeSearchFacetDisplayContext.getParameterValue()); Assert.assertTrue(scopeSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(scopeSearchFacetDisplayContext.isRenderNothing()); } @Test public void testOneTermWithPreviousSelection() throws Exception { long groupId = RandomTestUtil.randomLong(); String name = RandomTestUtil.randomString(); addGroup(groupId, name); int count = RandomTestUtil.randomInt(); setUpOneTermCollector(groupId, count); String parameterValue = String.valueOf(groupId); ScopeSearchFacetDisplayContext scopeSearchFacetDisplayContext = createDisplayContext(parameterValue); List<ScopeSearchFacetTermDisplayContext> scopeSearchFacetTermDisplayContexts = scopeSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( scopeSearchFacetTermDisplayContexts.toString(), 1, scopeSearchFacetTermDisplayContexts.size()); ScopeSearchFacetTermDisplayContext scopeSearchFacetTermDisplayContext = scopeSearchFacetTermDisplayContexts.get(0); Assert.assertEquals( count, scopeSearchFacetTermDisplayContext.getCount()); Assert.assertEquals( name, scopeSearchFacetTermDisplayContext.getDescriptiveName()); Assert.assertEquals( groupId, scopeSearchFacetTermDisplayContext.getGroupId()); Assert.assertTrue(scopeSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue(scopeSearchFacetTermDisplayContext.isShowCount()); Assert.assertEquals( parameterValue, scopeSearchFacetDisplayContext.getParameterValue()); Assert.assertFalse(scopeSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(scopeSearchFacetDisplayContext.isRenderNothing()); } protected void addGroup(long groupId, String name) throws Exception { Mockito.doReturn( createGroup(groupId, name) ).when( _groupLocalService ).fetchGroup( groupId ); } protected ScopeSearchFacetDisplayContext createDisplayContext( String parameterValue) { ScopeSearchFacetDisplayBuilder scopeSearchFacetDisplayBuilder = new ScopeSearchFacetDisplayBuilder(); scopeSearchFacetDisplayBuilder.setFacet(_facet); scopeSearchFacetDisplayBuilder.setFrequenciesVisible(true); scopeSearchFacetDisplayBuilder.setGroupLocalService(_groupLocalService); scopeSearchFacetDisplayBuilder.setParameterValue(parameterValue); return scopeSearchFacetDisplayBuilder.build(); } protected Group createGroup(long groupId, String name) throws Exception { Group group = Mockito.mock(Group.class); Mockito.doReturn( name ).when( group ).getDescriptiveName( Mockito.<Locale>any() ); Mockito.doReturn( groupId ).when( group ).getGroupId(); return group; } protected TermCollector createTermCollector(long groupId, int count) { TermCollector termCollector = Mockito.mock(TermCollector.class); Mockito.doReturn( count ).when( termCollector ).getFrequency(); Mockito.doReturn( String.valueOf(groupId) ).when( termCollector ).getTerm(); return termCollector; } protected void setUpOneTermCollector(long groupId, int count) { Mockito.doReturn( Collections.singletonList(createTermCollector(groupId, count)) ).when( _facetCollector ).getTermCollectors(); } @Mock private Facet _facet; @Mock private FacetCollector _facetCollector; @Mock private GroupLocalService _groupLocalService; }