def test_evaluieren_bestellung(self): """Veranstaltung nimmt an der Evalution teil. Es werden alle nötigen Daten angegeben""" form_data = self.fullFormExample form_data.update({'evaluieren': 'on', 'typ': 'vu', 'ergebnis_empfaenger': [self.p[0].id]}) form = BestellungModelForm(instance=self.v, data=form_data) self.assertTrue(form.is_valid(), 'Form wurde als invalide evaluiert obwohl alle nötigen Felder angegeben sind. Prüfen ob wirklich alle nötigen Felder angegeben sind')
def test_evaluate_partiel_complete_bestellung(self): """Veranstaltung nimmt an der Evaluation teil. Es werden nicht alle benötigen Daten übertragen. Alle Kombinationen werden getestet""" requiredFields = self.fullFormExample # ja es gibt 2^n - 2 kombinationen! iterationEnd = pow(2, len(requiredFields)) - 1 noBits = len(requiredFields) + 2 # +2 für '0b' binFormat = "#0%db" % noBits for i in range(1, iterationEnd): # Wir nehmen immer an der Evaluation teil formData = {'evaluieren': 'on'} # Die aktuelle Auswahl als nBit String selection = format(i, binFormat).split('b')[1] # Teste das die Anzahl der Bits immer gleich der Felder ist self.assertEqual(len(requiredFields), len(selection), 'Die Anzahl Bits stimmt nicht mit der Anzahl der Felder überein') # iterriere über die Zeichen im String for bitNumber in range(0, len(requiredFields)): # Wenn das Bit gesetzt ist if selection[bitNumber] == '1': # füge das Feld zum Form hinzu formData.update({requiredFields.keys()[bitNumber]: requiredFields.values()[bitNumber]}) form = BestellungModelForm(instance=self.v, data=formData) self.assertFalse(form.is_valid(), 'Form ist valide obwohl nicht alle Felder gesetzt sind. Daten: %s' % str(formData))
def test_evaluate_partiel_complete_bestellung(self): """Veranstaltung nimmt an der Evaluation teil. Es werden nicht alle benötigen Daten übertragen. Alle Kombinationen werden getestet""" requiredFields = self.fullFormExample #ja es gibt 2^n - 2 kombinationen! iterationEnd = pow(2,len(requiredFields))-1 noBits = len(requiredFields) +2 #+2 für '0b' binFormat= "#0%db" % noBits for i in range(1,iterationEnd): #Wir nehmen immer an der Evaluation teil formData = {'evaluieren':'on'} #Die aktuelle Auswahl als nBit String selection=format(i, binFormat).split('b')[1] #Teste das die Anzahl der Bits immer gleich der Felder ist self.assertEqual(len(requiredFields), len(selection), 'Die Anzahl Bits stimmt nicht mit der Anzahl der Felder überein') #iterriere über die Zeichen im String for bitNumber in range(0,len(requiredFields)): #Wenn das Bit gesetzt ist if selection[bitNumber]=='1': #füge das Feld zum Form hinzu formData.update({requiredFields.keys()[bitNumber]:requiredFields.values()[bitNumber]}) form = BestellungModelForm(instance=self.v, data=formData) self.assertFalse(form.is_valid(), 'Form ist valide obwohl nicht alle Felder gesetzt sind. Daten: %s'%str(formData))
def test_nicht_evaluieren_bestellung(self): """Veranstaltung nimmt nicht an der Evaluation teil. Jede Bestellung ist gültig.""" #Aktuell wird eine nicht auswahl von evaluieren mit nicht übertragen #des Feldes dargestellt. Darum werden einfach keine Daten übertragen form_data = {'typ': 'vu'} form = BestellungModelForm(instance=self.v, data=form_data) self.assertTrue(form.is_valid(), 'Veranstaltung nimmt nicht an der Evaluation teil. Trotzdem ist das Form ungültig')
def test_evaluieren_null_boegen_bestellung(self): """Veranstaltng nimmt an der Evaluation teil. Es werden aber 0 Bögen bestellt""" form_Data = self.fullFormExample form_Data.update({'evaluieren':'on'}) form_Data['anzahl'] = 0 form = BestellungModelForm(instance=self.v, data=form_Data) self.assertFalse(form.is_valid(), 'Es wurden 0 Bögen bestellt, trotzdem ist die Bestellung gültig')
def test_evaluieren_null_boegen_bestellung(self): """Veranstaltng nimmt an der Evaluation teil. Es werden aber 0 Bögen bestellt""" form_Data = self.fullFormExample form_Data.update({'evaluieren': 'on'}) form_Data['anzahl'] = 0 form = BestellungModelForm(instance=self.v, data=form_Data) self.assertFalse(form.is_valid(), 'Es wurden 0 Bögen bestellt, trotzdem ist die Bestellung gültig')
def test_nicht_evaluieren_bestellung(self): """Veranstaltung nimmt nicht an der Evaluation teil. Jede Bestellung ist gültig.""" # Aktuell wird eine nicht auswahl von evaluieren mit nicht übertragen # des Feldes dargestellt. Darum werden einfach keine Daten übertragen form_data = {'typ': 'vu'} form = BestellungModelForm(instance=self.v, data=form_data) self.assertTrue(form.is_valid(), 'Veranstaltung nimmt nicht an der Evaluation teil. Trotzdem ist das Form ungültig')
def index(request): if request.user.username != settings.USERNAME_VERANSTALTER: return render(request, 'veranstalter/not_authenticated.html') data = {} veranst = Veranstaltung.objects.get(id=request.session['vid']) #TODO: statt Betrachtung der Sichtbarkeit automatisch aktuelles Semester (-> Kalender) annehmen if veranst.semester.sichtbarkeit == 'ADM' and Einstellung.get('bestellung_erlaubt') == '1': if request.method == 'POST': order_form = BestellungModelForm(request.POST, instance=veranst) if order_form.is_valid(): order_form.save() return redirect('VerantwortlicherUpdate') else: order_form = BestellungModelForm(instance=veranst) data['order_form'] = order_form data['paper_dict'] = past_semester_orders(veranst) if veranst.semester.sichtbarkeit != 'ADM': try: kommentar = Kommentar.objects.get(veranstaltung=veranst) except Kommentar.DoesNotExist: kommentar = None if request.method == 'POST': comment_form = KommentarModelForm(request.POST, instance=kommentar, veranstaltung=veranst) if comment_form.is_valid(): #TODO: löschen ermöglichen kommentar = comment_form.save(commit=False) kommentar.veranstaltung = veranst kommentar.save() messages.success(request, 'Ihre Änderungen wurden gespeichert.') else: comment_form = KommentarModelForm(instance=kommentar, veranstaltung=veranst) data['comment_form'] = comment_form data['veranstaltung'] = veranst return render(request, 'veranstalter/index.html', data)
def index(request): if request.user.username != settings.USERNAME_VERANSTALTER: return render(request, 'veranstalter/not_authenticated.html') data = {} veranst = Veranstaltung.objects.get(id=request.session['vid']) # TODO: statt Betrachtung der Sichtbarkeit automatisch aktuelles Semester (-> Kalender) annehmen if veranst.semester.sichtbarkeit == 'ADM' and Einstellung.get( 'bestellung_erlaubt') == '1': if request.method == 'POST': order_form = BestellungModelForm(request.POST, instance=veranst) if order_form.is_valid(): order_form.save() return redirect('VerantwortlicherUpdate') else: order_form = BestellungModelForm(instance=veranst) data['order_form'] = order_form data['paper_dict'] = past_semester_orders(veranst) if veranst.semester.sichtbarkeit != 'ADM': try: kommentar = Kommentar.objects.get(veranstaltung=veranst) except Kommentar.DoesNotExist: kommentar = None if request.method == 'POST': comment_form = KommentarModelForm(request.POST, instance=kommentar, veranstaltung=veranst) if comment_form.is_valid(): # TODO: löschen ermöglichen kommentar = comment_form.save(commit=False) kommentar.veranstaltung = veranst kommentar.save() messages.success(request, 'Ihre Änderungen wurden gespeichert.') else: comment_form = KommentarModelForm(instance=kommentar, veranstaltung=veranst) data['comment_form'] = comment_form data['veranstaltung'] = veranst return render(request, 'veranstalter/index.html', data)
def test_evaluate_leere_bestellung(self): """Veranstaltung nimmt an der Evaluation teil. Es werden keine weiteren Felder übertragen""" form_data = {'evaluieren': 'on'} form = BestellungModelForm(instance=self.v, data=form_data) self.assertFalse(form.is_valid(), 'Form wurde als valide evaluiert obwohl Anzahl etc fehlen')
def test_init(self): with self.assertRaises(KeyError): BestellungModelForm() form = BestellungModelForm(instance=self.v) self.assertItemsEqual(form.fields['verantwortlich'].queryset.all(), (self.p[0],))