| 1 | class ExpandElementWithPrototypeTest extends sumatra.groovy.SumatraTestCase |
|---|
| 2 | { |
|---|
| 3 | void setUp() |
|---|
| 4 | { |
|---|
| 5 | // load simple default implementation of browser-provided objects |
|---|
| 6 | initFramework('prototype') |
|---|
| 7 | |
|---|
| 8 | // load the javascript file to test |
|---|
| 9 | load('examples/3_prototype/expandElementWithPrototype.js') |
|---|
| 10 | } |
|---|
| 11 | |
|---|
| 12 | void testStubElementWithPrototype() |
|---|
| 13 | { |
|---|
| 14 | def stubElement = createStubElement('div', 'settings', [className:'closed', innerHTML:'Hello World']) |
|---|
| 15 | |
|---|
| 16 | // use prototype's $ method from groovy |
|---|
| 17 | def element = '$'('settings') |
|---|
| 18 | |
|---|
| 19 | assert 'closed' == element.className |
|---|
| 20 | assert 'Hello World' == element.innerHTML |
|---|
| 21 | assert 'settings' == element.id |
|---|
| 22 | assert 'DIV' == element.tagName |
|---|
| 23 | |
|---|
| 24 | def returnedElement = f('expandSettings')() |
|---|
| 25 | |
|---|
| 26 | def elementAgain = '$'('settings') |
|---|
| 27 | |
|---|
| 28 | // retrieved element modified |
|---|
| 29 | assert 'expanded' == elementAgain.className |
|---|
| 30 | |
|---|
| 31 | // the other attributes have not changed |
|---|
| 32 | assert 'Hello World' == elementAgain.innerHTML |
|---|
| 33 | assert 'settings' == elementAgain.id |
|---|
| 34 | assert 'DIV' == elementAgain.tagName |
|---|
| 35 | |
|---|
| 36 | // returned element modified |
|---|
| 37 | assert 'expanded' == returnedElement.className |
|---|
| 38 | assert 'Hello World' == returnedElement.innerHTML |
|---|
| 39 | assert 'settings' == returnedElement.id |
|---|
| 40 | assert 'DIV' == returnedElement.tagName |
|---|
| 41 | |
|---|
| 42 | // original element modified as well, since they all refer to the same javascript object instance |
|---|
| 43 | assert 'expanded' == element.className |
|---|
| 44 | assert 'Hello World' == element.innerHTML |
|---|
| 45 | assert 'settings' == element.id |
|---|
| 46 | assert 'DIV' == element.tagName |
|---|
| 47 | } |
|---|
| 48 | |
|---|
| 49 | void testMockElementUsingExecJs() |
|---|
| 50 | { |
|---|
| 51 | def stubElement = createStubElement('div', 'settings', [className:'closed', innerHTML:'Hello World']) |
|---|
| 52 | |
|---|
| 53 | assert 'closed' == stubElement.className |
|---|
| 54 | assert 'Hello World' == stubElement.innerHTML |
|---|
| 55 | assert 'settings' == stubElement.id |
|---|
| 56 | assert 'DIV' == stubElement.tagName |
|---|
| 57 | |
|---|
| 58 | |
|---|
| 59 | // call javascript function using execJs |
|---|
| 60 | def returnedElement = execJs('expandSettings()') |
|---|
| 61 | /* def returnedElement = js.exec('expandSettings()')*/ |
|---|
| 62 | |
|---|
| 63 | |
|---|
| 64 | // className was changed |
|---|
| 65 | assert 'expanded' == returnedElement.className |
|---|
| 66 | |
|---|
| 67 | // the other attributes have not changed |
|---|
| 68 | assert 'Hello World' == returnedElement.innerHTML |
|---|
| 69 | assert 'settings' == returnedElement.id |
|---|
| 70 | assert 'DIV' == returnedElement.tagName |
|---|
| 71 | |
|---|
| 72 | // our stubElement also changed, since they refer to the same object |
|---|
| 73 | assert 'expanded' == stubElement.className |
|---|
| 74 | } |
|---|
| 75 | } |
|---|