/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gses.lazyquerycontainer.test;
import java.util.HashMap;
import java.util.Map;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import ru.codeinside.gses.lazyquerycontainer.AbstractBeanQuery;
import ru.codeinside.gses.lazyquerycontainer.BeanQueryFactory;
import ru.codeinside.gses.lazyquerycontainer.LazyQueryDefinition;
import ru.codeinside.gses.lazyquerycontainer.LazyQueryView;
import ru.codeinside.gses.lazyquerycontainer.QueryItemStatus;
import com.vaadin.data.Item;
public class BeanQueryTest {
@Before
public void setUp() throws Exception {
MockBeanQuery.reset();
}
@Test
public void testLoadItems() {
LazyQueryDefinition queryDefinition = new LazyQueryDefinition(true, 50);
queryDefinition.addProperty(LazyQueryView.PROPERTY_ID_ITEM_STATUS, QueryItemStatus.class, QueryItemStatus.None,
true, false);
queryDefinition.addProperty("name", String.class, "test-bean-2", true, false);
Map<String, Object> queryConfiguration = new HashMap<String, Object>();
queryConfiguration.put("description", "test-bean-description-2");
BeanQueryFactory<MockBeanQuery> factory = new BeanQueryFactory<MockBeanQuery>(MockBeanQuery.class);
factory.setQueryConfiguration(queryConfiguration);
factory.setQueryDefinition(queryDefinition);
LazyQueryView view = new LazyQueryView(queryDefinition, factory);
Assert.assertEquals(queryDefinition, view.getQueryDefinition());
Assert.assertEquals(1, view.size());
Item item = view.getItem(0);
Assert.assertEquals("test-bean-1", item.getItemProperty("name").getValue());
Assert.assertEquals("test-bean-description-1", item.getItemProperty("description").getValue());
}
@Test
public void testSaveItems() {
BeanQueryFactory<MockBeanQuery> factory = new BeanQueryFactory<MockBeanQuery>(MockBeanQuery.class);
LazyQueryView view = new LazyQueryView(factory, true, 50);
LazyQueryDefinition queryDefinition = (LazyQueryDefinition) view.getQueryDefinition();
queryDefinition.addProperty(LazyQueryView.PROPERTY_ID_ITEM_STATUS, QueryItemStatus.class, QueryItemStatus.None,
true, false);
queryDefinition.addProperty("name", String.class, "test-bean-2", true, false);
Map<String, Object> queryConfiguration = new HashMap<String, Object>();
queryConfiguration.put("description", "test-bean-description-2");
factory.setQueryConfiguration(queryConfiguration);
factory.setQueryDefinition(queryDefinition);
Assert.assertEquals(1, view.size());
int index = view.addItem();
Assert.assertEquals(2, view.size());
Item item = view.getItem(index);
Assert.assertEquals("test-bean-2", item.getItemProperty("name").getValue());
Assert.assertEquals("test-bean-description-2", item.getItemProperty("description").getValue());
Assert.assertFalse((Boolean) item.getItemProperty("saved").getValue());
view.commit();
Assert.assertTrue((Boolean) item.getItemProperty("saved").getValue());
}
@Test
public void testSaveItemsWithoutCompositeItems() {
BeanQueryFactory<MockBeanQuery> factory = new BeanQueryFactory<MockBeanQuery>(MockBeanQuery.class);
LazyQueryView view = new LazyQueryView(factory, false, 50);
LazyQueryDefinition queryDefinition = (LazyQueryDefinition) view.getQueryDefinition();
queryDefinition.addProperty("name", String.class, "test-bean-2", true, false);
Map<String, Object> queryConfiguration = new HashMap<String, Object>();
queryConfiguration.put("description", "test-bean-description-2");
factory.setQueryConfiguration(queryConfiguration);
factory.setQueryDefinition(queryDefinition);
Assert.assertEquals(1, view.size());
int index = view.addItem();
Assert.assertEquals(2, view.size());
Item item = view.getItem(index);
Assert.assertEquals("test-bean-2", item.getItemProperty("name").getValue());
Assert.assertEquals("test-bean-description-2", item.getItemProperty("description").getValue());
Assert.assertFalse((Boolean) item.getItemProperty("saved").getValue());
view.commit();
Assert.assertTrue((Boolean) item.getItemProperty("saved").getValue());
}
@Test(expected = UnsupportedOperationException.class)
public void testRemoveAllItems() {
LazyQueryDefinition queryDefinition = new LazyQueryDefinition(true, 50);
queryDefinition.addProperty(LazyQueryView.PROPERTY_ID_ITEM_STATUS, QueryItemStatus.class, QueryItemStatus.None,
true, false);
queryDefinition.addProperty("name", String.class, "test-bean-2", true, false);
Map<String, Object> queryConfiguration = new HashMap<String, Object>();
queryConfiguration.put("description", "test-bean-description-2");
BeanQueryFactory<MockBeanQuery> factory = new BeanQueryFactory<MockBeanQuery>(MockBeanQuery.class);
factory.setQueryConfiguration(queryConfiguration);
factory.setQueryDefinition(queryDefinition);
LazyQueryView view = new LazyQueryView(queryDefinition, factory);
view.removeAllItems();
}
@Test(expected = RuntimeException.class)
public void testInvalidConstruction() {
BeanQueryFactory testFactory = new BeanQueryFactory<AbstractBeanQuery>(AbstractBeanQuery.class);
testFactory.constructQuery(null, null);
}
@Test(expected = RuntimeException.class)
public void testFailingItemConstruction() {
LazyQueryDefinition queryDefinition = new LazyQueryDefinition(true, 50);
queryDefinition.addProperty(LazyQueryView.PROPERTY_ID_ITEM_STATUS, QueryItemStatus.class, QueryItemStatus.None,
true, false);
queryDefinition.addProperty("name", String.class, "test-bean-2", true, false);
Map<String, Object> queryConfiguration = new HashMap<String, Object>();
queryConfiguration.put("description", "test-bean-description-2");
BeanQueryFactory<MockBeanQueryWithFailingItemConstruction> factory = new BeanQueryFactory<MockBeanQueryWithFailingItemConstruction>(MockBeanQueryWithFailingItemConstruction.class);
factory.setQueryConfiguration(queryConfiguration);
factory.setQueryDefinition(queryDefinition);
LazyQueryView view = new LazyQueryView(queryDefinition, factory);
view.addItem();
}
@Test
public void testAbstractBeanQueryDefaultConstructor() {
new MockBeanQuery();
}
}