DOMite-Tests.st 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. Smalltalk createPackage: 'DOMite-Tests'!
  2. TestCase subclass: #DOMiteTest
  3. instanceVariableNames: 'fixtureDiv'
  4. package: 'DOMite-Tests'!
  5. !DOMiteTest methodsFor: 'fixture'!
  6. setUp
  7. fixtureDiv := document createElement: 'div'.
  8. document body appendChild: fixtureDiv.
  9. fixtureDiv setAttribute: 'id' to: 'fixture'.
  10. fixtureDiv innerHTML: 'sentinel'
  11. !
  12. tearDown
  13. | lastChild |
  14. lastChild := document body lastChild.
  15. self assert: lastChild equals: fixtureDiv.
  16. document body removeChild: lastChild
  17. ! !
  18. !DOMiteTest methodsFor: 'testing'!
  19. testDefaultInsertElement
  20. Domite new << (Domite newElement: 'p').
  21. self assert: (document body innerHTML endsWith: '<p></p>').
  22. document body removeChild: document body lastChild
  23. !
  24. testDefaultInsertString
  25. Domite new << 'a foo in a bar'.
  26. self assert: (document body innerHTML endsWith: 'a foo in a bar').
  27. document body removeChild: document body lastChild
  28. !
  29. testDefaultInsertStringInFragment
  30. Domite new << (Domite newStream << 'a foo in a bar').
  31. self assert: (document body innerHTML endsWith: 'a foo in a bar').
  32. document body removeChild: document body lastChild
  33. !
  34. testFromBadSelectorIsInvalid
  35. | d |
  36. d := Domite at: '#goo'.
  37. self assert: d isInvalid.
  38. d := Domite at: 'body'.
  39. self deny: d isInvalid.
  40. d := Domite at: 'html body div#fixture'.
  41. self deny: d isInvalid
  42. !
  43. testInsertDomNode
  44. | d |
  45. d := Domite fromElement: fixtureDiv.
  46. d << (document createElement: 'pre').
  47. self assert: (document body innerHTML endsWith: '>sentinel<pre></pre></div>')
  48. !
  49. testInsertDomNodeInFragment
  50. | d |
  51. d := Domite at: '#fixture'.
  52. d << (Domite newStream << (document createElement: 'script')).
  53. self assert: (document body innerHTML endsWith: '>sentinel<script></script></div>')
  54. !
  55. testInsertElement
  56. | d |
  57. d := Domite at: 'html body div#fixture'.
  58. d << (Domite newElement: 'p').
  59. self assert: (document body innerHTML endsWith: '>sentinel<p></p></div>')
  60. !
  61. testInsertElementTwoLevel
  62. | d p s |
  63. d := Domite fromElement: fixtureDiv.
  64. p := Domite newElement: 'p'.
  65. d << p.
  66. s := Domite newElement: 'span'.
  67. p << s.
  68. s << 'dom-mite'.
  69. self assert: (document body innerHTML endsWith: '>sentinel<p><span>dom-mite</span></p></div>')
  70. !
  71. testInsertElementTwoLevelViaFragments
  72. | d p s |
  73. d := Domite at: '#fixture'.
  74. p := Domite newElement: 'p'.
  75. d << (Domite newStream << p).
  76. s := Domite newElement: 'span'.
  77. p << (Domite newStream << s).
  78. s << (Domite newStream << 'dom-mite').
  79. self assert: (document body innerHTML endsWith: '>sentinel<p><span>dom-mite</span></p></div>')
  80. !
  81. testInsertElementTwoLevelViaTwoLevelFragments
  82. | d p s |
  83. d := Domite fromElement: fixtureDiv.
  84. p := Domite newElement: 'p'.
  85. d << (Domite newStream << (Domite newStream << p)).
  86. s := Domite newElement: 'span'.
  87. p << (Domite newStream << (Domite newStream << s)).
  88. s << (Domite newStream << (Domite newStream << 'dom-mite')).
  89. self assert: (document body innerHTML endsWith: '>sentinel<p><span>dom-mite</span></p></div>')
  90. !
  91. testInsertString
  92. | d |
  93. d := Domite fromElement: fixtureDiv.
  94. d << 'a foo in a bar'.
  95. self assert: (document body innerHTML endsWith: '>sentinela foo in a bar</div>')
  96. !
  97. testInsertStringInFragment
  98. | d |
  99. d := Domite at: '#fixture'.
  100. d << (Domite newStream << 'a foo in a bar').
  101. self assert: (document body innerHTML endsWith: '>sentinela foo in a bar</div>')
  102. !
  103. testMultipleInserts
  104. | d p s |
  105. d := Domite fromElement: fixtureDiv.
  106. p := Domite newElement: 'p'.
  107. d << p.
  108. s := Domite newElement: 'span'.
  109. d << s.
  110. d << 'dom-mite'.
  111. self assert: (document body innerHTML endsWith: '>sentinel<p></p><span></span>dom-mite</div>')
  112. !
  113. testMultipleInsertsWithClear
  114. | d p s |
  115. d := Domite at: '#fixture'.
  116. p := Domite newElement: 'p'.
  117. d << p.
  118. s := Domite newElement: 'span'.
  119. d << s.
  120. d resetContents.
  121. d << 'dom-mite'.
  122. d resetContents.
  123. d resetContents.
  124. self assert: (document body innerHTML endsWith: '></div>')
  125. !
  126. testMultipleInsertsWithClearInBetween
  127. | d p s |
  128. d := Domite fromElement: fixtureDiv.
  129. p := Domite newElement: 'p'.
  130. d << p.
  131. s := Domite newElement: 'span'.
  132. d << s.
  133. d resetContents.
  134. d << 'dom-mite'.
  135. self assert: (document body innerHTML endsWith: '>dom-mite</div>')
  136. ! !