/** * 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.template.soy.internal; import com.google.template.soy.SoyFileSet; import com.google.template.soy.tofu.SoyTofu; import com.liferay.portal.kernel.template.TemplateResource; import java.util.Arrays; import java.util.List; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; /** * @author Bruno Basto */ public class SoyTofuCacheTest { @Before public void setUp() throws Exception { _soyTestHelper.setUp(); _soyTofuCacheHandler = new SoyTofuCacheHandler( _soyTestHelper.mockPortalCache()); } @After public void tearDown() { _soyTestHelper.tearDown(); } @Test public void testCacheHit() throws Exception { List<TemplateResource> templateResources = _soyTestHelper.getTemplateResources( Arrays.asList("simple.soy", "context.soy")); SoyFileSet soyFileSet = _soyTestHelper.getSoyFileSet(templateResources); SoyTofu soyTofu = Mockito.mock(SoyTofu.class); _soyTofuCacheHandler.add(templateResources, soyFileSet, soyTofu); Assert.assertNotNull(_soyTofuCacheHandler.get(templateResources)); } @Test public void testCacheMiss() throws Exception { List<TemplateResource> templateResources = _soyTestHelper.getTemplateResources( Arrays.asList("simple.soy", "context.soy")); SoyFileSet soyFileSet = _soyTestHelper.getSoyFileSet(templateResources); SoyTofu soyTofu = Mockito.mock(SoyTofu.class); _soyTofuCacheHandler.add(templateResources, soyFileSet, soyTofu); List<TemplateResource> templateResourcesA = _soyTestHelper.getTemplateResources(Arrays.asList("context.soy")); Assert.assertNull(_soyTofuCacheHandler.get(templateResourcesA)); } @Test public void testRemoveAny() throws Exception { List<TemplateResource> cachedTemplateResources = _soyTestHelper.getTemplateResources( Arrays.asList( "simple.soy", "context.soy", "multi-context.soy")); SoyFileSet soyFileSet = _soyTestHelper.getSoyFileSet( cachedTemplateResources); SoyTofu soyTofu = Mockito.mock(SoyTofu.class); _soyTofuCacheHandler.add(cachedTemplateResources, soyFileSet, soyTofu); List<TemplateResource> templateResources = _soyTestHelper.getTemplateResources(Arrays.asList("context.soy")); _soyTofuCacheHandler.removeIfAny(templateResources); Assert.assertNull(_soyTofuCacheHandler.get(templateResources)); } @Test public void testRemoveAnyWithMultipleEntries() throws Exception { List<TemplateResource> cachedTemplateResourcesA = _soyTestHelper.getTemplateResources(Arrays.asList("simple.soy")); SoyFileSet soyFileSetA = _soyTestHelper.getSoyFileSet( cachedTemplateResourcesA); SoyTofu soyTofuA = Mockito.mock(SoyTofu.class); _soyTofuCacheHandler.add( cachedTemplateResourcesA, soyFileSetA, soyTofuA); Assert.assertNotNull( _soyTofuCacheHandler.get(cachedTemplateResourcesA)); List<TemplateResource> cachedTemplateResourcesB = _soyTestHelper.getTemplateResources( Arrays.asList("context.soy", "multi-context.soy")); SoyFileSet soyFileSetB = _soyTestHelper.getSoyFileSet( cachedTemplateResourcesA); SoyTofu soyTofuB = Mockito.mock(SoyTofu.class); _soyTofuCacheHandler.add( cachedTemplateResourcesB, soyFileSetB, soyTofuB); List<TemplateResource> templateResources = _soyTestHelper.getTemplateResources(Arrays.asList("context.soy")); _soyTofuCacheHandler.removeIfAny(templateResources); Assert.assertNull(_soyTofuCacheHandler.get(cachedTemplateResourcesB)); Assert.assertNotNull( _soyTofuCacheHandler.get(cachedTemplateResourcesA)); } private final SoyTestHelper _soyTestHelper = new SoyTestHelper(); private SoyTofuCacheHandler _soyTofuCacheHandler; }