/* * 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.Collection; import junit.framework.Assert; import junit.framework.TestCase; import ru.codeinside.gses.lazyquerycontainer.LazyQueryDefinition; import ru.codeinside.gses.lazyquerycontainer.LazyQueryView; import com.vaadin.data.Item; import com.vaadin.data.Property; public class LazyQueryViewWithoutStatusColumnTest extends TestCase { private final int viewSize = 100; private LazyQueryView view; private LazyQueryDefinition definition; protected void setUp() throws Exception { super.setUp(); definition = new LazyQueryDefinition(true, this.viewSize); definition.addProperty("Index", Integer.class, 0, true, true); definition.addProperty("Reverse Index", Integer.class, 0, true, false); definition.addProperty("Editable", String.class, "", false, false); MockQueryFactory factory = new MockQueryFactory(viewSize, 0, 0); factory.setQueryDefinition(definition); view = new LazyQueryView(definition, factory); } protected void tearDown() throws Exception { super.tearDown(); definition.removeProperty("Index"); definition.removeProperty("Reverse Index"); definition.removeProperty("Editable"); Assert.assertEquals(0, definition.getPropertyIds().size()); } public void testSize() { assertEquals(viewSize, view.size()); } public void testGetItem() { for (int i = 0; i < viewSize; i++) { Item item = view.getItem(i); Property indexProperty = item.getItemProperty("Index"); assertEquals(i, indexProperty.getValue()); assertTrue(indexProperty.isReadOnly()); } } public void testAscendingSort() { view.sort(new Object[] { "Index" }, new boolean[] { true }); for (int i = 0; i < viewSize; i++) { Item item = view.getItem(i); Property indexProperty = item.getItemProperty("Index"); assertEquals(i, indexProperty.getValue()); assertTrue(indexProperty.isReadOnly()); } } public void testDescendingSort() { view.sort(new Object[] { "Index" }, new boolean[] { false }); for (int i = 0; i < viewSize; i++) { Item item = view.getItem(i); Property indexProperty = item.getItemProperty("Index"); assertEquals(viewSize - i - 1, indexProperty.getValue()); assertTrue(indexProperty.isReadOnly()); } } public void testGetSortablePropertyIds() { Collection<?> sortablePropertyIds = view.getQueryDefinition().getSortablePropertyIds(); assertEquals(1, sortablePropertyIds.size()); assertEquals("Index", sortablePropertyIds.iterator().next()); } public void testAddCommitItem() { int originalViewSize = view.size(); assertFalse(view.isModified()); int addIndex = view.addItem(); assertEquals("Item must be added at the beginning", addIndex, 0); assertEquals(originalViewSize + 1, view.size()); assertTrue(view.isModified()); view.commit(); view.refresh(); assertFalse(view.isModified()); } public void testAddTwiceCommitItem() { int originalViewSize = view.size(); assertFalse(view.isModified()); // Add the first Item int addIndex = (Integer) view.addItem(); assertEquals("Item must be added at the beginning.", addIndex, 0); assertEquals(originalViewSize + 1, view.size()); assertTrue(view.isModified()); // Add a second Item addIndex = (Integer) view.addItem(); assertEquals("Second item must be added at the beginning as well.", addIndex, 0); assertEquals(originalViewSize + 2, view.size()); assertTrue(view.isModified()); view.commit(); view.refresh(); assertFalse(view.isModified()); } public void testAddDiscardItem() { int originalViewSize = view.size(); assertFalse(view.isModified()); int addIndex = view.addItem(); assertEquals("Item must be added at the beginning", addIndex, 0); assertEquals(originalViewSize + 1, view.size()); assertTrue(view.isModified()); view.discard(); view.refresh(); assertFalse(view.isModified()); assertEquals(originalViewSize, view.size()); } public void testModifyCommitItem() { int modifyIndex = 0; assertFalse(view.isModified()); view.getItem(modifyIndex).getItemProperty("Editable").setValue("test"); assertTrue(view.isModified()); view.commit(); view.refresh(); assertFalse(view.isModified()); assertEquals("test", view.getItem(modifyIndex).getItemProperty("Editable").getValue()); } public void testModifyDiscardItem() { int modifyIndex = 0; assertFalse(view.isModified()); view.getItem(modifyIndex).getItemProperty("Editable").setValue("test"); assertTrue(view.isModified()); view.discard(); view.refresh(); assertFalse(view.isModified()); assertEquals("", view.getItem(modifyIndex).getItemProperty("Editable").getValue()); } public void testRemoveCommitItem() { int removeIndex = 0; int originalViewSize = view.size(); assertFalse(view.isModified()); assertFalse(view.getItem(removeIndex).getItemProperty("Editable").isReadOnly()); view.removeItem(removeIndex); assertEquals(originalViewSize, view.size()); assertTrue(view.getItem(removeIndex).getItemProperty("Editable").isReadOnly()); assertTrue(view.isModified()); view.commit(); view.refresh(); assertFalse(view.isModified()); assertEquals(originalViewSize - 1, view.size()); assertEquals(removeIndex + 1, view.getItem(removeIndex).getItemProperty("Index").getValue()); } public void testRemoveDiscardItem() { int removeIndex = 0; int originalViewSize = view.size(); assertFalse(view.isModified()); assertFalse(view.getItem(removeIndex).getItemProperty("Editable").isReadOnly()); view.removeItem(removeIndex); assertEquals(originalViewSize, view.size()); assertTrue(view.getItem(removeIndex).getItemProperty("Editable").isReadOnly()); assertTrue(view.isModified()); view.discard(); view.refresh(); assertFalse(view.isModified()); assertEquals(originalViewSize, view.size()); assertEquals(removeIndex, view.getItem(removeIndex).getItemProperty("Index").getValue()); assertFalse(view.getItem(removeIndex).getItemProperty("Editable").isReadOnly()); } }