package com.liferay.ide.layouttpl.core.tests; import static org.junit.Assert.assertEquals; import com.liferay.ide.layouttpl.core.model.LayoutTplElement; import com.liferay.ide.layouttpl.core.model.PortletColumnElement; import com.liferay.ide.layouttpl.core.model.PortletLayoutElement; import org.eclipse.core.resources.IFile; import org.eclipse.sapphire.ElementList; import org.eclipse.sapphire.services.ValidationService; import org.junit.Test; /** * @author Kuo Zhang * */ public class LayoutTplTestsBootstrap extends LayoutTplCoreTests { protected LayoutTplElement createModel_132_nest( boolean isBootstrapStyle, String className, boolean is62) { final LayoutTplElement layoutTpl = LayoutTplElement.TYPE.instantiate(); layoutTpl.setBootstrapStyle( isBootstrapStyle ); layoutTpl.setClassName( className ); layoutTpl.setIs62( is62 ); final PortletLayoutElement row1 = layoutTpl.getPortletLayouts().insert(); final PortletColumnElement column11 = row1.getPortletColumns().insert(); column11.setWeight( 12 ); final PortletLayoutElement row2 = layoutTpl.getPortletLayouts().insert(); final PortletColumnElement column21 = row2.getPortletColumns().insert(); column21.setWeight( 4 ); final PortletColumnElement column22 = row2.getPortletColumns().insert(); column22.setWeight( 4 ); final PortletColumnElement column23 = row2.getPortletColumns().insert(); column23.setWeight( 4 ); final PortletLayoutElement row3 = layoutTpl.getPortletLayouts().insert(); final PortletColumnElement column31 = row3.getPortletColumns().insert(); column31.setWeight( 8 ); final PortletLayoutElement row311 = column31.getPortletLayouts().insert(); final PortletColumnElement column3111 = row311.getPortletColumns().insert(); column3111.setWeight( 12 ); final PortletLayoutElement row312 = column31.getPortletLayouts().insert(); final PortletColumnElement column3121 = row312.getPortletColumns().insert(); column3121.setWeight( 6 ); final PortletColumnElement column3122 = row312.getPortletColumns().insert(); column3122.setWeight( 6 ); final PortletLayoutElement row31221 = column3122.getPortletLayouts().insert(); final PortletColumnElement column312211 = row31221.getPortletColumns().insert(); column312211.setWeight( 12 ); final PortletColumnElement column32 = row3.getPortletColumns().insert(); column32.setWeight( 4 ); return layoutTpl; } @Test public void evalTemplateFromChangedModel_1_3_2_nest_columns() throws Exception { IFile refTplFile = getFileFromTplName( "1_3_2_nest_changed_columns.tpl" ); final String className = convertToTplClassName( "1_3_2_nest_changed_columns.tpl" ); final LayoutTplElement layoutTpl = createModel_132_nest( isBootstrapStyle(), className, is62()); final PortletLayoutElement row1 = (PortletLayoutElement) layoutTpl.getPortletLayouts().get( 0 ); final PortletLayoutElement row2 = (PortletLayoutElement) layoutTpl.getPortletLayouts().get( 1 ); final PortletLayoutElement row3 = (PortletLayoutElement) layoutTpl.getPortletLayouts().get( 2 ); final PortletLayoutElement row311 = row3.getPortletColumns().get( 0 ).getPortletLayouts().get( 0 ); final PortletLayoutElement row312 = row3.getPortletColumns().get( 0 ).getPortletLayouts().get( 1 ); final PortletLayoutElement row31221 = row312.getPortletColumns().get( 1 ).getPortletLayouts().get( 0 ); row1.getPortletColumns().remove( row1.getPortletColumns().get( 0 ) ); layoutTpl.getPortletLayouts().remove( row1 ); PortletColumnElement insertedColumn = row311.getPortletColumns().insert(); insertedColumn.setWeight( 3 ); row311.getPortletColumns().get( 0 ).setWeight( 9 ); row2.getPortletColumns().remove( row2.getPortletColumns().get( 0 ) ); row2.getPortletColumns().get( 0 ).setWeight( 8 ); insertedColumn = row31221.getPortletColumns().insert(); insertedColumn.setWeight( 2 ); row31221.getPortletColumns().get( 0 ).setWeight( 10 ); evalModelWithFile( refTplFile, layoutTpl ); } @Override protected String getFilesPrefix() { return "bootstrap/files/"; } @Override protected boolean isBootstrapStyle() { return true; } @Override protected boolean is62() { return true; } @Test public void testPorteltColumnWeightValidationService() { final LayoutTplElement layoutTpl = LayoutTplElement.TYPE.instantiate(); layoutTpl.setBootstrapStyle( true ); final PortletLayoutElement row = layoutTpl.getPortletLayouts().insert(); final PortletColumnElement column = row.getPortletColumns().insert(); final ValidationService validationService = column.getWeight().service( ValidationService.class ); column.setWeight( 0 ); assertEquals( "The weight value is invalid, should be in (0, 12]", validationService.validation().message() ); column.setWeight( -1 ); assertEquals( "The weight value is invalid, should be in (0, 12]", validationService.validation().message() ); column.setWeight( 13 ); assertEquals( "The weight value is invalid, should be in (0, 12]", validationService.validation().message() ); column.setWeight( 6 ); assertEquals( "ok", validationService.validation().message() ); } @Test public void testPortletColumnFullWeightDefaultValueService() throws Exception { final LayoutTplElement layoutTpl = LayoutTplElement.TYPE.instantiate(); layoutTpl.setBootstrapStyle( true ); final PortletColumnElement column = layoutTpl.getPortletLayouts().insert().getPortletColumns().insert(); assertEquals( 12, column.getFullWeight().content( true ).intValue() ); } // test sum of column weights @Test public void testPortletColumnsValidationSerive() { final LayoutTplElement layoutTpl = LayoutTplElement.TYPE.instantiate(); layoutTpl.setBootstrapStyle( true ); final PortletLayoutElement row = layoutTpl.getPortletLayouts().insert(); final ElementList<PortletColumnElement> columns = row.getPortletColumns(); final PortletColumnElement column = columns.insert(); final ValidationService validationService = columns.service( ValidationService.class ); assertEquals( "ok", validationService.validation().message() ); column.setWeight( 0 ); assertEquals( "The sum of weight of columns should be: 12", validationService.validation().message() ); column.setWeight( -1 ); assertEquals( "The sum of weight of columns should be: 12", validationService.validation().message() ); column.setWeight( 6 ); assertEquals( "The sum of weight of columns should be: 12", validationService.validation().message() ); column.setWeight( 13 ); assertEquals( "The sum of weight of columns should be: 12", validationService.validation().message() ); column.setWeight( 12 ); assertEquals( "ok", validationService.validation().message() ); } @Test public void testPortletColumnWeightInitialValueService() throws Exception { final LayoutTplElement layoutTpl = LayoutTplElement.TYPE.instantiate(); layoutTpl.setBootstrapStyle( true ); final PortletLayoutElement row = layoutTpl.getPortletLayouts().insert(); final ElementList<PortletColumnElement> columns = row.getPortletColumns(); columns.insert(); columns.insert(); columns.insert(); columns.insert(); assertEquals( 6, columns.get( 0 ).getWeight().content().intValue() ); assertEquals( 3, columns.get( 1 ).getWeight().content().intValue() ); assertEquals( 2, columns.get( 2 ).getWeight().content().intValue() ); assertEquals( 1, columns.get( 3 ).getWeight().content().intValue() ); columns.get( 0 ).setWeight( 2 ); columns.get( 1 ).setWeight( 2 ); columns.get( 2 ).setWeight( 2 ); columns.get( 3 ).setWeight( 2 ); columns.insert(); assertEquals( 4, columns.get( 4 ).getWeight().content().intValue() ); } @Test public void testPortletLayoutClassNameDefaultValueService() throws Exception { final LayoutTplElement layoutTpl = LayoutTplElement.TYPE.instantiate(); layoutTpl.setBootstrapStyle( true ); layoutTpl.setIs62( true ); final PortletLayoutElement row = layoutTpl.getPortletLayouts().insert(); assertEquals( "portlet-layout row-fluid", row.getClassName().content( true ) ); } }