/***************************************************************** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. ****************************************************************/ package org.apache.cayenne.query; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.apache.cayenne.util.Util; import org.junit.Test; public class SQLTemplateTest { @Test public void testSetParams() throws Exception { SQLTemplate query = new SQLTemplate(); assertTrue(query.getParams().isEmpty()); Map<String, Object> params = new HashMap<>(); params.put("a", "b"); query.setParams(params); assertEquals(params, query.getParams()); query.setParams(null); assertTrue(query.getParams().isEmpty()); } @Test public void testSetParamsArray() throws Exception { SQLTemplate query = new SQLTemplate(); assertTrue(query.getPositionalParams().isEmpty()); query.setParamsArray("N", "m"); assertEquals(Arrays.asList("N", "m"), query.getPositionalParams()); query.setParamsArray(); assertTrue(query.getPositionalParams().isEmpty()); } @Test public void testSetParams_MixingStyles() throws Exception { SQLTemplate query = new SQLTemplate(); assertTrue(query.getParams().isEmpty()); assertTrue(query.getPositionalParams().isEmpty()); Map<String, Object> params = Collections.<String, Object> singletonMap("a", "b"); query.setParams(params); assertEquals(params, query.getParams()); assertTrue(query.getPositionalParams().isEmpty()); query.setParamsArray("D", "G"); assertEquals(Arrays.asList("D", "G"), query.getPositionalParams()); assertTrue(query.getParams().isEmpty()); // even resetting named to null should result in resetting positional query.setParams(null); assertTrue(query.getParams().isEmpty()); assertTrue(query.getPositionalParams().isEmpty()); } @Test public void testGetDefaultTemplate() { SQLTemplate query = new SQLTemplate(); query.setDefaultTemplate("AAA # BBB"); assertEquals("AAA # BBB", query.getDefaultTemplate()); } @Test public void testGetTemplate() { SQLTemplate query = new SQLTemplate(); // no template for key, no default template... must be null assertNull(query.getTemplate("key1")); // no template for key, must return default query.setDefaultTemplate("AAA # BBB"); assertEquals("AAA # BBB", query.getTemplate("key1")); // must find template query.setTemplate("key1", "XYZ"); assertEquals("XYZ", query.getTemplate("key1")); // add another template.. still must find query.setTemplate("key2", "123"); assertEquals("XYZ", query.getTemplate("key1")); assertEquals("123", query.getTemplate("key2")); } @Test public void testColumnNameCapitalization() { SQLTemplate q1 = new SQLTemplate("E1", "SELECT"); assertSame(CapsStrategy.DEFAULT, q1.getColumnNamesCapitalization()); q1.setColumnNamesCapitalization(CapsStrategy.UPPER); assertEquals(CapsStrategy.UPPER, q1.getColumnNamesCapitalization()); } @Test public void testSerializability() throws Exception { SQLTemplate o = new SQLTemplate("Test", "DO SQL"); Object clone = Util.cloneViaSerialization(o); assertTrue(clone instanceof SQLTemplate); SQLTemplate c1 = (SQLTemplate) clone; assertNotSame(o, c1); assertEquals(o.getRoot(), c1.getRoot()); assertEquals(o.getDefaultTemplate(), c1.getDefaultTemplate()); } }