Package ch.entwine.weblounge.common.impl.site

Source Code of ch.entwine.weblounge.common.impl.site.ModuleImplTest

/*
*  Weblounge: Web Content Management System
*  Copyright (c) 2003 - 2011 The Weblounge Team
*  http://entwinemedia.com/weblounge
*
*  This program 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
*  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 Lesser General Public License for more details.
*
*  You should have received a copy of the GNU Lesser General Public License
*  along with this program; if not, write to the Free Software Foundation
*  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

package ch.entwine.weblounge.common.impl.site;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import ch.entwine.weblounge.common.content.image.ImageStyle;
import ch.entwine.weblounge.common.content.page.PageletRenderer;
import ch.entwine.weblounge.common.impl.content.image.ImageStyleImpl;
import ch.entwine.weblounge.common.impl.content.page.PageletRendererImpl;
import ch.entwine.weblounge.common.impl.language.LanguageImpl;
import ch.entwine.weblounge.common.language.Language;
import ch.entwine.weblounge.common.site.Action;
import ch.entwine.weblounge.common.site.Environment;
import ch.entwine.weblounge.common.site.Module;
import ch.entwine.weblounge.common.site.ModuleException;
import ch.entwine.weblounge.common.site.Site;

import org.easymock.EasyMock;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.net.URL;
import java.util.Locale;

/**
* Test cases for {@link ModuleImpl}
*/
public class ModuleImplTest {

  /** The module to test */
  protected Module module = null;

  /** The hosting site */
  protected Site site = null;

  /** Module identifier */
  protected String identifier = "testmodule";

  /** Enabled flag */
  protected boolean enabled = true;

  /** Searchable flag */
  protected boolean searchable = false;

  /** Name of the simple option */
  protected String simpleOptionName = "simple";

  /** Value of the simple option */
  protected String simpleOptionValue = "simple value";

  /** Name of the simple option */
  protected String complexOptionName = "complex";

  /** Value of the complex option */
  protected String[] complexOptionValue = new String[] { "complex", "value" };

  /** English title */
  protected String name = "Test module";

  /** The English language */
  protected static final Language ENGLISH = new LanguageImpl(new Locale("en"));

  /** The German language */
  protected static final Language GERMAN = new LanguageImpl(new Locale("de"));

  /** The Italian language */
  protected static final Language ITALIAN = new LanguageImpl(new Locale("it"));

  /** The test action */
  protected Action action = null;

  /** The action identifier */
  protected String actionIdentifier = "myaction";

  /** The pagelet renderer */
  protected PageletRenderer renderer = null;

  /** The pagelet renderer identifier */
  protected String rendererIdentifier = "renderer";

  /** The image style */
  protected ImageStyle imageStyle = null;

  protected String imageStyleIdentifier = "modulestyle";

  /**
   * Sets up the test bed.
   *
   * @throws java.lang.Exception
   */
  @Before
  public void setUp() throws Exception {
    setUpPreliminaries();
    module = new ModuleImpl();
    module.setIdentifier(identifier);
    module.setName(name);
    module.setEnabled(enabled);
    module.setSearchable(searchable);
    module.setOption(simpleOptionName, simpleOptionValue);
    for (String o : complexOptionValue) {
      module.setOption(complexOptionName, o);
    }
    module.setSite(site);
    module.addAction(action);
    module.addRenderer(renderer);
    module.addImageStyle(imageStyle);
  }

  /**
   * Sets up preliminary items.
   *
   * @throws Exception
   *           if setup fails
   */
  protected void setUpPreliminaries() throws Exception {
    site = EasyMock.createNiceMock(Site.class);
    EasyMock.expect(site.getIdentifier()).andReturn("test");
    EasyMock.expect(site.getHostname((Environment) EasyMock.anyObject())).andReturn(new SiteURLImpl(new URL("http://localhost"))).anyTimes();
    EasyMock.replay(site);

    action = new TestAction();
    action.setIdentifier(actionIdentifier);

    renderer = new PageletRendererImpl();
    renderer.setIdentifier(rendererIdentifier);

    imageStyle = new ImageStyleImpl(imageStyleIdentifier);
  }

