| 1 | class @webtest.name.caps@Test extends grails.util.WebTest { |
|---|
| 2 | |
|---|
| 3 | // Unlike unit tests, functional tests are often sequence dependent. |
|---|
| 4 | // Specify that sequence here. |
|---|
| 5 | void suite() { |
|---|
| 6 | test@webtest.name.caps@ListNewDelete() |
|---|
| 7 | // add tests for more operations here |
|---|
| 8 | } |
|---|
| 9 | |
|---|
| 10 | def test@webtest.name.caps@ListNewDelete() { |
|---|
| 11 | webtest('@webtest.name.caps@ basic operations: view list, create new entry, view, edit, delete, view') { |
|---|
| 12 | invoke(url:'@webtest.name.lower@') |
|---|
| 13 | verifyText(text:'Home') |
|---|
| 14 | |
|---|
| 15 | verifyListPage(0) |
|---|
| 16 | |
|---|
| 17 | clickLink(label:'New @webtest.name.caps@') |
|---|
| 18 | verifyText(text:'Create @webtest.name.caps@') |
|---|
| 19 | clickButton(label:'Create') |
|---|
| 20 | verifyText(text:'Show @webtest.name.caps@', description:'Detail page') |
|---|
| 21 | clickLink(label:'List', description:'Back to list view') |
|---|
| 22 | |
|---|
| 23 | verifyListPage(1) |
|---|
| 24 | |
|---|
| 25 | group(description:'edit the one element') { |
|---|
| 26 | clickLink(label:'Show', description:'go to detail view') |
|---|
| 27 | clickButton(label:'Edit') |
|---|
| 28 | verifyText(text:'Edit @webtest.name.caps@') |
|---|
| 29 | clickButton(label:'Update') |
|---|
| 30 | verifyText(text:'Show @webtest.name.caps@') |
|---|
| 31 | clickLink(label:'List', description:'Back to list view') |
|---|
| 32 | } |
|---|
| 33 | |
|---|
| 34 | verifyListPage(1) |
|---|
| 35 | |
|---|
| 36 | group(description:'delete the only element') { |
|---|
| 37 | clickLink(label:'Show', description:'go to detail view') |
|---|
| 38 | clickButton(label:'Delete') |
|---|
| 39 | verifyXPath(xpath:"//div[@class='message']", text:/@webtest.name.caps@.*deleted./, regex:true) |
|---|
| 40 | } |
|---|
| 41 | |
|---|
| 42 | verifyListPage(0) |
|---|
| 43 | } |
|---|
| 44 | } |
|---|
| 45 | |
|---|
| 46 | String ROW_COUNT_XPATH = "count(//td[@class='actionButtons']/..)" |
|---|
| 47 | |
|---|
| 48 | def verifyListPage(int count) { |
|---|
| 49 | ant.group(description:"verify @webtest.name.caps@ list view with $count row(s)") { |
|---|
| 50 | verifyText(text:'@webtest.name.caps@ List') |
|---|
| 51 | verifyXPath(xpath:ROW_COUNT_XPATH, text:count, description:"$count row(s) of data expected") |
|---|
| 52 | } |
|---|
| 53 | } |
|---|
| 54 | } |
|---|