DOMite-Tests.st 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. testInsertElement
  44. | d |
  45. d := Domite at: 'html body div#fixture'.
  46. d << (Domite newElement: 'p').
  47. self assert: (document body innerHTML endsWith: '>sentinel<p></p></div>')
  48. !
  49. testInsertElementTwoLevel
  50. | d p s |
  51. d := Domite fromElement: fixtureDiv.
  52. p := Domite newElement: 'p'.
  53. d << p.
  54. s := Domite newElement: 'span'.
  55. p << s.
  56. s << 'dom-mite'.
  57. self assert: (document body innerHTML endsWith: '>sentinel<p><span>dom-mite</span></p></div>')
  58. !
  59. testInsertElementTwoLevelViaFragments
  60. | d p s |
  61. d := Domite at: '#fixture'.
  62. p := Domite newElement: 'p'.
  63. d << (Domite newStream << p).
  64. s := Domite newElement: 'span'.
  65. p << (Domite newStream << s).
  66. s << (Domite newStream << 'dom-mite').
  67. self assert: (document body innerHTML endsWith: '>sentinel<p><span>dom-mite</span></p></div>')
  68. !
  69. testInsertElementTwoLevelViaTwoLevelFragments
  70. | d p s |
  71. d := Domite fromElement: fixtureDiv.
  72. p := Domite newElement: 'p'.
  73. d << (Domite newStream << (Domite newStream << p)).
  74. s := Domite newElement: 'span'.
  75. p << (Domite newStream << (Domite newStream << s)).
  76. s << (Domite newStream << (Domite newStream << 'dom-mite')).
  77. self assert: (document body innerHTML endsWith: '>sentinel<p><span>dom-mite</span></p></div>')
  78. !
  79. testInsertString
  80. | d |
  81. d := Domite fromElement: fixtureDiv.
  82. d << 'a foo in a bar'.
  83. self assert: (document body innerHTML endsWith: '>sentinela foo in a bar</div>')
  84. !
  85. testInsertStringInFragment
  86. | d |
  87. d := Domite at: '#fixture'.
  88. d << (Domite newStream << 'a foo in a bar').
  89. self assert: (document body innerHTML endsWith: '>sentinela foo in a bar</div>')
  90. !
  91. testMultipleInserts
  92. | d p s |
  93. d := Domite fromElement: fixtureDiv.
  94. p := Domite newElement: 'p'.
  95. d << p.
  96. s := Domite newElement: 'span'.
  97. d << s.
  98. d << 'dom-mite'.
  99. self assert: (document body innerHTML endsWith: '>sentinel<p></p><span></span>dom-mite</div>')
  100. !
  101. testMultipleInsertsWithClear
  102. | d p s |
  103. d := Domite at: '#fixture'.
  104. p := Domite newElement: 'p'.
  105. d << p.
  106. s := Domite newElement: 'span'.
  107. d << s.
  108. d resetContents.
  109. d << 'dom-mite'.
  110. d resetContents.
  111. d resetContents.
  112. self assert: (document body innerHTML endsWith: '></div>')
  113. !
  114. testMultipleInsertsWithClearInBetween
  115. | d p s |
  116. d := Domite fromElement: fixtureDiv.
  117. p := Domite newElement: 'p'.
  118. d << p.
  119. s := Domite newElement: 'span'.
  120. d << s.
  121. d resetContents.
  122. d << 'dom-mite'.
  123. self assert: (document body innerHTML endsWith: '>dom-mite</div>')
  124. ! !