1
0

route_spec.rb 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. require "#{File.dirname(__FILE__)}/spec_helper"
  2. include SpecHelper
  3. describe "routes" do
  4. describe 'basic auth' do
  5. it "ohne auth" do
  6. get '/info'
  7. last_response.status.must_equal 401
  8. end
  9. it "falsche auth" do
  10. authorize 'oh', 'ah'
  11. get '/info'
  12. last_response.status.must_equal 401
  13. end
  14. it "korrekte auth" do
  15. authorize 'test', 'test'
  16. get '/info'
  17. last_response.status.must_equal 200
  18. end
  19. end
  20. describe "Views ok" do
  21. it "gibt home-view 200 zurück" do
  22. get '/'
  23. last_response.status.must_equal 200
  24. end
  25. end
  26. end
  27. describe "verlauf schüler" do
  28. before do
  29. Lehrer.create(:id => 1, :name => "Müller")
  30. Lehrer.create(:id => 2, :name => "Maier")
  31. Lehrer.create(:id => 3, :name => "Walter")
  32. end
  33. describe "schüler besucht seite zur aktiven Wahl" do
  34. before do
  35. Schueler.create(:hashid => "a", :vorname => "A", :klasse => "A1")
  36. Schueler.create(:hashid => "b", :vorname => "B", :klasse => "B1")
  37. end
  38. it "schüler gibt code auf startseite ein und wird umgeleitet" do
  39. Time.stub :now, Time.parse("Sep 21, 2016, 17:00") do
  40. post "/hashid", params={:hashid => "a"}
  41. follow_redirect!
  42. last_response.body.must_include "Hallo A,"
  43. end
  44. end
  45. it "schüler stellt sich auf als schuko" do
  46. Time.stub :now, Time.parse("Sep 21, 2016, 17:00") do
  47. post "/wahl", params={:hashid => "a",:schuko => "on"}
  48. a = Schueler["a"]
  49. a.schuko.must_equal true
  50. a.sprecher.must_be_nil
  51. end
  52. end
  53. it "schüler stellt sich auf als sprecher" do
  54. Time.stub :now, Time.parse("Sep 21, 2016, 17:00") do
  55. post "/wahl", params={:hashid => "a",:sprecher => "on"}
  56. a = Schueler["a"]
  57. a.sprecher.must_equal true
  58. a.schuko.must_be_nil
  59. end
  60. end
  61. it "schüler stellt sich auf als sprecher und ändert Daten" do
  62. Time.stub :now, Time.parse("Sep 21, 2016, 17:00") do
  63. post "/wahl", params={:hashid => "a",:sprecher => "on"}
  64. post "/wahl", params={:hashid => "a",:sprecher => "", :schuko => "on", :email => "xyz"}
  65. a = Schueler["a"]
  66. a.sprecher.must_be_nil
  67. a.schuko.must_equal true
  68. a.email.must_equal "xyz"
  69. end
  70. end
  71. it "schüler stellt sich auf als sprecher und schuko" do
  72. Time.stub :now, Time.parse("Sep 21, 2016, 17:00") do
  73. post "/wahl", params={:hashid => "a", :sprecher => "on", :schuko => "on"}
  74. a = Schueler["a"]
  75. a.schuko.must_equal true
  76. a.sprecher.must_equal true
  77. end
  78. end
  79. it "schüler stellt sich auf als schuko und gibt Infos" do
  80. Time.stub :now, Time.parse("Sep 21, 2016, 17:00") do
  81. post "/wahl", params={:hashid => "a",:schuko => "on", :nachname => "AA7", :info => "Bin hier"}
  82. get "/a"
  83. last_response.body.must_include "AA7"
  84. last_response.body.must_include "Bin hier"
  85. end
  86. end
  87. end
  88. describe "schüler besucht seite zur passiven Wahl" do
  89. before do
  90. Schueler.create(:hashid => "a", :vorname => "A", :klasse => "A1", :schuko => true, :sprecher => true)
  91. Schueler.create(:hashid => "b", :vorname => "B", :klasse => "B1", :schuko => true, :sprecher => true)
  92. Schueler.create(:hashid => "c", :schuko => true)
  93. %w(d e f g h i j k l).each do |s|
  94. Schueler.create(:hashid => s, :sprecher => true)
  95. end
  96. end
  97. it "schüler gibt code auf startseite ein und wird umgeleitet" do
  98. Time.stub :now, Time.parse("Oct 1, 2016, 17:00") do
  99. post "/hashid", params={:hashid => "a"}
  100. follow_redirect!
  101. last_response.body.must_include "Hallo A,"
  102. end
  103. end
  104. it "schüler will sich als schuko aufstellen nach wahlbeginn" do
  105. Time.stub :now, Time.parse("Oct 1, 2016, 17:00") do
  106. post "/wahl", params={:hashid => "d",:schuko => "on"}
  107. a = Schueler["d"]
  108. a.sprecher.must_equal true
  109. a.schuko.must_be_nil
  110. follow_redirect!
  111. last_response.body.must_include "Wahl hat bereits begonnen"
  112. end
  113. end
  114. it "schüler wählt jeweils zwei" do
  115. Time.stub :now, Time.parse("Oct 1, 2016, 17:00") do
  116. post "/a", params={:sprecher => ["a", "b"], :schuko => ["a", "b"], :lehrer => [1,2]}
  117. a = Schueler["a"]
  118. a.gewaehlt.must_equal true
  119. Sprecher.count.must_equal 2
  120. Schuko.count.must_equal 2
  121. Verbindungslehrer.count.must_equal 2
  122. end
  123. end
  124. it "schüler wählt jeweils zwei und versucht es nochmal" do
  125. Time.stub :now, Time.parse("Oct 1, 2016, 17:00") do
  126. post "/a", params={:sprecher => ["a", "b"], :schuko => ["a", "b"], :lehrer => [1,2]}
  127. post "/a", params={:sprecher => ["d"]}
  128. a = Schueler["a"]
  129. a.gewaehlt.must_equal true
  130. Sprecher.count.must_equal 2
  131. Schuko.count.must_equal 2
  132. Verbindungslehrer.count.must_equal 2
  133. end
  134. end
  135. it "schüler wählt drei sprecher statt zwei" do
  136. Time.stub :now, Time.parse("Oct 1, 2016, 17:00") do
  137. post "/a", params={:sprecher => ["a", "b", "d"]}
  138. a = Schueler["a"]
  139. a.gewaehlt.must_be_nil
  140. Sprecher.count.must_equal 0
  141. end
  142. end
  143. it "schüler wählt neun schuko statt acht" do
  144. Time.stub :now, Time.parse("Oct 1, 2016, 17:00") do
  145. post "/a", params={:schuko => %w(d e f g h i j k l)}
  146. a = Schueler["a"]
  147. a.gewaehlt.must_be_nil
  148. Schuko.count.must_equal 0
  149. end
  150. end
  151. it "schüler wählt drei lehrer statt zwei" do
  152. Time.stub :now, Time.parse("Oct 1, 2016, 17:00") do
  153. post "/a", params={:lehrer => [1,2,3]}
  154. a = Schueler["a"]
  155. a.gewaehlt.must_be_nil
  156. Verbindungslehrer.count.must_equal 0
  157. end
  158. end
  159. it "schüler wählt nichtaufgestellten schuko" do
  160. Time.stub :now, Time.parse("Oct 1, 2016, 17:00") do
  161. post "/a", params={:schuko => %w(d)}
  162. a = Schueler["a"]
  163. a.gewaehlt.must_be_nil
  164. Schuko.count.must_equal 0
  165. end
  166. end
  167. end
  168. describe "schüler besucht seite nach der wahl" do
  169. before do
  170. Schueler.create(:hashid => "a", :vorname => "A", :klasse => "A1", :schuko => true, :sprecher => true)
  171. Schueler.create(:hashid => "b", :vorname => "B", :klasse => "B1", :schuko => true, :sprecher => true)
  172. Schueler.create(:hashid => "c", :schuko => true)
  173. Schueler.create(:hashid => "d")
  174. end
  175. it "schüler gibt code auf startseite ein und wird umgeleitet" do
  176. Time.stub :now, Time.parse("Oct 3, 2016, 19:00") do
  177. post "/hashid", params={:hashid => "a"}
  178. follow_redirect!
  179. last_response.body.must_include "Hallo A,"
  180. end
  181. end
  182. it "schüler will sich als schuko aufstellen nach wahlbeginn" do
  183. Time.stub :now, Time.parse("Oct 3, 2016, 19:00") do
  184. post "/wahl", params={:hashid => "d",:schuko => "on"}
  185. a = Schueler["d"]
  186. a.sprecher.must_be_nil
  187. a.schuko.must_be_nil
  188. end
  189. end
  190. it "schüler wählt jeweils zwei und kann es nicht mehr" do
  191. Time.stub :now, Time.parse("Oct 3, 2016, 19:00") do
  192. post "/a", params={:sprecher => ["a", "b"], :schuko => ["a", "b"], :lehrer => [1,2]}
  193. a = Schueler["a"]
  194. a.gewaehlt.must_be_nil
  195. Sprecher.count.must_equal 0
  196. Schuko.count.must_equal 0
  197. Verbindungslehrer.count.must_equal 0
  198. end
  199. end
  200. end
  201. describe "nach der Wahl" do
  202. before do
  203. Schueler.create(:hashid => "a", :vorname => "A", :klasse => "A1", :schuko => true, :sprecher => true)
  204. Sprecher.create(:schueler_id => "a")
  205. Sprecher.create(:schueler_id => "a")
  206. Schueler.create(:hashid => "b", :vorname => "B", :klasse => "B1", :schuko => true, :sprecher => true)
  207. Schuko.create(:schueler_id => "b")
  208. Verbindungslehrer.create(:lehrer_id => 1)
  209. Verbindungslehrer.create(:lehrer_id => 1)
  210. end
  211. it "Korrekte Wahlergebnisse nach Auszählung" do
  212. Lehrer.first.lehrer_stimmen.count.must_equal 2
  213. Lehrer[2].lehrer_stimmen.count.must_equal 0
  214. a = Schueler["a"]
  215. a.sprecher_stimmen.count.must_equal 2
  216. a.schuko_stimmen.count.must_equal 0
  217. b = Schueler["b"]
  218. b.sprecher_stimmen.count.must_equal 0
  219. b.schuko_stimmen.count.must_equal 1
  220. end
  221. it "startseite wird umgeleitet auf ergebnis" do
  222. Time.stub :now, Time.parse("Oct 3, 2016, 19:00") do
  223. get "/"
  224. follow_redirect!
  225. last_response.body.must_include "Wahlbeteiligung"
  226. end
  227. end
  228. it "hashcheck erfolgreich" do
  229. Time.stub :now, Time.parse("Oct 3, 2016, 17:00") do
  230. post "/a", params={:sprecher => ["b"], :schuko => ["b"], :lehrer => [2]}
  231. stimm_hash = session[:stimm_hash]
  232. post "/hashcheck", params={:stimm_hash => stimm_hash}
  233. last_response.body.must_include "B1"
  234. last_response.body.wont_include "A1"
  235. last_response.body.must_include "Maier"
  236. last_response.body.wont_include "Müller"
  237. end
  238. end
  239. end
  240. end