Package org.projectforge.web

Source Code of org.projectforge.web.CallAllPagesTest

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition 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.projectforge.web;

import java.util.Map;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.junit.AfterClass;
import org.junit.Test;
import org.projectforge.core.SystemInfoCache;
import org.projectforge.registry.Registry;
import org.projectforge.test.TestBase;
import org.projectforge.test.TestConfiguration;
import org.projectforge.web.address.AddressMobileViewPage;
import org.projectforge.web.address.AddressViewPage;
import org.projectforge.web.admin.SetupPage;
import org.projectforge.web.doc.TutorialPage;
import org.projectforge.web.mobile.LoginMobilePage;
import org.projectforge.web.registry.WebRegistry;
import org.projectforge.web.scripting.ScriptExecutePage;
import org.projectforge.web.wicket.MessagePage;
import org.projectforge.web.wicket.WicketPageTestBase;

public class CallAllPagesTest extends WicketPageTestBase
{
  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(CallAllPagesTest.class);

  static int counter;

  @SuppressWarnings("unchecked")
  private final Class< ? extends WebPage>[] skipPages = new Class[] { //
    // Checked below:
    LoginPage.class, LoginMobilePage.class, SetupPage.class, TutorialPage.class, //
    AddressViewPage.class, AddressMobileViewPage.class,// Checked in AddressPagesTest
    // Not yet checked:
    ScriptExecutePage.class};

  @AfterClass
  public static void logNumberOfTestesPages()
  {
    log.info("Number of tested Wicket pages: " + counter);
  }

  @Test
  public void testAllMountedPages()
  {
    _testAllMountedPages();
    testPage(LoginPage.class);
    testPage(LoginMobilePage.class);
    clearDatabase();
    deleteDB();
    Registry.instance().getUserGroupCache().setExpired();
    testPage(SetupPage.class);
  }

  private void _testAllMountedPages()
  {
    log.info("Test all web pages with.");
    login(TestBase.TEST_FULL_ACCESS_USER, TestBase.TEST_FULL_ACCESS_USER_PASSWORD);
    final SystemInfoCache systemInfoCache = TestConfiguration.getConfiguration().getBean("systemInfoCache", SystemInfoCache.class);
    SystemInfoCache.internalInitialize(systemInfoCache);
    final Map<String, Class< ? extends WebPage>> pages = WebRegistry.instance().getMountPages();
    counter = 0;
    for (final Map.Entry<String, Class< ? extends WebPage>> entry : pages.entrySet()) {
      boolean skip = false;
      for (final Class< ? > clazz : skipPages) {
        if (clazz.equals(entry.getValue()) == true) {
          log.info("Skipping page: " + entry.getValue());
          skip = true;
        }
      }
      if (skip == true) {
        continue;
      }
      testPage(entry.getValue());
    }
    testPage(TutorialPage.class, MessagePage.class); // Tutorial page not available at default.
    logout();
  }

  private void testPage(final Class< ? extends WebPage> pageClass)
  {
    testPage(pageClass, null, pageClass);
  }

  @SuppressWarnings("unused")
  private void testPage(final Class< ? extends WebPage> pageClass, final PageParameters params)
  {
    testPage(pageClass, params, pageClass);
  }

  private void testPage(final Class< ? extends WebPage> pageClass, final Class< ? extends WebPage> expectedRenderedPage)
  {
    testPage(pageClass, null, expectedRenderedPage);
  }

  private void testPage(final Class< ? extends WebPage> pageClass, final PageParameters params,
      final Class< ? extends WebPage> expectedRenderedPage)
  {
    log.info("Calling page: " + pageClass.getName());
    if (params != null) {
      tester.startPage(pageClass, params);
    } else {
      tester.startPage(pageClass);
    }
    tester.assertRenderedPage(expectedRenderedPage);
    ++counter;
  }
}
TOP

Related Classes of org.projectforge.web.CallAllPagesTest

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.