/* * Copyright (c) 2009 Mysema Ltd. * All rights reserved. * */ package com.mysema.rdfbean.tapestry; import static com.mysema.query.alias.Alias.$; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.util.Collections; import org.apache.tapestry5.beaneditor.PropertyModel; import org.apache.tapestry5.grid.ColumnSort; import org.apache.tapestry5.grid.GridDataSource; import org.apache.tapestry5.grid.SortConstraint; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import com.mysema.query.alias.Alias; import com.mysema.rdfbean.TEST; import com.mysema.rdfbean.annotations.ClassMapping; import com.mysema.rdfbean.annotations.Id; import com.mysema.rdfbean.annotations.Predicate; import com.mysema.rdfbean.object.DefaultConfiguration; import com.mysema.rdfbean.object.Session; import com.mysema.rdfbean.object.SessionFactoryImpl; import com.mysema.rdfbean.sesame.MemoryRepository; public class BeanGridDataSourceTest { // TODO : better tests private static SessionFactoryImpl sessionFactory; @ClassMapping(ns = TEST.NS) public static class User { @Id String id; @Predicate private String firstName; @Predicate private String lastName; public User() { } public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } } @BeforeClass public static void before() throws IOException { sessionFactory = new SessionFactoryImpl(); sessionFactory.setConfiguration(new DefaultConfiguration(User.class)); sessionFactory.setRepository(new MemoryRepository()); sessionFactory.initialize(); Session session = sessionFactory.openSession(); try { for (char c = 'A'; c < 'Z'; c++) { for (int i = 0; i < 10; i++) { String firstName = String.valueOf(c) + i; String lastName = String.valueOf(c + i) + i; if (i % 2 == 0) { firstName = firstName.toLowerCase(); } session.save(new User(firstName, lastName)); } } } finally { session.close(); } } @AfterClass public static void after() throws IOException { sessionFactory.close(); } private GridDataSource dataSource; @Before public void setUp() { User user = Alias.alias(User.class); dataSource = new BeanGridDataSource<User>(sessionFactory, $(user), $(user.getFirstName()).asc(), true); } @Test public void GetAvailableRows() { assertEquals(250, dataSource.getAvailableRows()); } @Test public void Prepare() { dataSource.prepare(0, 10, Collections.<SortConstraint> emptyList()); } @Test public void Prepare_with_sort() { PropertyModel firstName = new SimplePropertyModel("firstName", String.class); SortConstraint constraint = new SortConstraint(firstName, ColumnSort.ASCENDING); dataSource.prepare(0, 10, Collections.singletonList(constraint)); } @Test public void GetRowValue() { dataSource.prepare(0, 9, Collections.<SortConstraint> emptyList()); for (int i = 0; i < 10; i++) { dataSource.getRowValue(i); } dataSource.prepare(10, 19, Collections.<SortConstraint> emptyList()); for (int i = 10; i < 20; i++) { dataSource.getRowValue(i); } // ... dataSource.prepare(240, 249, Collections.<SortConstraint> emptyList()); for (int i = 240; i < 250; i++) { dataSource.getRowValue(i); } } // TODO : proper test for case sensitivity @Test public void GetRowType() { assertEquals(User.class, dataSource.getRowType()); } }