Author: andrei_exadel
Date: 2008-12-05 11:37:52 -0500 (Fri, 05 Dec 2008)
New Revision: 11589
Modified:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/CalendarTestBean.java
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/calendar/calendarTest.xhtml
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/CalendarTest.java
Log:
RF-5152
Modified:
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/CalendarTestBean.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/CalendarTestBean.java 2008-12-05
16:01:56 UTC (rev 11588)
+++
trunk/test-applications/seleniumTest/richfaces/src/main/java/org/ajax4jsf/bean/CalendarTestBean.java 2008-12-05
16:37:52 UTC (rev 11589)
@@ -73,6 +73,11 @@
private String mode = UICalendar.AJAX_MODE;
private String status;
+
+ private Date preloadDateRangeStart;
+
+ private Date preloadDateRangeEnd;
+
public CalendarTestBean() {
selectedDate = DEFAULT_DATE;
@@ -81,6 +86,11 @@
datePattern = DATE_PATTERN;
locale = LOCALE;
timeZone = TIME_ZONE;
+ Calendar c = getLocale()!=null ? Calendar.getInstance(getLocale()) :
Calendar.getInstance();
+ c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH) - 1, 1);
+ preloadDateRangeStart = c.getTime(); // Set preloadBegin by the first day of the
last month
+ c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 3, 0);
+ preloadDateRangeEnd = c.getTime(); // Set preloadEnd by the last day of the next
month
}
public Date getSelectedDate() {
@@ -204,6 +214,7 @@
status = "";
selectedDate = new Date();
isPopup = false;
+ currentDate = new Date();
}
public String resetAction() {
@@ -274,4 +285,32 @@
this.isPopup = isPopup;
}
+ /**
+ * @return the preloadDateRangeStart
+ */
+ public Date getPreloadDateRangeStart() {
+ return preloadDateRangeStart;
+ }
+
+ /**
+ * @param preloadDateRangeStart the preloadDateRangeStart to set
+ */
+ public void setPreloadDateRangeStart(Date preloadDateRangeStart) {
+ this.preloadDateRangeStart = preloadDateRangeStart;
+ }
+
+ /**
+ * @return the preloadDateRangeEnd
+ */
+ public Date getPreloadDateRangeEnd() {
+ return preloadDateRangeEnd;
+ }
+
+ /**
+ * @param preloadDateRangeEnd the preloadDateRangeEnd to set
+ */
+ public void setPreloadDateRangeEnd(Date preloadDateRangeEnd) {
+ this.preloadDateRangeEnd = preloadDateRangeEnd;
+ }
+
}
Modified:
trunk/test-applications/seleniumTest/richfaces/src/main/webapp/pages/calendar/calendarTest.xhtml
===================================================================
(Binary files differ)
Modified:
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/CalendarTest.java
===================================================================
---
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/CalendarTest.java 2008-12-05
16:01:56 UTC (rev 11588)
+++
trunk/test-applications/seleniumTest/richfaces/src/test/java/org/richfaces/testng/CalendarTest.java 2008-12-05
16:37:52 UTC (rev 11589)
@@ -152,13 +152,25 @@
String weekNumId = calendarId + "WeekNum2";
selenium.click("//tr[@id='" + weekNumId +
"']/td[starts-with(@class, '" + availableDayCellClass +
"')]");
}
-
+
void changeCurrentDate(boolean wait4ajax) {
selenium.click("//td[@id='" + calendarHeaderId +
"']/table/tbody/tr/td/div");
if (wait4ajax) {
waitForAjaxCompletion();
}
}
+
+ Calendar changeCurrentDate(Calendar c, boolean wait4ajax) {
+ selenium.click("//td[@id='" + calendarHeaderId +
"']/table/tbody/tr/td/div");
+ if (wait4ajax) {
+ waitForAjaxCompletion();
+ }
+ c.set(Calendar.YEAR, c.get(Calendar.YEAR) - 1);
+ if (getCalendarDate().indexOf(c.get(Calendar.YEAR)) == -1) {
+ Assert.fail("Date is incorrect");
+ }
+ return c;
+ }
void reset() {
clickCommandAndWait(resetActionId);
@@ -172,7 +184,27 @@
selenium.click(timeSelectionXpath);
}
- void _testModelDataAppliedToClient() {
+ String getCalendarDate() {
+ return selenium.getText(currentDateHeaderXpath);
+ }
+
+ Calendar nextMonth(Calendar c) {
+ String date = getCalendarDate();
+ selenium.click("//td[@id='" + calendarHeaderId +
"']/table/tbody/tr/td[@class='rich-calendar-tool'][3]/div");
+ Assert.assertFalse(getCalendarDate().equals(date), "Current date has not been
changed after next month clicked");
+ c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
+ return c;
+ }
+
+ Calendar previousMonth(Calendar c) {
+ String date = getCalendarDate();
+ selenium.click("//td[@id='" + calendarHeaderId +
"']/table/tbody/tr/td[@class='rich-calendar-tool'][2]/div");
+ Assert.assertFalse(getCalendarDate().equals(date), "Current date has not been
changed after previous month clicked");
+ c.set(Calendar.MONTH, c.get(Calendar.MONTH) - 1);
+ return c;
+ }
+
+ void _testModelDataAppliedToClient(Calendar c) {
String currentDate = selenium.getText(dateSelectionXpath);
selenium.click("//table[@id='"+calendarId+"']/tbody/tr/td[text() =
'13']");
@@ -180,8 +212,6 @@
Assert.fail("Enabled attribute of data model was not applied for client
data. 13th day should disabled and should force date change after click.");
}
- Calendar c = Calendar.getInstance();
- c.setTime(new Date());
int currentMonth = c.get(Calendar.MONTH);
String cellDay7StyleClass =
selenium.getAttribute("//table[@id='"+calendarId+"']/tbody/tr/td[text()
= '7']/@class");
@@ -198,19 +228,55 @@
}
@Test
+ public void testClientMode(Template template) {
+ renderPage(template, RESET_METHOD);
+ initIds(getParentId());
+ switchToClientMode();
+
+ Calendar c = Calendar.getInstance();
+ c = previousMonth(c);
+ Assert.assertTrue(runScript("window.done").equals(Boolean.FALSE.toString().toLowerCase()),
"Change of current date should not force ajax request in client mode.");
+
+ try {
+ _testModelDataAppliedToClient(c);
+ c = nextMonth(c);
+ _testModelDataAppliedToClient(c);
+ c = nextMonth(c);
+ _testModelDataAppliedToClient(c);
+ } catch (AssertionError e) {
+ Assert.fail("Calendar does not preload data in client mode for interval defined
by 'preloadDateRangeBegin' & 'preloadDateRangeEnd'. It should preload
data for last, current & next month. " + e);
+ }
+
+ boolean error = false;
+ c = nextMonth(c);
+ try {
+ _testModelDataAppliedToClient(c);
+ }catch (AssertionError e) {
+ error = true;
+ }
+
+ if (!error) {
+ Assert.fail("Calendar pre-loaded data for interval that not defined by
'preloadDateRangeBegin' & 'preloadDateRangeEnd'");
+ }
+
+ }
+
+ @Test
public void testDataModelAttribute(Template template) {
renderPage(template, RESET_METHOD);
initIds(getParentId());
- _testModelDataAppliedToClient();
+ Calendar c = Calendar.getInstance();
+ _testModelDataAppliedToClient(c);
+
try {
- changeCurrentDate(true);
+ c = changeCurrentDate(c, true);
}catch (SeleniumException exception) {
Assert.fail("Celendar in ajax mode does not request for the next portion of data
after current date has been changed");
}
- _testModelDataAppliedToClient();
+ _testModelDataAppliedToClient(c);
}
@@ -378,7 +444,7 @@
@Test
public void testValueAndCurrentDateOfCalendarInCaseOfPopupTrue(Template template) {
- renderPage(template);
+ renderPage(template, RESET_METHOD);
initIds(getParentId());
String expectedSelectedDate = "03/03/2007 11:00";
String expectedCurrentDate = "04/04/2008 13:00";
@@ -425,7 +491,7 @@
@Test
public void testValueAndCurrentDateOfCalendarWithPopupFalse(Template template) {
- renderPage(template, null);
+ renderPage(template, RESET_METHOD);
initIds(getParentId());
String expectedSelectedDate = "03/03/2007 11:00";
String expectedCurrentDate = "04/04/2008 13:00";
Show replies by date