/******************************************************************************* * Copyright (c) 2016 arxes-tolina GmbH * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Wojtek Polcwiartek <wojciech.polcwiartek@tolina.de> - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.richtext; import static org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration.DEFAULT_LANGUAGE; import static org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration.LANGUAGE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Locale; import java.util.Map; import org.eclipse.nebula.widgets.richtext.toolbar.ToolbarConfiguration; import org.eclipse.rap.json.JsonArray; import org.eclipse.rap.json.JsonObject; import org.eclipse.rap.json.JsonValue; import org.junit.Before; import org.junit.Test; @SuppressWarnings( "deprecation" ) public class RichTextEditorConfiguration_Test { private RichTextEditorConfiguration config; @Before public void setUp() { config = new RichTextEditorConfiguration(); } @Test public void testGetAllOptions_withDefaultConfigurations() { Map<String, Object> customConfiguration = config.getAllOptions(); assertEquals( Locale.getDefault().getLanguage(), customConfiguration.get( LANGUAGE ) ); assertEquals( "en", customConfiguration.get( DEFAULT_LANGUAGE ) ); } @Test public void testGetAllOptions_withCustomConfigurations() { config.setDefaultLanguage( Locale.GERMAN ); config.setLanguage( Locale.FRANCE ); config.setOption( "OTHER_KEY", "OTHER_VALUE" ); Map<String, Object> customConfiguration = config.getAllOptions(); assertEquals( "fr", customConfiguration.get( LANGUAGE ) ); assertEquals( "de", customConfiguration.get( DEFAULT_LANGUAGE ) ); assertEquals( "OTHER_VALUE", customConfiguration.get( "OTHER_KEY" ) ); } @Test public void testToJason_withDefaultConfigurations() { assertDefaultConfiguration( config.toJson() ); } @Test public void testDefaultConfiguration_fromToolbarConfiguration() { config = new RichTextEditorConfiguration( new ToolbarConfiguration() ); assertDefaultConfiguration( config.toJson() ); } @Test public void testToJason_withCustomConfiguration() { config.setDefaultLanguage( Locale.ITALIAN ); config.setLanguage( Locale.JAPANESE ); config.setRemoveStyles( false ); config.setRemoveFormat( false ); config.setRemovePasteFromWord( false ); config.setRemovePasteText( false ); config.setToolbarCollapsible( true ); config.setToolbarInitialExpanded( false ); JsonObject json = config.toJson(); assertEquals( "it", json.get( "defaultLanguage" ).asString()); assertEquals( "ja", json.get( "language" ).asString()); assertFalse( json.get( "toolbarStartupExpanded" ).asBoolean() ); assertTrue( json.get( "toolbarCanCollapse" ).asBoolean() ); JsonValue toolbarGroupsValue = json.get( "toolbarGroups" ); JsonArray toolbarGroupsArray = toolbarGroupsValue.asArray(); assertEquals( 5, toolbarGroupsArray.size() ); assertEquals( "", json.get( "removeButtons" ).asString()); } @Test public void testToJason_withCustomConfiguration_numberOption() { config.setOption( "integer", Integer.valueOf( 10 ) ); config.setOption( "long", Long.valueOf( 11 ) ); config.setOption( "float", Float.valueOf( 12 ) ); config.setOption( "double", Double.valueOf( 13 ) ); JsonObject json = config.toJson(); assertEquals( 10, json.get( "integer" ).asInt()); assertEquals( 11, json.get( "long" ).asLong()); assertEquals( 12, json.get( "float" ).asFloat(), 0.0001 ); assertEquals( 13, json.get( "double" ).asDouble(), 0.0001); } private static void assertDefaultConfiguration( JsonObject json ) { assertEquals( "en", json.get( "defaultLanguage" ).asString()); assertEquals( Locale.getDefault().getLanguage(), json.get( "language" ).asString()); assertTrue( json.get( "toolbarStartupExpanded" ).asBoolean() ); assertFalse( json.get( "toolbarCanCollapse" ).asBoolean() ); JsonValue toolbarGroupsValue = json.get( "toolbarGroups" ); JsonArray toolbarGroupsArray = toolbarGroupsValue.asArray(); assertEquals( 5, toolbarGroupsArray.size() ); JsonObject basicStylesGroup = toolbarGroupsArray.get( 0 ).asObject(); assertEquals( "basicstyles", basicStylesGroup.get( "name" ).asString() ); JsonArray basicStylesGroups = basicStylesGroup.get( "groups" ).asArray(); assertEquals( 2, basicStylesGroups.size() ); JsonObject paragraphGroup = toolbarGroupsArray.get( 1 ).asObject(); assertEquals( "paragraph", paragraphGroup.get( "name" ).asString() ); JsonArray paragraphGroups = paragraphGroup.get( "groups" ).asArray(); assertEquals( 3, paragraphGroups.size() ); assertEquals( "/", toolbarGroupsArray.get( 2 ).asString() ); JsonObject styles = toolbarGroupsArray.get( 3 ).asObject(); assertEquals( "styles", styles.get( "name" ).asString() ); JsonObject colors = toolbarGroupsArray.get( 4 ).asObject(); assertEquals( "colors", colors.get( "name" ).asString() ); assertEquals( "PasteText,PasteFromWord,Styles,Format", json.get( "removeButtons" ).asString()); } }