001 package org.hackystat.projectbrowser.page.projects; 002 003 import java.text.SimpleDateFormat; 004 import java.util.Date; 005 import java.util.Locale; 006 import java.util.Properties; 007 import java.util.logging.Logger; 008 import javax.xml.datatype.DatatypeConstants; 009 import javax.xml.datatype.XMLGregorianCalendar; 010 import org.apache.wicket.markup.html.form.Button; 011 import org.apache.wicket.markup.html.list.ListView; 012 import org.apache.wicket.util.tester.FormTester; 013 import org.apache.wicket.util.tester.WicketTester; 014 import org.hackystat.projectbrowser.ProjectBrowserApplication; 015 import org.hackystat.projectbrowser.ProjectBrowserProperties; 016 import org.hackystat.projectbrowser.authentication.SigninPage; 017 import org.hackystat.projectbrowser.page.sensordata.SensorDataPage; 018 import org.hackystat.projectbrowser.test.ProjectBrowserTestHelper; 019 import org.hackystat.sensorbase.client.SensorBaseClient; 020 import org.hackystat.sensorbase.client.SensorBaseClientException; 021 import org.hackystat.sensorbase.resource.projects.jaxb.Project; 022 import org.hackystat.sensorbase.resource.projects.jaxb.ProjectRef; 023 import org.hackystat.utilities.tstamp.Tstamp; 024 import org.junit.After; 025 import org.junit.Test; 026 import org.junit.Assert; 027 028 /** 029 * Tests the SensorDataPage. 030 * 031 * @author Philip Johnson 032 * @author Randy Cox 033 */ 034 public class TestProjectsPage extends ProjectBrowserTestHelper { 035 036 037 private static String DEFAULT_NAME = "Default"; 038 039 private static String TEST_NEW_NAME = "TestProjectName"; 040 private static String TEST_NEW_STARTDATE = "2008-01-01"; 041 private static String TEST_NEW_ENDDATE = "2008-12-31"; 042 private static String TEST_NEW_DESC = "Test description."; 043 044 045 046 private static String TEST_EDIT_STARTDATE = "2008-01-01"; 047 private static String TEST_EDIT_ENDDATE = "2008-12-31"; 048 private static String TEST_EDIT_DESC = "Test description."; 049 private static String TEST_EDIT_INVITEE = TEST_INVITEE; 050 051 052 private static String TEST_RENAME_NAME = "TestRenameProject"; 053 054 private static String PREFIX_LIST = "projectsForm:projListPanel:projListForm:projectTable:"; 055 private static String DATE_PATTERN = "yyyy-MM-dd"; 056 private static String PROJECTS = ".projects"; 057 private static String TRUE = "true"; 058 059 private String PROJECTS_LINK = "ProjectsPageLink"; 060 // private String LOGOUT_LINK = "LogoutLink"; 061 private String PROJECTS_FORM = "projectsForm"; 062 private String SIGNIN_FORM = "signinForm"; 063 private String LIST_PANEL = "projectsForm:projListPanel"; 064 private String EDIT_PANEL = "projectsForm:projEditPanel"; 065 private String RENAME_PANEL = "projectsForm:projRenamePanel"; 066 private String DELETE_PANEL = "projectsForm:projDeletePanel"; 067 private String LEAVE_PANEL = "projectsForm:projLeavePanel"; 068 private String REPLY_PANEL = "projectsForm:projReplyPanel"; 069 private String CLEARCACHE_PANEL = "projectsForm:projClearCachePanel"; 070 private String PROJECT_TABLE = "projectsForm:projListPanel:projListForm:projectTable"; 071 private String EDIT_BUTTON = ":editButton"; 072 private String RENAME_BUTTON = ":renameButton"; 073 private String DELETE_BUTTON = ":deleteButton"; 074 private String LEAVE_BUTTON = ":leaveButton"; 075 private String REPLY_BUTTON = ":replyButton"; 076 private String CLEARCACHE_BUTTON = ":clearCacheButton"; 077 078 private String USER = "user"; 079 private String PASSWORD = "password"; 080 private String SIGNIN = "Signin"; 081 private String NOT_FOUND = " project not found in table list."; 082 083 084 /** 085 * Clean up data. 086 * 087 * @throws Exception when communication error occurs. 088 */ 089 @After 090 public void cleanup() throws Exception { 091 SensorBaseClient client = new SensorBaseClient(getSensorBaseHostName(), TEST_USER, TEST_USER); 092 for (ProjectRef ref : client.getProjectIndex(TEST_USER).getProjectRef()) { 093 Project project = client.getProject(ref); 094 if (TEST_USER.equals(project.getOwner()) && !DEFAULT_NAME.equals(project.getName())) { 095 client.deleteProject(TEST_USER, project.getName()); 096 } 097 } 098 } 099 100 /** 101 * Logs in and navigates to the projects page. 102 * 103 * @param tester Wicket tester 104 */ 105 public void login(WicketTester tester) { 106 107 // Login and check for correct start page 108 tester.startPage(SigninPage.class); 109 FormTester signinForm = tester.newFormTester(SIGNIN_FORM); 110 signinForm.setValue(USER, TEST_USER); 111 signinForm.setValue(PASSWORD, TEST_USER); 112 signinForm.submit(SIGNIN); 113 tester.assertRenderedPage(SensorDataPage.class); 114 115 // Navigate to projects page and check that page is setup correctly 116 tester.clickLink(PROJECTS_LINK); 117 tester.assertRenderedPage(ProjectsPage.class); 118 tester.assertComponent(PROJECTS_FORM, ProjectsForm.class); 119 tester.assertVisible(LIST_PANEL); 120 tester.assertInvisible(EDIT_PANEL); 121 tester.assertInvisible(RENAME_PANEL); 122 tester.assertInvisible(LEAVE_PANEL); 123 tester.assertInvisible(DELETE_PANEL); 124 tester.assertInvisible(REPLY_PANEL); 125 tester.assertInvisible(CLEARCACHE_PANEL); 126 } 127 128 /** 129 * Dump project info to logger. 130 * 131 * @param project to log. 132 */ 133 public void logProject(Project project) { 134 Logger logger = ((ProjectBrowserApplication) ProjectBrowserApplication.get()).getLogger(); 135 logger.info(" Name = " + project.getName()); 136 logger.info(" Owner = " + project.getOwner()); 137 logger.info(" StartTime = " + project.getStartTime()); 138 logger.info(" EndTime = " + project.getEndTime()); 139 logger.info(" Description = " + project.getDescription()); 140 logger.info(" Members = " + project.getMembers().getMember().toString()); 141 logger.info(" Invitations = " + project.getInvitations().getInvitation().toString()); 142 logger.info(" Spectators = " + project.getSpectators().getSpectator().toString()); 143 Integer propertyCount = project.getProperties().getProperty().size(); 144 logger.info(" Properties row count= " + propertyCount.toString()); 145 if (propertyCount > 0) { 146 logger.info(" 1st projectPropertyKey = " 147 + project.getProperties().getProperty().get(0).getKey()); 148 logger.info(" 1st projectPropertyValue = " 149 + project.getProperties().getProperty().get(0).getValue()); 150 } 151 } 152 153 /** 154 * Loop through project list in List panel and find index of project. 155 * 156 * @param tester application 157 * @param name to look for in list 158 * @return index of project in list, -1 = not found 159 */ 160 private int findProjectIndexInList(WicketTester tester, String name) { 161 ListView listView = (ListView) tester 162 .getComponentFromLastRenderedPage(PROJECT_TABLE); 163 Integer index = -1; 164 for (int i = 0; i < listView.size(); i++) { 165 Project project = (Project) listView.getList().get(i); 166 if (name.equals(project.getName())) { 167 index = i; 168 break; 169 } 170 } 171 return index; 172 } 173 174 /** 175 * Loop through project list in List panel and find index of project. 176 * 177 * @param tester application 178 * @param name to look for in list 179 * @return index of project in list, -1 = not found 180 */ 181 private Project findProjectInList(WicketTester tester, String name) { 182 ListView listView = (ListView) tester 183 .getComponentFromLastRenderedPage(PROJECT_TABLE); 184 Project project = null; 185 for (int i = 0; i < listView.size(); i++) { 186 if (name.equals(((Project) listView.getList().get(i)).getName())) { 187 project = (Project) listView.getList().get(i); 188 break; 189 } 190 } 191 return project; 192 } 193 194 /** 195 * Dump component tree to log for debug. 196 * 197 * @throws SensorBaseClientException when communication error occurs. 198 */ 199 public void dumpComponentTree() throws SensorBaseClientException { // NOPMD WicketTester has 200 // its own assert classes. 201 Properties testProperties = getTestProperties(); 202 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 203 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 204 205 login(tester); 206 tester.debugComponentTrees(); 207 } 208 209 /** 210 * Test navigation to projects page and rendering of project list panel. 211 * 212 * @throws SensorBaseClientException when communication error occurs. 213 */ 214 @Test 215 public void testProjectsPage() throws SensorBaseClientException { // NOPMD WicketTester has its 216 // own assert classes. 217 Properties testProperties = getTestProperties(); 218 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 219 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 220 221 // Login 222 login(tester); 223 224 // Loop through table and make sure that test project is present 225 ListView listView = (ListView) tester 226 .getComponentFromLastRenderedPage(PROJECT_TABLE); 227 Integer index = 0; 228 Boolean found = false; 229 for (Object object : listView.getList()) { 230 231 // Log project 232 Project project = (Project) object; 233 234 // Check for default project and make sure all buttons are invisible 235 if (TestProjectsPage.DEFAULT_NAME.equals(project.getName())) { 236 found = true; 237 // Verify default project and state of buttons 238 tester.assertInvisible(PREFIX_LIST + index.toString() + EDIT_BUTTON); 239 tester.assertInvisible(PREFIX_LIST + index.toString() + DELETE_BUTTON); 240 tester.assertInvisible(PREFIX_LIST + index.toString() + RENAME_BUTTON); 241 tester.assertInvisible(PREFIX_LIST + index.toString() + LEAVE_BUTTON); 242 tester.assertInvisible(PREFIX_LIST + index.toString() + REPLY_BUTTON); 243 tester.assertVisible(PREFIX_LIST + index.toString() + CLEARCACHE_BUTTON); 244 } 245 else { 246 index++; 247 } 248 } 249 Assert.assertTrue(DEFAULT_NAME + NOT_FOUND, found); 250 } 251 252 /** 253 * Create a new project, used by multiple tests. 254 * 255 * @param tester Wicket tester 256 * @throws Exception 257 * @throws Exception when communication error occurs. 258 */ 259 private void createNewProject(WicketTester tester) throws Exception { 260 261 // Store project count for later testing 262 ListView listView = (ListView) tester 263 .getComponentFromLastRenderedPage(PROJECT_TABLE); 264 Integer previousListCount = listView.getList().size(); 265 266 // Push the new button 267 Button newButton = (Button) tester 268 .getComponentFromLastRenderedPage("projectsForm:projListPanel:projListForm:newButton"); 269 newButton.onSubmit(); 270 271 // Assert correct panels are visible 272 tester.assertComponent(EDIT_PANEL, ProjEditPanel.class); 273 tester.assertVisible(EDIT_PANEL); 274 tester.assertInvisible(LIST_PANEL); 275 tester.assertInvisible(RENAME_PANEL); 276 tester.assertInvisible(LEAVE_PANEL); 277 tester.assertInvisible(DELETE_PANEL); 278 tester.assertInvisible(REPLY_PANEL); 279 tester.assertInvisible(CLEARCACHE_PANEL); 280 281 // Enter test data into edit form 282 FormTester editForm = tester.newFormTester("projectsForm:projEditPanel:projEditForm"); 283 editForm.setValue("projectName", TEST_NEW_NAME); 284 editForm.setValue("projectStartDate", TEST_NEW_STARTDATE); 285 editForm.setValue("projectEndDate", TEST_NEW_ENDDATE); 286 editForm.setValue("projectDesc", TEST_NEW_DESC); 287 editForm.setValue("projectInvitations", TEST_NEW_INVITEE); 288 editForm.setValue("projectSpectators", TEST_NEW_SPECTATOR); 289 editForm.submit(); 290 291 // Push save button 292 Button saveButton = (Button) tester 293 .getComponentFromLastRenderedPage("projectsForm:projEditPanel:projEditForm:saveButton"); 294 saveButton.onSubmit(); 295 tester.newFormTester(PROJECTS_FORM).submit(); 296 297 // Check that project list panel is active and visIble 298 tester.assertVisible(LIST_PANEL); 299 tester.assertInvisible(EDIT_PANEL); 300 tester.assertInvisible(RENAME_PANEL); 301 tester.assertInvisible(LEAVE_PANEL); 302 tester.assertInvisible(DELETE_PANEL); 303 tester.assertInvisible(REPLY_PANEL); 304 tester.assertInvisible(CLEARCACHE_PANEL); 305 306 // Check project count, should be one more 307 ListView listViewAfter = (ListView) tester 308 .getComponentFromLastRenderedPage(PROJECT_TABLE); 309 Integer projectListCount = listViewAfter.getList().size(); 310 Assert.assertEquals("An addtional project should be added to project list.", 311 (int) previousListCount + 1, (int) projectListCount); 312 313 // Loop through table and make sure that test project is present 314 Integer index = 0; 315 Boolean found = false; 316 for (Object object : listViewAfter.getList()) { 317 Project project = (Project) object; 318 319 // Check data within model backing the test project 320 if (TestProjectsPage.TEST_NEW_NAME.equals(project.getName())) { 321 found = true; 322 323 // Check buttons 324 tester.assertVisible(PREFIX_LIST + index.toString() + EDIT_BUTTON); 325 tester.assertVisible(PREFIX_LIST + index.toString() + DELETE_BUTTON); 326 tester.assertVisible(PREFIX_LIST + index.toString() + RENAME_BUTTON); 327 tester.assertInvisible(PREFIX_LIST + index.toString() + LEAVE_BUTTON); 328 tester.assertInvisible(PREFIX_LIST + index.toString() + REPLY_BUTTON); 329 330 // Check start date. 331 SimpleDateFormat format = new SimpleDateFormat(DATE_PATTERN, Locale.ENGLISH); 332 Date startDate = format.parse(TestProjectsPage.TEST_NEW_STARTDATE); 333 XMLGregorianCalendar startTime = Tstamp.makeTimestamp(startDate.getTime()); 334 Assert.assertEquals("Start date should be " + TEST_NEW_STARTDATE, DatatypeConstants.EQUAL, 335 project.getStartTime().compare(startTime)); 336 337 // Check start date. 338 Date endDate = format.parse(TestProjectsPage.TEST_NEW_ENDDATE); 339 XMLGregorianCalendar endTime = Tstamp.makeTimestamp(endDate.getTime()); 340 Assert.assertEquals("End date should be " + TEST_NEW_ENDDATE, DatatypeConstants.EQUAL, 341 project.getEndTime().compare(endTime)); 342 343 // Test project description. 344 Assert.assertEquals("Project description", TestProjectsPage.TEST_NEW_DESC, project 345 .getDescription()); 346 347 // Test project members. 348 Assert.assertTrue(project.getMembers().getMember().isEmpty()); 349 Assert.assertTrue(project.getInvitations().getInvitation().contains(TEST_NEW_INVITEE)); 350 Assert.assertTrue(project.getSpectators().getSpectator().contains(TEST_NEW_SPECTATOR)); 351 } 352 else { 353 index++; 354 } 355 } 356 Assert.assertTrue(TEST_NEW_NAME + NOT_FOUND, found); 357 } 358 359 /** 360 * Test edit of existing project. 361 * 362 * @throws Exception when communication error occurs. 363 */ 364 @Test 365 public void testProjectsEditPage() throws Exception { // NOPMD WicketTester has its own assert 366 // classes. 367 Properties testProperties = getTestProperties(); 368 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 369 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 370 371 login(tester); 372 createNewProject(tester); 373 374 ListView listView = (ListView) tester 375 .getComponentFromLastRenderedPage(PROJECT_TABLE); 376 Integer previousListCount = listView.getList().size(); 377 378 // Push the edit button 379 Integer index = findProjectIndexInList(tester, TEST_NEW_NAME); 380 Button editButton = (Button) tester 381 .getComponentFromLastRenderedPage(PREFIX_LIST 382 + index.toString() + EDIT_BUTTON); 383 editButton.onSubmit(); 384 385 // Assert correct panels are visible 386 tester.assertComponent(EDIT_PANEL, ProjEditPanel.class); 387 tester.assertVisible(EDIT_PANEL); 388 tester.assertInvisible(LIST_PANEL); 389 tester.assertInvisible(RENAME_PANEL); 390 tester.assertInvisible(LEAVE_PANEL); 391 tester.assertInvisible(DELETE_PANEL); 392 tester.assertInvisible(REPLY_PANEL); 393 tester.assertInvisible(CLEARCACHE_PANEL); 394 395 // Enter test data into edit form 396 FormTester form = tester.newFormTester("projectsForm:projEditPanel:projEditForm"); 397 form.setValue("projectStartDate", TEST_EDIT_STARTDATE); 398 form.setValue("projectEndDate", TEST_EDIT_ENDDATE); 399 form.setValue("projectDesc", TEST_EDIT_DESC); 400 form.setValue("projectInvitations", TEST_EDIT_INVITEE); 401 form.setValue("projectSpectators", TEST_EDIT_SPECTATOR); 402 form.submit(); 403 404 // Push save button 405 Button button = (Button) tester 406 .getComponentFromLastRenderedPage("projectsForm:projEditPanel:projEditForm:saveButton"); 407 button.onSubmit(); 408 409 // Check project count, should be one more 410 listView = (ListView) tester 411 .getComponentFromLastRenderedPage(PROJECT_TABLE); 412 Integer projectListCount = listView.getList().size(); 413 Assert.assertEquals("No additional project should be added to project list.", 414 (int) previousListCount, (int) projectListCount); 415 416 // Loop through table and make sure that test rename project is present 417 index = 0; 418 Boolean found = false; 419 for (Object object : listView.getList()) { 420 Project project = (Project) object; 421 422 // Check data within model backing the test project 423 if (TestProjectsPage.TEST_NEW_NAME.equals(project.getName())) { 424 found = true; 425 426 // Check start date. 427 SimpleDateFormat format = new SimpleDateFormat(DATE_PATTERN, Locale.ENGLISH); 428 Date startDate = format.parse(TEST_EDIT_STARTDATE); 429 XMLGregorianCalendar startTime = Tstamp.makeTimestamp(startDate.getTime()); 430 Assert.assertEquals("Start date should be " + TEST_EDIT_STARTDATE, DatatypeConstants.EQUAL, 431 project.getStartTime().compare(startTime)); 432 433 // Check start date. 434 Date endDate = format.parse(TEST_EDIT_ENDDATE); 435 XMLGregorianCalendar endTime = Tstamp.makeTimestamp(endDate.getTime()); 436 Assert.assertEquals("End date should be " + TEST_EDIT_ENDDATE, DatatypeConstants.EQUAL, 437 project.getEndTime().compare(endTime)); 438 439 // Test project description. 440 Assert.assertEquals("Project description", TEST_EDIT_DESC, project.getDescription()); 441 442 // Test project members. 443 Assert.assertTrue(project.getMembers().getMember().isEmpty()); 444 Assert.assertTrue(project.getInvitations().getInvitation().contains(TEST_EDIT_INVITEE)); 445 Assert.assertTrue(project.getSpectators().getSpectator().contains(TEST_EDIT_SPECTATOR)); 446 } 447 else { 448 index++; 449 } 450 } 451 Assert.assertTrue(TEST_NEW_NAME + NOT_FOUND, found); 452 } 453 454 /** 455 * Test creating a new project. 456 * 457 * @throws Exception when communication error occurs. 458 */ 459 @Test 460 public void testProjectsNewPage() throws Exception { // NOPMD WicketTester has its own assert 461 // classes. 462 Properties testProperties = getTestProperties(); 463 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 464 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 465 466 // Login 467 login(tester); 468 469 // Create new project and test it 470 createNewProject(tester); 471 } 472 473 474 /** 475 * Test renaming of project. 476 * 477 * @throws Exception when communication error occurs. 478 */ 479 @Test 480 public void testProjectsRenamePage() throws Exception { // NOPMD WicketTester has its own assert 481 // classes. 482 483 Properties testProperties = getTestProperties(); 484 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 485 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 486 487 login(tester); 488 createNewProject(tester); 489 490 ListView listView = (ListView) tester 491 .getComponentFromLastRenderedPage(PROJECT_TABLE); 492 Integer previousListCount = listView.getList().size(); 493 494 // Push the edit button 495 Integer index = findProjectIndexInList(tester, TEST_NEW_NAME); 496 Button renameButton = (Button) tester 497 .getComponentFromLastRenderedPage(PREFIX_LIST 498 + index.toString() + RENAME_BUTTON); 499 renameButton.onSubmit(); 500 501 // Assert correct panels are visible 502 tester.assertComponent(RENAME_PANEL, ProjRenamePanel.class); 503 tester.assertInvisible(EDIT_PANEL); 504 tester.assertInvisible(LIST_PANEL); 505 tester.assertVisible(RENAME_PANEL); 506 tester.assertInvisible(LEAVE_PANEL); 507 tester.assertInvisible(DELETE_PANEL); 508 tester.assertInvisible(REPLY_PANEL); 509 tester.assertInvisible(CLEARCACHE_PANEL); 510 511 // Enter test data into edit form 512 FormTester renameForm = tester.newFormTester("projectsForm:projRenamePanel:projRenameForm"); 513 renameForm.setValue("projectRename", TEST_RENAME_NAME); 514 renameForm.submit(); 515 516 // Push save button 517 Button renameSaveButton = (Button) tester.getComponentFromLastRenderedPage( 518 "projectsForm:projRenamePanel:projRenameForm:renameButton"); 519 renameSaveButton.onSubmit(); 520 521 // Check project count, should be one more 522 listView = (ListView) tester 523 .getComponentFromLastRenderedPage(PROJECT_TABLE); 524 Integer projectListCount = listView.getList().size(); 525 Assert.assertEquals("No additional project should be added to project list.", 526 (int) previousListCount, (int) projectListCount); 527 528 // Loop through table and make sure that test rename project is present 529 index = 0; 530 Boolean found = false; 531 for (Object object : listView.getList()) { 532 Project project = (Project) object; 533 534 // Check data within model backing the test project 535 if (TestProjectsPage.TEST_RENAME_NAME.equals(project.getName())) { 536 found = true; 537 538 // Check start date. 539 SimpleDateFormat format = new SimpleDateFormat(DATE_PATTERN, Locale.ENGLISH); 540 Date startDate = format.parse(TestProjectsPage.TEST_NEW_STARTDATE); 541 XMLGregorianCalendar startTime = Tstamp.makeTimestamp(startDate.getTime()); 542 Assert.assertEquals("Start date should be " + TEST_NEW_STARTDATE, DatatypeConstants.EQUAL, 543 project.getStartTime().compare(startTime)); 544 545 // Check start date. 546 Date endDate = format.parse(TestProjectsPage.TEST_NEW_ENDDATE); 547 XMLGregorianCalendar endTime = Tstamp.makeTimestamp(endDate.getTime()); 548 Assert.assertEquals("End date should be " + TEST_NEW_ENDDATE, DatatypeConstants.EQUAL, 549 project.getEndTime().compare(endTime)); 550 551 // Test project data 552 Assert.assertEquals("Project description", TestProjectsPage.TEST_NEW_DESC, project 553 .getDescription()); 554 Assert.assertTrue(project.getMembers().getMember().isEmpty()); 555 Assert.assertTrue(project.getInvitations().getInvitation().contains(TEST_NEW_INVITEE)); 556 Assert.assertTrue(project.getSpectators().getSpectator().contains(TEST_NEW_SPECTATOR)); 557 } 558 else { 559 index++; 560 } 561 } 562 Assert.assertTrue(TEST_RENAME_NAME + NOT_FOUND, found); 563 } 564 565 /** 566 * Test the deletion of a project. 567 * 568 * @throws Exception when communication error occurs. 569 */ 570 @Test 571 public void testProjectsDeletePage() throws Exception { // NOPMD WicketTester has its own assert 572 573 Properties testProperties = getTestProperties(); 574 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 575 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 576 577 login(tester); 578 createNewProject(tester); 579 580 ListView listView = (ListView) tester 581 .getComponentFromLastRenderedPage(PROJECT_TABLE); 582 Integer previousListCount = listView.getList().size(); 583 584 // Push the edit button 585 Integer index = findProjectIndexInList(tester, TEST_NEW_NAME); 586 Button deleteButton = (Button) tester 587 .getComponentFromLastRenderedPage(PREFIX_LIST 588 + index.toString() + DELETE_BUTTON); 589 deleteButton.onSubmit(); 590 591 // Assert correct panels are visible 592 tester.assertComponent(DELETE_PANEL, ProjDeletePanel.class); 593 tester.assertInvisible(EDIT_PANEL); 594 tester.assertInvisible(LIST_PANEL); 595 tester.assertInvisible(RENAME_PANEL); 596 tester.assertInvisible(LEAVE_PANEL); 597 tester.assertVisible(DELETE_PANEL); 598 tester.assertInvisible(REPLY_PANEL); 599 tester.assertInvisible(CLEARCACHE_PANEL); 600 601 // Push cancel button 602 Button cancelDeleteButton = (Button) tester.getComponentFromLastRenderedPage( 603 "projectsForm:projDeletePanel:projDeleteForm:cancelButton"); 604 cancelDeleteButton.onSubmit(); 605 tester.newFormTester(PROJECTS_FORM).submit(); 606 607 // Assert correct panels are visible 608 tester.assertComponent(LIST_PANEL, ProjListPanel.class); 609 tester.assertInvisible(EDIT_PANEL); 610 tester.assertVisible(LIST_PANEL); 611 tester.assertInvisible(RENAME_PANEL); 612 tester.assertInvisible(LEAVE_PANEL); 613 tester.assertInvisible(DELETE_PANEL); 614 tester.assertInvisible(REPLY_PANEL); 615 tester.assertInvisible(CLEARCACHE_PANEL); 616 617 // Push the delete button again 618 index = findProjectIndexInList(tester, TEST_NEW_NAME); 619 deleteButton = (Button) tester 620 .getComponentFromLastRenderedPage(PREFIX_LIST 621 + index.toString() + DELETE_BUTTON); 622 deleteButton.onSubmit(); 623 624 // Push delete button 625 Button deleteDeleteButton = (Button) tester.getComponentFromLastRenderedPage( 626 "projectsForm:projDeletePanel:projDeleteForm:deleteButton"); 627 deleteDeleteButton.onSubmit(); 628 629 // Check project count, should be one more 630 listView = (ListView) tester 631 .getComponentFromLastRenderedPage(PROJECT_TABLE); 632 Integer projectListCount = listView.getList().size(); 633 Assert.assertEquals("One project should be reomoved to project list.", 634 (int) previousListCount - 1, (int) projectListCount); 635 636 // Loop through table and make sure that test rename project is present 637 Boolean found = false; 638 for (Object object : listView.getList()) { 639 Project project = (Project) object; 640 641 // Check data within model backing the test project 642 if (TestProjectsPage.TEST_NEW_NAME.equals(project.getName())) { 643 found = true; 644 } 645 } 646 Assert.assertFalse(TEST_NEW_NAME + " project should have been deleted.", found); 647 } 648 649 /** 650 * Test the acceptance of an invitation to join a group. 651 * 652 * @throws Exception when communication error occurs. 653 */ 654 @Test 655 public void testProjectsReplyAcceptPage() throws Exception { // NOPMD WicketTester has its own 656 // assert classes. 657 658 Properties testProperties = getTestProperties(); 659 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 660 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 661 662 // Login and create new record with a test invitee 663 login(tester); 664 createNewProject(tester); 665 666 // Login as test invitee 667 tester.startPage(SigninPage.class); 668 FormTester signinForm = tester.newFormTester(SIGNIN_FORM); 669 signinForm.setValue(USER, TEST_INVITEE); 670 signinForm.setValue(PASSWORD, TEST_INVITEE); 671 signinForm.submit(SIGNIN); 672 tester.assertRenderedPage(SensorDataPage.class); 673 674 // Navigate to projects page and check that page is setup correctly 675 tester.clickLink(PROJECTS_LINK); 676 tester.assertRenderedPage(ProjectsPage.class); 677 tester.assertComponent(PROJECTS_FORM, ProjectsForm.class); 678 tester.assertVisible(LIST_PANEL); 679 tester.assertInvisible(EDIT_PANEL); 680 tester.assertInvisible(RENAME_PANEL); 681 tester.assertInvisible(LEAVE_PANEL); 682 tester.assertInvisible(DELETE_PANEL); 683 tester.assertInvisible(REPLY_PANEL); 684 tester.assertInvisible(CLEARCACHE_PANEL); 685 686 // Store project count for later compare 687 ListView listView = (ListView) tester 688 .getComponentFromLastRenderedPage(PROJECT_TABLE); 689 Integer previousListCount = listView.getList().size(); 690 691 // Check that all button invisible except reply button 692 Integer index = findProjectIndexInList(tester, TEST_NEW_NAME); 693 tester.assertInvisible(PREFIX_LIST + index.toString() + EDIT_BUTTON); 694 tester.assertInvisible(PREFIX_LIST + index.toString() + DELETE_BUTTON); 695 tester.assertInvisible(PREFIX_LIST + index.toString() + RENAME_BUTTON); 696 tester.assertInvisible(PREFIX_LIST + index.toString() + LEAVE_BUTTON); 697 tester.assertVisible(PREFIX_LIST + index.toString() + REPLY_BUTTON); 698 699 // Push the edit button 700 Button replyButton = (Button) tester 701 .getComponentFromLastRenderedPage(PREFIX_LIST 702 + index.toString() + REPLY_BUTTON); 703 replyButton.onSubmit(); 704 705 // Assert correct panels are visible 706 tester.assertComponent(REPLY_PANEL, ProjReplyPanel.class); 707 tester.assertInvisible(EDIT_PANEL); 708 tester.assertInvisible(LIST_PANEL); 709 tester.assertInvisible(RENAME_PANEL); 710 tester.assertInvisible(LEAVE_PANEL); 711 tester.assertInvisible(DELETE_PANEL); 712 tester.assertVisible(REPLY_PANEL); 713 tester.assertInvisible(CLEARCACHE_PANEL); 714 715 // Push cancel button 716 Button cancelReplyButton = (Button) tester 717 .getComponentFromLastRenderedPage("projectsForm:projReplyPanel:projReplyForm:cancelButton"); 718 cancelReplyButton.onSubmit(); 719 tester.newFormTester(PROJECTS_FORM).submit(); 720 721 // Assert correct panels are visible 722 tester.assertComponent(LIST_PANEL, ProjListPanel.class); 723 tester.assertInvisible(EDIT_PANEL); 724 tester.assertVisible(LIST_PANEL); 725 tester.assertInvisible(RENAME_PANEL); 726 tester.assertInvisible(LEAVE_PANEL); 727 tester.assertInvisible(DELETE_PANEL); 728 tester.assertInvisible(REPLY_PANEL); 729 tester.assertInvisible(CLEARCACHE_PANEL); 730 731 // Push the delete button again 732 index = findProjectIndexInList(tester, TEST_NEW_NAME); 733 replyButton = (Button) tester 734 .getComponentFromLastRenderedPage(PREFIX_LIST 735 + index.toString() + REPLY_BUTTON); 736 replyButton.onSubmit(); 737 738 // Push save button 739 Button acceptButton = (Button) tester 740 .getComponentFromLastRenderedPage("projectsForm:projReplyPanel:projReplyForm:acceptButton"); 741 acceptButton.onSubmit(); 742 tester.newFormTester(PROJECTS_FORM).submit(); 743 744 // Check project count 745 listView = (ListView) tester 746 .getComponentFromLastRenderedPage(PROJECT_TABLE); 747 Integer projectListCount = listView.getList().size(); 748 Assert.assertEquals("Should have same amount of projects.", (int) previousListCount, 749 (int) projectListCount); 750 Project project = findProjectInList(tester, TEST_NEW_NAME); 751 752 // Check if project found and check buttons 753 index = findProjectIndexInList(tester, TEST_NEW_NAME); 754 Assert.assertTrue(TEST_NEW_NAME + " project not found.", (index >= 0)); 755 tester.assertInvisible(PREFIX_LIST + index.toString() + EDIT_BUTTON); 756 tester.assertInvisible(PREFIX_LIST + index.toString() + DELETE_BUTTON); 757 tester.assertInvisible(PREFIX_LIST + index.toString() + RENAME_BUTTON); 758 tester.assertVisible(PREFIX_LIST + index.toString() + LEAVE_BUTTON); 759 tester.assertInvisible(PREFIX_LIST + index.toString() + REPLY_BUTTON); 760 761 // Login as test user again 762 763 tester.startPage(SigninPage.class); 764 signinForm = tester.newFormTester(SIGNIN_FORM); 765 signinForm.setValue(USER, TEST_USER); 766 signinForm.setValue(PASSWORD, TEST_USER); 767 signinForm.submit(SIGNIN); 768 tester.assertRenderedPage(SensorDataPage.class); 769 770 // Check if invitee is a member and not an invitee 771 tester.clickLink(PROJECTS_LINK); 772 project = findProjectInList(tester, TEST_NEW_NAME); 773 Assert.assertEquals("Invitee should now be a member.", TEST_INVITEE, project.getMembers() 774 .getMember().get(0)); 775 Assert.assertEquals("Invitee should not be an invitee.", 0, project.getInvitations() 776 .getInvitation().size()); 777 778 } 779 780 /** 781 * Test the declining of an invitation to join a group. 782 * 783 * @throws Exception when communication error occurs. 784 */ 785 @Test 786 public void testProjectsReplyDeclinePage() throws Exception { // NOPMD WicketTester has its own 787 // assert classes. 788 Properties testProperties = getTestProperties(); 789 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 790 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 791 792 // Login and create new record with a test invitee 793 login(tester); 794 createNewProject(tester); 795 796 // Login as test invitee 797 798 tester.startPage(SigninPage.class); 799 FormTester signinForm = tester.newFormTester(SIGNIN_FORM); 800 signinForm.setValue(USER, TEST_INVITEE); 801 signinForm.setValue(PASSWORD, TEST_INVITEE); 802 signinForm.submit(SIGNIN); 803 tester.assertRenderedPage(SensorDataPage.class); 804 805 // Navigate to projects page and check that page is setup correctly 806 tester.clickLink(PROJECTS_LINK); 807 tester.assertRenderedPage(ProjectsPage.class); 808 tester.assertComponent(PROJECTS_FORM, ProjectsForm.class); 809 tester.assertVisible(LIST_PANEL); 810 tester.assertInvisible(EDIT_PANEL); 811 tester.assertInvisible(RENAME_PANEL); 812 tester.assertInvisible(LEAVE_PANEL); 813 tester.assertInvisible(DELETE_PANEL); 814 tester.assertInvisible(REPLY_PANEL); 815 tester.assertInvisible(CLEARCACHE_PANEL); 816 817 // Store project count for later compare 818 ListView listView = (ListView) tester 819 .getComponentFromLastRenderedPage(PROJECT_TABLE); 820 Integer previousListCount = listView.getList().size(); 821 822 // Check that all button invisible except reply button 823 Integer index = findProjectIndexInList(tester, TEST_NEW_NAME); 824 tester.assertInvisible(PREFIX_LIST + index.toString() + EDIT_BUTTON); 825 tester.assertInvisible(PREFIX_LIST + index.toString() + DELETE_BUTTON); 826 tester.assertInvisible(PREFIX_LIST + index.toString() + RENAME_BUTTON); 827 tester.assertInvisible(PREFIX_LIST + index.toString() + LEAVE_BUTTON); 828 tester.assertVisible(PREFIX_LIST + index.toString() + REPLY_BUTTON); 829 830 // Push the edit button 831 Button replyButton = (Button) tester 832 .getComponentFromLastRenderedPage(PREFIX_LIST 833 + index.toString() + REPLY_BUTTON); 834 replyButton.onSubmit(); 835 836 // Assert correct panels are visible 837 tester.assertComponent(REPLY_PANEL, ProjReplyPanel.class); 838 tester.assertInvisible(EDIT_PANEL); 839 tester.assertInvisible(LIST_PANEL); 840 tester.assertInvisible(RENAME_PANEL); 841 tester.assertInvisible(LEAVE_PANEL); 842 tester.assertInvisible(DELETE_PANEL); 843 tester.assertVisible(REPLY_PANEL); 844 tester.assertInvisible(CLEARCACHE_PANEL); 845 846 // Push save button 847 Button declineButton = (Button) tester.getComponentFromLastRenderedPage( 848 "projectsForm:projReplyPanel:projReplyForm:declineButton"); 849 declineButton.onSubmit(); 850 tester.newFormTester(PROJECTS_FORM).submit(); 851 852 // Check project count 853 listView = (ListView) tester 854 .getComponentFromLastRenderedPage(PROJECT_TABLE); 855 Integer projectListCount = listView.getList().size(); 856 Assert.assertEquals("Should have one less project.", (int) previousListCount - 1, 857 (int) projectListCount); 858 859 // Check to see if project is gone. 860 Project project = findProjectInList(tester, TEST_NEW_NAME); 861 Assert.assertNull("Project should be gone, after decline.", project); 862 863 // Login as test user again 864 865 tester.startPage(SigninPage.class); 866 signinForm = tester.newFormTester(SIGNIN_FORM); 867 signinForm.setValue(USER, TEST_USER); 868 signinForm.setValue(PASSWORD, TEST_USER); 869 signinForm.submit(SIGNIN); 870 tester.assertRenderedPage(SensorDataPage.class); 871 872 // Check if invitee is a member and not an invitee 873 tester.clickLink(PROJECTS_LINK); 874 project = findProjectInList(tester, TEST_NEW_NAME); 875 Assert.assertEquals("Invitee should not be a member.", 0, project.getMembers().getMember() 876 .size()); 877 Assert.assertEquals("Invitee should not be an invitee.", 0, project.getInvitations() 878 .getInvitation().size()); 879 880 } 881 882 /** 883 * Test leaving a project. 884 * 885 * @throws Exception when communication error occurs. 886 */ 887 @Test 888 public void testProjectsLeavePage() throws Exception { // NOPMD WicketTester has its own assert 889 // classes. 890 891 Properties testProperties = getTestProperties(); 892 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 893 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 894 895 // Login and create new record with a test invitee 896 login(tester); 897 createNewProject(tester); 898 899 // Login as test invitee 900 tester.startPage(SigninPage.class); 901 FormTester signinForm = tester.newFormTester(SIGNIN_FORM); 902 signinForm.setValue(USER, TEST_INVITEE); 903 signinForm.setValue(PASSWORD, TEST_INVITEE); 904 signinForm.submit(SIGNIN); 905 tester.assertRenderedPage(SensorDataPage.class); 906 907 // Navigate to projects page and check that page is setup correctly 908 tester.clickLink(PROJECTS_LINK); 909 tester.assertRenderedPage(ProjectsPage.class); 910 tester.assertComponent(PROJECTS_FORM, ProjectsForm.class); 911 tester.assertVisible(LIST_PANEL); 912 tester.assertInvisible(EDIT_PANEL); 913 tester.assertInvisible(RENAME_PANEL); 914 tester.assertInvisible(LEAVE_PANEL); 915 tester.assertInvisible(DELETE_PANEL); 916 tester.assertInvisible(REPLY_PANEL); 917 tester.assertInvisible(CLEARCACHE_PANEL); 918 919 // Store project count for later compare 920 ListView listView = (ListView) tester 921 .getComponentFromLastRenderedPage(PROJECT_TABLE); 922 Integer previousListCount = listView.getList().size(); 923 924 // Check that all button invisible except reply button 925 Integer index = findProjectIndexInList(tester, TEST_NEW_NAME); 926 tester.assertInvisible(PREFIX_LIST + index.toString() + EDIT_BUTTON); 927 tester.assertInvisible(PREFIX_LIST + index.toString() + DELETE_BUTTON); 928 tester.assertInvisible(PREFIX_LIST + index.toString() + RENAME_BUTTON); 929 tester.assertInvisible(PREFIX_LIST + index.toString() + LEAVE_BUTTON); 930 tester.assertVisible(PREFIX_LIST + index.toString() + REPLY_BUTTON); 931 932 // Push the edit button 933 Button replyButton = (Button) tester 934 .getComponentFromLastRenderedPage(PREFIX_LIST 935 + index.toString() + REPLY_BUTTON); 936 replyButton.onSubmit(); 937 938 // Assert correct panels are visible 939 tester.assertComponent(REPLY_PANEL, ProjReplyPanel.class); 940 tester.assertInvisible(EDIT_PANEL); 941 tester.assertInvisible(LIST_PANEL); 942 tester.assertInvisible(RENAME_PANEL); 943 tester.assertInvisible(LEAVE_PANEL); 944 tester.assertInvisible(DELETE_PANEL); 945 tester.assertVisible(REPLY_PANEL); 946 tester.assertInvisible(CLEARCACHE_PANEL); 947 948 // Push save button 949 Button acceptButton = (Button) tester 950 .getComponentFromLastRenderedPage("projectsForm:projReplyPanel:projReplyForm:acceptButton"); 951 acceptButton.onSubmit(); 952 tester.newFormTester(PROJECTS_FORM).submit(); 953 954 // Check project count 955 listView = (ListView) tester 956 .getComponentFromLastRenderedPage(PROJECT_TABLE); 957 Integer projectListCount = listView.getList().size(); 958 Assert.assertEquals("Should have same amount of projects.", (int) previousListCount, 959 (int) projectListCount); 960 961 Project project = findProjectInList(tester, TEST_NEW_NAME); 962 963 // Check if project found and check buttons 964 index = findProjectIndexInList(tester, TEST_NEW_NAME); 965 Assert.assertTrue(TEST_NEW_NAME + " project not found.", (index >= 0)); 966 tester.assertInvisible(PREFIX_LIST + index.toString() + EDIT_BUTTON); 967 tester.assertInvisible(PREFIX_LIST + index.toString() + DELETE_BUTTON); 968 tester.assertInvisible(PREFIX_LIST + index.toString() + RENAME_BUTTON); 969 tester.assertVisible(PREFIX_LIST + index.toString() + LEAVE_BUTTON); 970 tester.assertInvisible(PREFIX_LIST + index.toString() + REPLY_BUTTON); 971 972 // Push the leave button 973 Button leaveButton = (Button) tester 974 .getComponentFromLastRenderedPage(PREFIX_LIST 975 + index.toString() + LEAVE_BUTTON); 976 leaveButton.onSubmit(); 977 978 // Assert correct panels are visible 979 tester.assertComponent(LEAVE_PANEL, ProjLeavePanel.class); 980 tester.assertInvisible(EDIT_PANEL); 981 tester.assertInvisible(LIST_PANEL); 982 tester.assertInvisible(RENAME_PANEL); 983 tester.assertVisible(LEAVE_PANEL); 984 tester.assertInvisible(DELETE_PANEL); 985 tester.assertInvisible(REPLY_PANEL); 986 tester.assertInvisible(CLEARCACHE_PANEL); 987 988 // Push cancel button 989 Button cancelLeaveButton = (Button) tester 990 .getComponentFromLastRenderedPage("projectsForm:projLeavePanel:projLeaveForm:cancelButton"); 991 cancelLeaveButton.onSubmit(); 992 tester.newFormTester(PROJECTS_FORM).submit(); 993 994 // Push the delete button again 995 index = findProjectIndexInList(tester, TEST_NEW_NAME); 996 leaveButton = (Button) tester 997 .getComponentFromLastRenderedPage(PREFIX_LIST 998 + index.toString() + LEAVE_BUTTON); 999 leaveButton.onSubmit(); 1000 1001 // Push save button 1002 Button leaveLeaveButton = (Button) tester 1003 .getComponentFromLastRenderedPage("projectsForm:projLeavePanel:projLeaveForm:leaveButton"); 1004 leaveLeaveButton.onSubmit(); 1005 tester.newFormTester(PROJECTS_FORM).submit(); 1006 1007 // Assert correct panels are visible 1008 tester.assertComponent(LIST_PANEL, ProjListPanel.class); 1009 tester.assertInvisible(EDIT_PANEL); 1010 tester.assertVisible(LIST_PANEL); 1011 tester.assertInvisible(RENAME_PANEL); 1012 tester.assertInvisible(LEAVE_PANEL); 1013 tester.assertInvisible(DELETE_PANEL); 1014 tester.assertInvisible(REPLY_PANEL); 1015 tester.assertInvisible(CLEARCACHE_PANEL); 1016 1017 // Check to see if project is gone. 1018 project = findProjectInList(tester, TEST_NEW_NAME); 1019 Assert.assertNull("Project should be gone, after decline.", project); 1020 1021 // Login as test user again 1022 tester.startPage(SigninPage.class); 1023 signinForm = tester.newFormTester(SIGNIN_FORM); 1024 signinForm.setValue(USER, TEST_USER); 1025 signinForm.setValue(PASSWORD, TEST_USER); 1026 signinForm.submit(SIGNIN); 1027 tester.assertRenderedPage(SensorDataPage.class); 1028 1029 // Check if invitee is a member and not an invitee 1030 tester.clickLink(PROJECTS_LINK); 1031 project = findProjectInList(tester, TEST_NEW_NAME); 1032 Assert.assertEquals("Invitee should not be a member.", 0, project.getMembers().getMember() 1033 .size()); 1034 Assert.assertEquals("Invitee should not be an invitee.", 0, project.getInvitations() 1035 .getInvitation().size()); 1036 } 1037 1038 /** 1039 * Test project clear cache. 1040 * 1041 * @throws Exception when communication error occurs. 1042 */ 1043 @Test 1044 public void testProjectsClearCachePage() throws Exception { // NOPMD WicketTester has its own 1045 // assert classes. 1046 1047 Properties testProperties = getTestProperties(); 1048 testProperties.put(ProjectBrowserProperties.AVAILABLEPAGE_KEY + PROJECTS, TRUE); 1049 WicketTester tester = new WicketTester(new ProjectBrowserApplication(testProperties)); 1050 1051 login(tester); 1052 createNewProject(tester); 1053 1054 // Push the button 1055 Integer index = findProjectIndexInList(tester, TEST_NEW_NAME); 1056 Button clearCacheButton = (Button) tester 1057 .getComponentFromLastRenderedPage(PREFIX_LIST 1058 + index.toString() + CLEARCACHE_BUTTON); 1059 clearCacheButton.onSubmit(); 1060 1061 // Assert correct panels are visible 1062 tester.assertComponent(CLEARCACHE_PANEL, ProjClearCachePanel.class); 1063 tester.assertInvisible(EDIT_PANEL); 1064 tester.assertInvisible(LIST_PANEL); 1065 tester.assertInvisible(RENAME_PANEL); 1066 tester.assertInvisible(LEAVE_PANEL); 1067 tester.assertInvisible(DELETE_PANEL); 1068 tester.assertInvisible(REPLY_PANEL); 1069 tester.assertVisible(CLEARCACHE_PANEL); 1070 1071 // Push save button 1072 Button button = (Button) tester.getComponentFromLastRenderedPage( 1073 "projectsForm:projClearCachePanel:projClearCacheForm:clearCacheButton"); 1074 button.onSubmit(); 1075 1076 tester.assertRenderedPage(ProjectsPage.class); 1077 tester.assertComponent(PROJECTS_FORM, ProjectsForm.class); 1078 tester.assertVisible(LIST_PANEL); 1079 tester.assertInvisible(EDIT_PANEL); 1080 tester.assertInvisible(RENAME_PANEL); 1081 tester.assertInvisible(LEAVE_PANEL); 1082 tester.assertInvisible(DELETE_PANEL); 1083 tester.assertInvisible(REPLY_PANEL); 1084 tester.assertInvisible(CLEARCACHE_PANEL); 1085 1086 // Push the button 1087 clearCacheButton.onSubmit(); 1088 1089 // Assert correct panels are visible 1090 tester.assertComponent(CLEARCACHE_PANEL, ProjClearCachePanel.class); 1091 tester.assertInvisible(EDIT_PANEL); 1092 tester.assertInvisible(LIST_PANEL); 1093 tester.assertInvisible(RENAME_PANEL); 1094 tester.assertInvisible(LEAVE_PANEL); 1095 tester.assertInvisible(DELETE_PANEL); 1096 tester.assertInvisible(REPLY_PANEL); 1097 tester.assertVisible(CLEARCACHE_PANEL); 1098 1099 // Push save button 1100 Button cancelButton = (Button) tester.getComponentFromLastRenderedPage( 1101 "projectsForm:projClearCachePanel:projClearCacheForm:cancelButton"); 1102 cancelButton.onSubmit(); 1103 1104 tester.assertRenderedPage(ProjectsPage.class); 1105 tester.assertComponent(PROJECTS_FORM, ProjectsForm.class); 1106 tester.assertVisible(LIST_PANEL); 1107 tester.assertInvisible(EDIT_PANEL); 1108 tester.assertInvisible(RENAME_PANEL); 1109 tester.assertInvisible(LEAVE_PANEL); 1110 tester.assertInvisible(DELETE_PANEL); 1111 tester.assertInvisible(REPLY_PANEL); 1112 tester.assertInvisible(CLEARCACHE_PANEL); 1113 } 1114 }