  /**
   * Clears the test bed.
   *
   * @throws Exception
   */
  @After
  public void tearDown() throws Exception {
    if (module != null)
      module.destroy();
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#setIdentifier(java.lang.String)}
   * .
   */
  @Test
  public void testSetIdentifier() {
    module.setIdentifier("1ab_2ABC3-.0");
    module.setIdentifier("1");
    module.setIdentifier("a");
    try {
      module.setIdentifier("Test id with spaces and,strange/characters");
      fail("Module accepted identifier with spaces in it");
    } catch (IllegalArgumentException e) {
      // This is expected
    }
    try {
      module.setIdentifier(".abc");
      fail("Module accepted identifier starting with a special character");
    } catch (IllegalArgumentException e) {
      // This is expected
    }
    try {
      module.setIdentifier("");
      fail("Module accepted an empty identifier");
    } catch (IllegalArgumentException e) {
      // This is expected
    }
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getIdentifier()}.
   */
  @Test
  public void testGetIdentifier() {
    assertEquals(identifier, module.getIdentifier());
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getAction(java.lang.String)}
   * .
   */
  @Test
  public void testGetAction() {
    assertNotNull(module.getAction(actionIdentifier));
    assertTrue(module.getAction("test") == null);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getActions()}.
   */
  @Test
  public void testGetActions() {
    assertTrue(module.getActions().length == 1);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getImageStyles()}.
   */
  @Test
  public void testGetImageStyles() {
    assertTrue(module.getImageStyles().length == 1);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getImageStyle(java.lang.String)}
   * .
   */
  @Test
  public void testGetImageStyle() {
    assertEquals(imageStyle, module.getImageStyle(imageStyleIdentifier));
    assertTrue(module.getImageStyle("test") == null);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getRenderer(java.lang.String)}
   * .
   */
  @Test
  public void testGetRenderer() {
    assertEquals(renderer, module.getRenderer(rendererIdentifier));
    assertTrue(module.getRenderer("test") == null);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getRenderers()}.
   */
  @Test
  public void testGetRenderers() {
    assertTrue(module.getRenderers().length == 1);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getSite()}.
   */
  @Test
  public void testGetSite() {
    assertEquals(site, module.getSite());
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#isEnabled()}.
   */
  @Test
  public void testIsEnabled() {
    assertEquals(enabled, module.isEnabled());
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#isSearchable()}.
   */
  @Test
  public void testIsSearchable() {
    assertEquals(searchable, module.isSearchable());
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#search(java.lang.String)}
   * .
   */
  @Test
  public void testSearch() {
    assertTrue(module.search("test").length == 0);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#start()}.
   */
  @Test
  public void testStart() {
    try {
      module.start();
      module.stop();
    } catch (ModuleException e) {
      fail(e.getMessage());
    }

    // Test disabled module
    try {
      module.setEnabled(false);
      module.start();
    } catch (ModuleException e) {
      fail(e.getMessage());
    } catch (IllegalStateException e) {
      // This is expected
    }

    // Test running module
    try {
      module.setEnabled(true);
      module.start();
      module.start();
    } catch (ModuleException e) {
      fail(e.getMessage());
    } catch (IllegalStateException e) {
      // This is expected
    }
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#stop()}.
   */
  @Test
  public void testStop() {
    try {
      module.start();
      module.stop();
    } catch (ModuleException e) {
      fail(e.getMessage());
    }

    // Test stopped module
    try {
      module.stop();
    } catch (ModuleException e) {
      fail(e.getMessage());
    } catch (IllegalStateException e) {
      // This is expected
    }
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#removeOption(java.lang.String)}
   * .
   */
  @Test
  public void testRemoveOption() {
    module.removeOption(complexOptionName);
    assertTrue(module.getOptions().size() == 1);
    assertTrue(module.getOptionValue(complexOptionName) == null);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getOptionValue(java.lang.String)}
   * .
   */
  @Test
  public void testGetOptionValueString() {
    assertEquals(simpleOptionValue, module.getOptionValue(simpleOptionName));
    assertEquals(complexOptionValue[0], module.getOptionValue(complexOptionName));
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getOptionValue(java.lang.String, java.lang.String)}
   * .
   */
  @Test
  public void testGetOptionValueStringString() {
    assertEquals(simpleOptionValue, module.getOptionValue(simpleOptionName));
    assertEquals(complexOptionValue[0], module.getOptionValue(complexOptionName));
    assertEquals("default", module.getOptionValue("test", "default"));
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getOptionValues(java.lang.String)}
   * .
   */
  @Test
  public void testGetOptionValues() {
    assertEquals(1, module.getOptionValues(simpleOptionName).length);
    assertEquals(complexOptionValue.length, module.getOptionValues(complexOptionName).length);
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#hasOption(java.lang.String)}
   * .
   */
  @Test
  public void testHasOption() {
    assertTrue(module.hasOption(simpleOptionName));
    assertTrue(module.hasOption(complexOptionName));
    assertFalse(module.hasOption("test"));
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#getOptions()}.
   */
  @Test
  public void testGetOptions() {
    assertEquals(2, module.getOptions().size());
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#equals(java.lang.Object)}
   * .
   */
  @Test
  public void testEqualsObject() {
    assertTrue(module.equals(module));
  }

  /**
   * Test method for
   * {@link ch.entwine.weblounge.common.impl.site.ModuleImpl#toString()}.
   */
  @Test
  public void testToString() {
    assertEquals(identifier, module.toString());
  }

}
TOP

Related Classes of ch.entwine.weblounge.common.impl.site.ModuleImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.