/** * 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.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.test.util.RandomTestUtil; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.search.web.internal.facet.display.builder.FolderSearchFacetDisplayBuilder; import java.util.Collections; import java.util.List; 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 Lino Alves */ public class FolderSearchFacetDisplayContextTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); Mockito.doReturn( _facetCollector ).when( _facet ).getFacetCollector(); } @Test public void testEmptySearchResults() throws Exception { String facetParam = null; FolderSearchFacetDisplayContext folderSearchFacetDisplayContext = createDisplayContext(facetParam); List<FolderSearchFacetTermDisplayContext> folderSearchFacetTermDisplayContexts = folderSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( folderSearchFacetTermDisplayContexts.toString(), 0, folderSearchFacetTermDisplayContexts.size()); Assert.assertEquals( StringPool.BLANK, folderSearchFacetDisplayContext.getParameterValue()); Assert.assertTrue(folderSearchFacetDisplayContext.isNothingSelected()); Assert.assertTrue(folderSearchFacetDisplayContext.isRenderNothing()); } @Test public void testEmptySearchResultsWithPreviousSelection() throws Exception { long folderId = RandomTestUtil.randomLong(); String title = RandomTestUtil.randomString(); addFolder(folderId, title); String facetParam = String.valueOf(folderId); FolderSearchFacetDisplayContext folderSearchFacetDisplayContext = createDisplayContext(facetParam); List<FolderSearchFacetTermDisplayContext> folderSearchFacetTermDisplayContexts = folderSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( folderSearchFacetTermDisplayContexts.toString(), 1, folderSearchFacetTermDisplayContexts.size()); FolderSearchFacetTermDisplayContext folderSearchFacetTermDisplayContext = folderSearchFacetTermDisplayContexts.get(0); Assert.assertEquals( 0, folderSearchFacetTermDisplayContext.getFrequency()); Assert.assertEquals( title, folderSearchFacetTermDisplayContext.getDisplayName()); Assert.assertEquals( folderId, folderSearchFacetTermDisplayContext.getFolderId()); Assert.assertTrue(folderSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue( folderSearchFacetTermDisplayContext.isFrequencyVisible()); Assert.assertEquals( facetParam, folderSearchFacetDisplayContext.getParameterValue()); Assert.assertFalse(folderSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(folderSearchFacetDisplayContext.isRenderNothing()); } @Test public void testOneTerm() throws Exception { long folderId = RandomTestUtil.randomLong(); String title = RandomTestUtil.randomString(); addFolder(folderId, title); int count = RandomTestUtil.randomInt(); setUpOneTermCollector(folderId, count); String facetParam = ""; FolderSearchFacetDisplayContext folderSearchFacetDisplayContext = createDisplayContext(facetParam); List<FolderSearchFacetTermDisplayContext> folderSearchFacetTermDisplayContexts = folderSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( folderSearchFacetTermDisplayContexts.toString(), 1, folderSearchFacetTermDisplayContexts.size()); FolderSearchFacetTermDisplayContext folderSearchFacetTermDisplayContext = folderSearchFacetTermDisplayContexts.get(0); Assert.assertEquals( count, folderSearchFacetTermDisplayContext.getFrequency()); Assert.assertEquals( title, folderSearchFacetTermDisplayContext.getDisplayName()); Assert.assertEquals( folderId, folderSearchFacetTermDisplayContext.getFolderId()); Assert.assertFalse(folderSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue( folderSearchFacetTermDisplayContext.isFrequencyVisible()); Assert.assertEquals( facetParam, folderSearchFacetDisplayContext.getParameterValue()); Assert.assertTrue(folderSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(folderSearchFacetDisplayContext.isRenderNothing()); } @Test public void testOneTermWithPreviousSelection() throws Exception { long folderId = RandomTestUtil.randomLong(); String title = RandomTestUtil.randomString(); addFolder(folderId, title); int count = RandomTestUtil.randomInt(); setUpOneTermCollector(folderId, count); String facetParam = String.valueOf(folderId); FolderSearchFacetDisplayContext folderSearchFacetDisplayContext = createDisplayContext(facetParam); List<FolderSearchFacetTermDisplayContext> folderSearchFacetTermDisplayContexts = folderSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( folderSearchFacetTermDisplayContexts.toString(), 1, folderSearchFacetTermDisplayContexts.size()); FolderSearchFacetTermDisplayContext folderSearchFacetTermDisplayContext = folderSearchFacetTermDisplayContexts.get(0); Assert.assertEquals( count, folderSearchFacetTermDisplayContext.getFrequency()); Assert.assertEquals( title, folderSearchFacetTermDisplayContext.getDisplayName()); Assert.assertEquals( folderId, folderSearchFacetTermDisplayContext.getFolderId()); Assert.assertTrue(folderSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue( folderSearchFacetTermDisplayContext.isFrequencyVisible()); Assert.assertEquals( facetParam, folderSearchFacetDisplayContext.getParameterValue()); Assert.assertFalse(folderSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(folderSearchFacetDisplayContext.isRenderNothing()); } protected void addFolder(long folderId, String title) throws Exception { Mockito.doReturn( title ).when( _folderTitleLookup ).getFolderTitle( folderId ); } protected FolderSearchFacetDisplayContext createDisplayContext( String facetParam) throws Exception { FolderSearchFacetDisplayBuilder folderSearchFacetDisplayBuilder = new FolderSearchFacetDisplayBuilder(); folderSearchFacetDisplayBuilder.setFacet(_facet); folderSearchFacetDisplayBuilder.setFolderTitleLookup( _folderTitleLookup); folderSearchFacetDisplayBuilder.setFrequenciesVisible(true); folderSearchFacetDisplayBuilder.setFrequencyThreshold(0); folderSearchFacetDisplayBuilder.setMaxTerms(0); folderSearchFacetDisplayBuilder.setParameterName(_facet.getFieldId()); folderSearchFacetDisplayBuilder.setParameterValue(facetParam); FolderSearchFacetDisplayContext folderSearchFacetDisplayContext = folderSearchFacetDisplayBuilder.build(); return folderSearchFacetDisplayContext; } protected TermCollector createTermCollector(long folderId, int count) { TermCollector termCollector = Mockito.mock(TermCollector.class); Mockito.doReturn( count ).when( termCollector ).getFrequency(); Mockito.doReturn( String.valueOf(folderId) ).when( termCollector ).getTerm(); return termCollector; } protected void setUpOneTermCollector(long folderId, int count) { Mockito.doReturn( Collections.singletonList(createTermCollector(folderId, count)) ).when( _facetCollector ).getTermCollectors(); } @Mock private Facet _facet; @Mock private FacetCollector _facetCollector; @Mock private FolderTitleLookup _folderTitleLookup; }