/** * 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.User; 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.search.web.internal.facet.display.builder.UserSearchFacetDisplayBuilder; 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 UserSearchFacetDisplayContextTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); Mockito.doReturn( _facetCollector ).when( _facet ).getFacetCollector(); } @Test public void testEmptySearchResults() throws Exception { String paramValue = ""; UserSearchFacetDisplayContext userSearchFacetDisplayContext = createDisplayContext(paramValue); List<UserSearchFacetTermDisplayContext> userSearchFacetTermDisplayContexts = userSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( userSearchFacetTermDisplayContexts.toString(), 0, userSearchFacetTermDisplayContexts.size()); Assert.assertEquals( paramValue, userSearchFacetDisplayContext.getParamValue()); Assert.assertTrue(userSearchFacetDisplayContext.isNothingSelected()); Assert.assertTrue(userSearchFacetDisplayContext.isRenderNothing()); } @Test public void testEmptySearchResultsWithPreviousSelection() throws Exception { String userName = RandomTestUtil.randomString(); String paramValue = userName; UserSearchFacetDisplayContext userSearchFacetDisplayContext = createDisplayContext(paramValue); List<UserSearchFacetTermDisplayContext> userSearchFacetTermDisplayContexts = userSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( userSearchFacetTermDisplayContexts.toString(), 1, userSearchFacetTermDisplayContexts.size()); UserSearchFacetTermDisplayContext userSearchFacetTermDisplayContext = userSearchFacetTermDisplayContexts.get(0); Assert.assertEquals( 0, userSearchFacetTermDisplayContext.getFrequency()); Assert.assertEquals( userName, userSearchFacetTermDisplayContext.getUserName()); Assert.assertTrue(userSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue( userSearchFacetTermDisplayContext.isFrequencyVisible()); Assert.assertEquals( paramValue, userSearchFacetDisplayContext.getParamValue()); Assert.assertFalse(userSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(userSearchFacetDisplayContext.isRenderNothing()); } @Test public void testOneTerm() throws Exception { String userName = RandomTestUtil.randomString(); int count = RandomTestUtil.randomInt(); setUpOneTermCollector(userName, count); String paramValue = ""; UserSearchFacetDisplayContext userSearchFacetDisplayContext = createDisplayContext(paramValue); List<UserSearchFacetTermDisplayContext> userSearchFacetTermDisplayContexts = userSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( userSearchFacetTermDisplayContexts.toString(), 1, userSearchFacetTermDisplayContexts.size()); UserSearchFacetTermDisplayContext userSearchFacetTermDisplayContext = userSearchFacetTermDisplayContexts.get(0); Assert.assertEquals( count, userSearchFacetTermDisplayContext.getFrequency()); Assert.assertEquals( userName, userSearchFacetTermDisplayContext.getUserName()); Assert.assertFalse(userSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue( userSearchFacetTermDisplayContext.isFrequencyVisible()); Assert.assertEquals( paramValue, userSearchFacetDisplayContext.getParamValue()); Assert.assertTrue(userSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(userSearchFacetDisplayContext.isRenderNothing()); } @Test public void testOneTermWithPreviousSelection() throws Exception { String userName = RandomTestUtil.randomString(); int count = RandomTestUtil.randomInt(); setUpOneTermCollector(userName, count); String paramValue = userName; UserSearchFacetDisplayContext userSearchFacetDisplayContext = createDisplayContext(paramValue); List<UserSearchFacetTermDisplayContext> userSearchFacetTermDisplayContexts = userSearchFacetDisplayContext.getTermDisplayContexts(); Assert.assertEquals( userSearchFacetTermDisplayContexts.toString(), 1, userSearchFacetTermDisplayContexts.size()); UserSearchFacetTermDisplayContext userSearchFacetTermDisplayContext = userSearchFacetTermDisplayContexts.get(0); Assert.assertEquals( count, userSearchFacetTermDisplayContext.getFrequency()); Assert.assertEquals( userName, userSearchFacetTermDisplayContext.getUserName()); Assert.assertTrue(userSearchFacetTermDisplayContext.isSelected()); Assert.assertTrue( userSearchFacetTermDisplayContext.isFrequencyVisible()); Assert.assertEquals( paramValue, userSearchFacetDisplayContext.getParamValue()); Assert.assertFalse(userSearchFacetDisplayContext.isNothingSelected()); Assert.assertFalse(userSearchFacetDisplayContext.isRenderNothing()); } protected UserSearchFacetDisplayContext createDisplayContext( String paramValue) throws Exception { UserSearchFacetDisplayBuilder userSearchFacetDisplayBuilder = new UserSearchFacetDisplayBuilder(); userSearchFacetDisplayBuilder.setFacet(_facet); userSearchFacetDisplayBuilder.setParamValue(paramValue); userSearchFacetDisplayBuilder.setFrequenciesVisible(true); userSearchFacetDisplayBuilder.setFrequencyThreshold(0); userSearchFacetDisplayBuilder.setMaxTerms(0); return userSearchFacetDisplayBuilder.build(); } protected TermCollector createTermCollector(String userName, int count) { TermCollector termCollector = Mockito.mock(TermCollector.class); Mockito.doReturn( count ).when( termCollector ).getFrequency(); Mockito.doReturn( userName ).when( termCollector ).getTerm(); return termCollector; } protected User createUser(String userName) throws Exception { User user = Mockito.mock(User.class); Mockito.doReturn( userName ).when( user ).getFullName(); return user; } protected void setUpOneTermCollector(String userName, int count) { Mockito.doReturn( Collections.singletonList(createTermCollector(userName, count)) ).when( _facetCollector ).getTermCollectors(); } @Mock private Facet _facet; @Mock private FacetCollector _facetCollector; }