from django.test import TestCase
#from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User

# Create your tests here.
from .AWK import config
from django.test import Client
from django.urls import reverse

class TestConfig(TestCase):
    def test_setter(self):
        cf = config.getInstance("svbal")
        cf.setConfig("bla", "blub")
        
        val = cf.getConfig("bla")
        assert (val == "blub")
        
        # change setting
        cf.setConfig("bla", "bar")
        val = cf.getConfig("bla")
        assert (val == "bar")
        
class TestQModel(TestCase):
    def setUp(self):
        cf = config.getInstance("svbal")
        cf.setConfig("datenquelle", "TestExport.csv")
        cf.setConfig("data_path", "/tmp/svbal")

    def test_allinstances(self):
        config.getInstance("svbal")
        from eh_app.qmodels import Mitglied
        mm = Mitglied.objects.all()
        assert (len(mm) == 5)
        gst = mm[0].VersicherteGrundstucke()
        assert (len(gst) == 1)
        for m in mm:
            if m.nachname == "Wagner":
                gst = m.VersicherteGrundstucke()
                assert (len(gst) == 3)

class TestViews(TestCase):
    def setUp(self):
        self.user = User(username="nutzer", password="nutzer")
        self.user.save()
        cf = config.getInstance("svbal")
        cf.setConfig("data_path", "/tmp/svbal")
    def test_index(self):
        client = Client()
        response = client.get(reverse('index'))
        assert(response.status_code == 200)
        
    def test_ehmeldung_bug_161(self):
        client = Client()
        client.force_login(self.user)
        response = client.post('/eh-app/svbal/ehmeldung/', 
            {"verein": "svbal",
             "VorZuname": "Michael Wagner",
             "Wohnanschrift": "Seestr 2, 12345 Ort",
             "AnzahlWohnungen": "1"
             })
        assert(response.status_code == 302)
        assert(response.url == '/eh-app/svbal/ehmeldung/erfolg')
        
        
        