schueler_spec.rb 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. require "#{File.dirname(__FILE__)}/spec_helper"
  2. describe Schueler do
  3. before do
  4. # lade einen Standardschueler
  5. @sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
  6. end
  7. describe 'Models funktionieren erwartungsgemäß und geben einen Wert aus der Tabelle zurück' do
  8. it 'Model gibt Vornamen zurück' do
  9. @sm.Vorname.must_equal "Tanja"
  10. end
  11. end
  12. describe 'Legacy-Methoden funktionieren' do
  13. it 'kennt entlass_art' do
  14. @sm.entlassart.must_equal @sm.entlass_art
  15. end
  16. end
  17. describe 'Associations funktionieren Erwartungsgemäß' do
  18. it 'geben Fachklassenbezeichnung zurück (eigeneschule_fachklassen:Fachklassen)' do
  19. @sm.fachklasse.Bezeichnung.must_equal "Friseur"
  20. end
  21. it 'geben Noten aus dem angegebenen Halbjahr und Jahr zurück (via Lernabschnitte und Leistungen)' do
  22. @sm.halbjahr(2013,1).noten.first.ID.must_equal 163701
  23. end
  24. it 'gibt Konferenzdatum zurück (Lernabschnitte)' do
  25. # offenbar keine in der Testdatenbank eingetragen
  26. # deshalb Default-Objekt anfordern
  27. @sm.halbjahr(2013,1).konferenzdatum.must_be_instance_of Time
  28. end
  29. it 'gibt berufsbezogene Fächer aus den angegebenen Lernabschnitten zurück' do
  30. @sm.halbjahr(2013,2).berufsbezogen.map{|n|n.fach.FachKrz}.must_include 'FF'
  31. end
  32. it 'gibt berufsübergreifende Fächer aus den angegebenen Lernabschnitten zurück' do
  33. @sm.halbjahr(2013,2).berufsuebergreifend.map{|n|n.fach.FachKrz}.must_include 'D'
  34. end
  35. it 'gibt Fächer aus dem Differenzierungsbereich zurück über angegebenen Lernabschnitt' do
  36. Schueler[394].halbjahr(2007,1).differenzierungsbereich.map{|n|n.fach.FachKrz}.must_include 'CHDIFF'
  37. end
  38. it 'gibt Fächer aus allen Fächergruppen zurück' do
  39. fg = @sm.halbjahr(2013,2).faechergruppen.flatten.count
  40. fg.must_equal (@sm.halbjahr(2013,2).noten.select{|n|n.AufZeugnis == '+'}).count
  41. end
  42. it 'gibt Zulassung zurück' do
  43. Schueler[166].bk_abschluss.zulassung?.must_equal true
  44. Schueler[19].bk_abschluss.zulassung?.must_equal false
  45. end
  46. it 'gibt Zulassung Berufsabschluss zurück' do
  47. Schueler[166].bk_abschluss.zulassung_ba?.must_equal true
  48. Schueler[19].bk_abschluss.zulassung_ba?.must_equal false
  49. end
  50. it 'gibt Berufsabschluss bestanden zurück' do
  51. Schueler[166].bk_abschluss.bestanden_ba?.must_equal true
  52. Schueler[19].bk_abschluss.bestanden_ba?.must_equal false
  53. end
  54. it 'gibt zurück, ob Fach schriftlich' do
  55. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSTE"}.fach_schriftlich?.must_equal true
  56. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.fach_schriftlich?.must_equal false
  57. end
  58. it 'gibt zurück, ob Fach mündlich' do
  59. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "M"}.fach_muendlich?.must_equal true
  60. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.fach_muendlich?.must_equal false
  61. end
  62. it 'gibt Note schriftlich zurück' do
  63. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSTE"}.note_schriftlich.must_equal '3'
  64. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.note_schriftlich.must_equal ''
  65. end
  66. it 'gibt Note mündlich zurück' do
  67. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "M"}.note_muendlich.must_equal '6'
  68. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.note_muendlich.must_equal ''
  69. end
  70. it 'gibt Abschlussnote zurück' do
  71. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "M"}.note_abschluss.must_equal '5'
  72. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSFK"}.note_abschluss.must_equal '3'
  73. end
  74. it 'gibt Abschlussfächer zurück' do
  75. Schueler[145].bk_abschluss_leistungen.find{|l|l.fach_krz == "GSTE"}.vornote.must_equal '4'
  76. end
  77. it 'gibt Abschlussnote als String zurück' do
  78. # note als Symbol
  79. Schueler[373].bk_abschluss_leistungen.find{|l|l.fach_krz == "M"}.note(:vornote).must_equal 'gut'
  80. # Note als String
  81. Schueler[381].bk_abschluss_leistungen.find{|l|l.fach_krz == "PB"}.note('note_abschluss_ba').must_equal 'mangelhaft'
  82. end
  83. it 'gibt Abschlussnote-BA zurück, wenn Abschlussnoten ohne Argumente angegeben wird' do
  84. Schueler[5346].bk_abschluss_leistungen.find{|l|l.fach_krz == "E"}.note(:vornote).must_equal 'ausreichend'
  85. Schueler[5346].bk_abschluss_leistungen.find{|l|l.fach_krz == "E"}.note.must_equal 'mangelhaft'
  86. end
  87. it 'gibt die Sprachfolge als Niveau zurück' do
  88. skip
  89. # in der Test-Datenbank sind keine Sprachenfolgen eingetragen, daher ist das RN ""
  90. Schueler[2072].halbjahr(2013,2).noten.find{|l|l.fach_id == 18}.fach.sprachenfolge.referenzniveau.must_equal ''
  91. end
  92. it 'gibt Vermerke für Schüler als Array zurück' do
  93. @sm.vermerke.must_be_instance_of Array
  94. end
  95. it 'gibt Vermerk als String zurück' do
  96. skip
  97. # Leider keine Vermerke in der Testdatenbank eingetragen
  98. @sm.vermerke.first.must_be_instance_of String
  99. end
  100. #schuelerabifaecher kann wegen mangelnder daten nicht getestet werden
  101. # in der Testdatenbank sind leider keine Schülerfotos
  102. it 'gibt das Schülerfoto als jpg zurück' do
  103. skip
  104. @sm.foto.must_be_instance_of String
  105. end
  106. end
  107. describe 'gibt die korrekte Anzahl von Schülern über Klasse zurück' do
  108. it 'returns a group of people eg Klasse xy' do
  109. Schueler.where(:Klasse => 'FOS2').count.must_equal 124
  110. end
  111. end
  112. describe 'Methoden funktionieren erwartungsgemäß' do
  113. it 'gibt korrekte Berufsbezeichnung nach Geschlecht zurück' do
  114. @sm.berufsbezeichnung_mw.must_include "in"
  115. end
  116. it 'gibt die korrekte Anrede zurück' do
  117. @sm.anrede.must_equal "Frau"
  118. end
  119. it 'gibt an, ob ein Schüler volljährig ist' do
  120. @sm.volljaehrig?.must_equal true
  121. end
  122. it 'gibt an, ob Schüler im Vergelich zu *datum* volljährig ist' do
  123. @sm.Geburtsdatum=Time.new(1990)
  124. @sm.volljaehrig_bei?(@sm.geburtsdatum).must_equal false
  125. @sm.volljaehrig_bei?(Time.now).must_equal true
  126. end
  127. it 'gibt zurück, ob ein Foto vorhanden ist' do
  128. @sm.foto_vorhanden?.must_equal false
  129. end
  130. it 'gibt passende Bezeichnung Schüler oder Schülerin zurück' do
  131. @sm.schueler_in.must_equal "Schülerin"
  132. Schueler[24].schueler_in.must_equal "Schüler"
  133. end
  134. it 'gibt passende Bezeichnung Studierender oder Studierende zurück' do
  135. @sm.studierende_r.must_equal "Studierende"
  136. Schueler[24].studierende_r.must_equal "Studierender"
  137. end
  138. it 'gibt die Textbezeichnung für eine Note zurück' do
  139. @sm.halbjahr(2013,2).noten[5].note.must_equal "gut"
  140. end
  141. it 'gibt die Textbezeichnung auch bei ungeraden Noten zurück' do
  142. Schueler[178].halbjahr(2010,1).noten[0].note.must_equal "mangelhaft"
  143. Schueler[178].halbjahr(2010,1).noten[0].NotenKrz.must_equal "5-"
  144. end
  145. it 'gibt die volle Fachbezeichnung zurück' do
  146. @sm.halbjahr(2013,2).noten[5].bezeichnung.must_equal "Farb- und Formveränderung"
  147. end
  148. it 'gibt die korrekte Fachgruppen_ID zurück' do
  149. @sm.halbjahr(2013,2).noten[5].fachgruppe_ID.must_equal 20
  150. end
  151. it 'gibt den Namen des Klassenlehrers zurück' do
  152. @sm.halbjahr(2013,2).v_name_klassenlehrer.must_equal "P. Ronnewinkel"
  153. end
  154. it 'gibt an, ob Klassenlehrer/in' do
  155. @sm.halbjahr(2013,2).klassenlehrer_in.must_equal "Klassenlehrer"
  156. end
  157. it 'gibt das zweite Halbjahr zurück' do
  158. @sm.halbjahr(2013,2).Abschnitt.must_equal 2
  159. @sm.halbjahr(2013,2).Jahr.must_equal 2013
  160. end
  161. it 'gibt das erste Halbjahr zurück' do
  162. @sm.halbjahr(2014,1).Abschnitt.must_equal 1
  163. @sm.halbjahr(2014,1).Jahr.must_equal 2014
  164. end
  165. it 'gibt das aktuelle Halbjahr zurück' do
  166. @sm.akt_halbjahr.Jahr.must_equal 2014
  167. @sm.akt_halbjahr.Abschnitt.must_equal 1
  168. end
  169. it 'wählt das angegebene Jahr und Halbjahr aus' do
  170. @sm.halbjahr(2013, 2).ID.must_equal 14478
  171. end
  172. it 'gibt passendes Schuljahr zurück' do
  173. @sm.halbjahr(2013, 2).schuljahr.must_equal "2013/14"
  174. end
  175. end
  176. end