models.test.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. const Schild = require("../dist/schild.cjs")
  2. // import { Schild } from '../dist/schild.esm'
  3. import {Schueler, Abschnitt, Fachklasse, Versetzung, Lehrer, Note, Fach, BKAbschluss, BKAbschlussFach, AbiAbschluss, AbiAbschlussFach,
  4. FHRAbschluss, FHRAbschlussFach, Sprachenfolge, FachGliederung, Vermerk, Schuelerfoto, Schule, Nutzer, Jahrgang} from '../dist/schild.esm'
  5. const connectionString = {
  6. client: 'mysql',
  7. useNullAsDefault: true,
  8. connection: {
  9. host: 'localhost',
  10. database: 'schild_berufskolleg',
  11. user: 'schild',
  12. password: 'schild',
  13. charset: 'utf8'
  14. }
  15. }
  16. const schild = new Schild
  17. schild.connect(connectionString, 'testing')
  18. afterAll(() => {
  19. schild.disconnect()
  20. })
  21. describe('Schüler Model', () => {
  22. test('Schueler wird gefunden', async () => {
  23. expect.assertions(1)
  24. await expect(Schueler.query().where('ID', 1).first()).resolves.toBeInstanceOf(Schueler)
  25. })
  26. test('akt_halbjahr geht nicht', async () => {
  27. expect.assertions(1)
  28. const s = await Schueler.query().where('ID', 1).first()
  29. expect(s.akt_halbjahr).toBeUndefined()
  30. })
  31. test('Anrede geht', async () => {
  32. expect.assertions(1)
  33. const s = await Schueler.query().where('ID', 1).first()
  34. expect(s.anrede).toEqual('Frau')
  35. })
  36. test('Schüler_in geht', async () => {
  37. expect.assertions(1)
  38. const s = await Schueler.query().where('ID', 1).first()
  39. expect(s.schueler_in).toEqual('Schülerin')
  40. })
  41. test('Studierende_r geht', async () => {
  42. expect.assertions(1)
  43. const s = await Schueler.query().where('ID', 1).first()
  44. expect(s.studierende_r).toEqual('Studierende')
  45. })
  46. test('berufsbezeichnung_mw geht', async () => {
  47. expect.assertions(1)
  48. const s = await Schueler.query().where('ID', 1).withGraphFetched('fachklasse').first()
  49. expect(s.berufsbezeichnung_mw).toEqual('Staatlich anerkannte Erzieherin - praxisintegrierte Form')
  50. })
  51. test('berufsbezeichnung_mw geht nicht', async () => {
  52. expect.assertions(1)
  53. const s = await Schueler.query().where('ID', 1).first()
  54. expect(s.berufsbezeichnung_mw).toEqual('Keine Fachklasse zugeordnet')
  55. })
  56. test('volljährig geht', async () => {
  57. expect.assertions(1)
  58. const s = await Schueler.query().where('ID', 1).first()
  59. expect(s.volljaehrig).toEqual(true)
  60. })
  61. test('volljährig_bei geht', async () => {
  62. expect.assertions(2)
  63. const s = await Schueler.query().where('ID', 1).first()
  64. expect(s.volljaehrig_bei('August 19, 2015 23:15:30')).toEqual(true)
  65. expect(s.volljaehrig_bei('August 19, 1996 23:15:30')).toEqual(true)
  66. })
  67. test('Schüler-Relations werden gefunden', async () => {
  68. expect.assertions(4)
  69. const s = await Schueler.query().where('ID', 995).withGraphFetched('[abschnitte, fachklasse, bk_abschluss, bk_abschluss_faecher]').first()
  70. expect(s.abschnitte[0]).toBeInstanceOf(Abschnitt)
  71. expect(s.fachklasse).toBeInstanceOf(Fachklasse)
  72. expect(s.bk_abschluss).toBeInstanceOf(BKAbschluss)
  73. expect(s.bk_abschluss_faecher[0]).toBeInstanceOf(BKAbschlussFach)
  74. })
  75. test('Abi-Relations werden gefunden', async () => {
  76. expect.assertions(2)
  77. const s = await Schueler.query().where('ID', 279).withGraphFetched('[abi_abschluss, abi_abschluss_faecher]').first()
  78. expect(s.abi_abschluss).toBeInstanceOf(AbiAbschluss)
  79. expect(s.abi_abschluss_faecher[0]).toBeInstanceOf(AbiAbschlussFach)
  80. })
  81. test('FHR-Relations werden gefunden', async () => {
  82. expect.assertions(2)
  83. const s = await Schueler.query().where('ID', 120).withGraphFetched('[fhr_abschluss, fhr_abschluss_faecher]').first()
  84. expect(s.fhr_abschluss).toBeInstanceOf(FHRAbschluss)
  85. expect(s.fhr_abschluss_faecher[0]).toBeInstanceOf(FHRAbschlussFach)
  86. })
  87. test('Sprachenfolge-Relations werden gefunden', async () => {
  88. expect.assertions(1)
  89. const s = await Schueler.query().where('ID', 8).withGraphFetched('sprachenfolgen').first()
  90. expect(s.sprachenfolgen[0]).toBeInstanceOf(Sprachenfolge)
  91. })
  92. test('Schuelerfoto-Relations werden gefunden', async () => {
  93. expect.assertions(1)
  94. const s = await Schueler.query().where('ID', 34).withGraphFetched('schuelerfoto').first()
  95. expect(s.schuelerfoto).toBeInstanceOf(Schuelerfoto)
  96. })
  97. test('Vermerk-Relations werden gefunden', async () => {
  98. expect.assertions(1)
  99. const s = await Schueler.query().where('ID', 341).withGraphFetched('vermerke').first()
  100. expect(s.vermerke[0]).toBeInstanceOf(Vermerk)
  101. })
  102. test('Versetzung-Relations werden gefunden', async () => {
  103. expect.assertions(1)
  104. const s = await Schueler.query().where('ID', 341).withGraphFetched('versetzung').first()
  105. expect(s.versetzung).toBeInstanceOf(Versetzung)
  106. })
  107. })
  108. describe('Abschnitt-Model', () => {
  109. test('Abschnitt-Relations werden gefunden', async () => {
  110. expect.assertions(3)
  111. const s = await Schueler.query().where('ID', 995).withGraphFetched('abschnitte.[lehrer, fachklasse, noten]').first()
  112. expect(s.abschnitte[0].lehrer).toBeInstanceOf(Lehrer)
  113. expect(s.abschnitte[0].fachklasse).toBeInstanceOf(Fachklasse)
  114. expect(s.abschnitte[0].noten[0]).toBeInstanceOf(Note)
  115. })
  116. test('V. Name des Klassenlehrers', async () => {
  117. expect.assertions(1)
  118. const s = await Schueler.query().where('ID', 1995).withGraphFetched('abschnitte.[lehrer]').first()
  119. expect(s.abschnitte[0].v_name_klassenlehrer).toContain('B. De')
  120. })
  121. test('Klassenlehrer oder Klassenlehrerin', async () => {
  122. expect.assertions(2)
  123. const s = await Schueler.query().where('ID', 2405).withGraphFetched('abschnitte.[lehrer]').first()
  124. expect(s.abschnitte[0].klassenlehrer_in).toEqual('Klassenlehrerin')
  125. const ss = await Schueler.query().where('ID', 1598).withGraphFetched('abschnitte.[lehrer]').first()
  126. expect(ss.abschnitte[0].klassenlehrer_in).toEqual('Klassenlehrer')
  127. })
  128. test('Schuljahr im Format 2015/16 ausgeben', async () => {
  129. expect.assertions(1)
  130. const s = await Schueler.query().where('ID', 995).withGraphFetched('abschnitte').first()
  131. expect(s.abschnitte[0].schuljahr).toEqual('2014/15')
  132. })
  133. })
  134. describe('Note-Model', () => {
  135. test('Note-Relations werden gefunden', async () => {
  136. expect.assertions(1)
  137. const s = await Schueler.query().where('ID', 995).withGraphFetched('abschnitte.noten.fach').first()
  138. expect(s.abschnitte[0].noten[0].fach).toBeInstanceOf(Fach)
  139. })
  140. })
  141. describe('Fachklasse-Model', () => {
  142. test('Fachgruppen-Relations werden gefunden', async () => {
  143. expect.assertions(1)
  144. const s = await Schueler.query().where('ID', 908).withGraphFetched('fachklasse.fach_gliederungen').first()
  145. expect(s.fachklasse.fach_gliederungen[0]).toBeInstanceOf(FachGliederung)
  146. })
  147. })
  148. describe('Fach-Model', () => {
  149. test('Fach-Relations werden gefunden', async () => {
  150. expect.assertions(1)
  151. const s = await Schueler.query().where('ID', 908).withGraphFetched('abschnitte.noten.fach.fach_gliederungen').first()
  152. expect(s.abschnitte[0].noten[0].fach.fach_gliederungen[0]).toBeInstanceOf(FachGliederung)
  153. })
  154. })
  155. describe('BKAbschlussFach-Model', () => {
  156. test('BKAbschlussFach-Relations werden gefunden', async () => {
  157. expect.assertions(1)
  158. const s = await Schueler.query().where('ID', 995).withGraphFetched('bk_abschluss_faecher.fach').first()
  159. expect(s.bk_abschluss_faecher[0].fach).toBeInstanceOf(Fach)
  160. })
  161. })
  162. describe('AbiAbschlussFach-Model', () => {
  163. test('AbiAbschlussFach-Relations werden gefunden', async () => {
  164. expect.assertions(1)
  165. const s = await Schueler.query().where('ID', 279).withGraphFetched('abi_abschluss_faecher.fach').first()
  166. expect(s.abi_abschluss_faecher[0].fach).toBeInstanceOf(Fach)
  167. })
  168. })
  169. describe('FHRAbschlussFach-Model', () => {
  170. test('FHRAbschlussFach-Relations werden gefunden', async () => {
  171. expect.assertions(1)
  172. const s = await Schueler.query().where('ID', 120).withGraphFetched('fhr_abschluss_faecher.fach').first()
  173. expect(s.fhr_abschluss_faecher[0].fach).toBeInstanceOf(Fach)
  174. })
  175. })
  176. describe('Sprachenfolge-Model', () => {
  177. test('Sprachenfolge-Relations werden gefunden', async () => {
  178. expect.assertions(1)
  179. const s = await Schueler.query().where('ID', 8).withGraphFetched('sprachenfolgen.fach').first()
  180. expect(s.sprachenfolgen[0].fach).toBeInstanceOf(Fach)
  181. })
  182. })
  183. describe('Versetzung-Model', () => {
  184. test('Versetzung-Relations werden gefunden', async () => {
  185. expect.assertions(4)
  186. const k = await Versetzung.query().where('Klasse', 'B15B2').withGraphFetched('[schueler, fachklasse]').first()
  187. expect(k.schueler[0]).toBeInstanceOf(Schueler)
  188. expect(k.schueler).toHaveLength(18)
  189. expect(k.fachklasse).toBeInstanceOf(Fachklasse)
  190. expect(k.fachklasse.Bezeichnung).toEqual('Sozialassistent')
  191. })
  192. })
  193. describe('Schule Model', () => {
  194. test('Schulleiter_In geht', async () => {
  195. expect.assertions(1)
  196. const s = await Schule.query().where('ID', 1).first()
  197. expect(s.schulleiter_in).toEqual('Schulleiterin')
  198. })
  199. })
  200. describe('alle Models durchtesten', () => {
  201. test('einmal checken', async () => {
  202. expect.assertions(20)
  203. expect(await Schueler.query().where('ID', 1).first()).toBeInstanceOf(Schueler)
  204. expect(await Abschnitt.query().where('ID', 17).first()).toBeInstanceOf(Abschnitt)
  205. expect(await Fachklasse.query().where('ID', 1).first()).toBeInstanceOf(Fachklasse)
  206. expect(await Jahrgang.query().where('ID', 5).first()).toBeInstanceOf(Jahrgang)
  207. expect(await Versetzung.query().where('ID', 5).first()).toBeInstanceOf(Versetzung)
  208. expect(await Lehrer.query().where('ID', 1).first()).toBeInstanceOf(Lehrer)
  209. expect(await Note.query().where('ID', 137).first()).toBeInstanceOf(Note)
  210. expect(await Fach.query().where('ID', 1).first()).toBeInstanceOf(Fach)
  211. expect(await BKAbschluss.query().where('Schueler_ID', 1).first()).toBeInstanceOf(BKAbschluss)
  212. expect(await BKAbschlussFach.query().where('ID', 40).first()).toBeInstanceOf(BKAbschlussFach)
  213. expect(await AbiAbschluss.query().where('ID', 1).first()).toBeInstanceOf(AbiAbschluss)
  214. expect(await AbiAbschlussFach.query().where('ID', 3204).first()).toBeInstanceOf(AbiAbschlussFach)
  215. expect(await FHRAbschluss.query().where('ID', 1).first()).toBeInstanceOf(FHRAbschluss)
  216. expect(await FHRAbschlussFach.query().where('ID', 3).first()).toBeInstanceOf(FHRAbschlussFach)
  217. expect(await Sprachenfolge.query().where('ID', 1).first()).toBeInstanceOf(Sprachenfolge)
  218. expect(await FachGliederung.query().where('Fach_ID', 216).first()).toBeInstanceOf(FachGliederung)
  219. expect(await Vermerk.query().where('ID', 1).first()).toBeInstanceOf(Vermerk)
  220. expect(await Schuelerfoto.query().where('Schueler_ID', 34).first()).toBeInstanceOf(Schuelerfoto)
  221. expect(await Schule.query().where('ID', 1).first()).toBeInstanceOf(Schule)
  222. expect(await Nutzer.query().where('ID', 1).first()).toBeInstanceOf(Nutzer)
  223. })
  224. })
  225. describe('JSON enthält alle virtuellen Properties', () => {
  226. test('alles durchchecken', async () => {
  227. expect.assertions(3)
  228. const s = await Schueler.query().where('ID', 995).withGraphFetched('[abschnitte, fachklasse, bk_abschluss, bk_abschluss_faecher]').first()
  229. expect(s.toJSON().schueler_in).toEqual('Schülerin')
  230. expect(s.toJSON().anrede).toEqual('Frau')
  231. expect(s.toJSON().studierende_r).toEqual('Studierende')
  232. })
  233. })