/*
* Copyright (C) 2003-2009 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.ks.bbcode.core;
import static org.exoplatform.commons.testing.AssertUtils.assertContains;
import static org.exoplatform.commons.testing.AssertUtils.assertEmpty;
import junit.framework.TestCase;
import org.exoplatform.ks.bbcode.api.BBCode;
/**
* @author <a href="mailto:patrice.lamarque@exoplatform.com">Patrice Lamarque</a>
* @version $Revision$
*/
public class TestExtendedBBCodeProvider extends TestCase {
private BBCodeRenderer renderer;
private MemoryBBCodeService bbcodeService;
private ExtendedBBCodeProvider provider;
protected void setUp() throws Exception {
super.setUp();
bbcodeService = new MemoryBBCodeService();
provider = new ExtendedBBCodeProvider();
provider.setBBCodeService(bbcodeService);
renderer = new BBCodeRenderer();
renderer.setBbCodeProvider(provider);
}
public void testGetBBCodes() throws Exception {
// active BBCodes are cached
registerBBCode("FOO", "");
assertEquals("FOO", provider.getBBCode("FOO").getTagName());
// = prefix for options
registerBBCode("BAR=", "");
assertNotNull(provider.getBBCode("BAR="));
// BBCode alt = renderer.getBbCodeProvider().getBBCode("=BAR");
// assertTrue(alt.isOption());
// assertEquals("BAR_option", alt.getId());
// assertEquals("BAR", alt.getTagName());
}
public void testGetSupportedBBCodes() {
assertEmpty(provider.getSupportedBBCodes());
registerBBCode("FOO", "FOO");
registerOptBBCode("FOO", "FOO-OPT");
registerBBCode("BAR", "BAR");
assertContains(provider.getSupportedBBCodes(), "FOO", "BAR");
BBCode code = provider.getBBCode("FOO=");
assertNotNull(code.getTagName());
}
private void registerBBCode(String tagName, String replacement) {
BBCode foo = new BBCode();
foo.setReplacement(replacement);
foo.setId(tagName + "=");
foo.setTagName(tagName);
foo.setActive(true);
foo.setOption(false);
bbcodeService.addBBCode(foo);
}
private void registerOptBBCode(String tagName, String replacement) {
BBCode foo = new BBCode();
foo.setReplacement(replacement);
foo.setId(tagName + "_option");
foo.setTagName(tagName);
foo.setActive(true);
foo.setOption(true);
bbcodeService.addBBCode(foo);
}
}