Пример #1
0
    def test01(self):

        # is it the right settings module?
        self.assertEqual(os.environ["DJANGO_SETTINGS_MODULE"], "lino_welfare.projects.std.settings.demo")

        self.assertEqual(
            settings.MIDDLEWARE_CLASSES,
            (
                "django.middleware.common.CommonMiddleware",
                "django.middleware.locale.LocaleMiddleware",
                "lino.core.auth.RemoteUserMiddleware",
                "lino.utils.ajax.AjaxExceptionResponse",
            ),
        )

        u = users.User(username="******", profile=UserTypes.admin, language="en")
        u.save()
        be = countries.Country(name="Belgium", isocode="BE")
        be.save()
        kw = dict()
        # kw.update(card_number="123456789")
        # kw.update(national_id="680601 053-29")
        kw.update(id=116)
        kw.update(first_name="Jean")
        kw.update(middle_name="Jacques")
        kw.update(last_name="Jeffin")
        obj = pcsw.Client(**kw)
        obj.full_clean()
        obj.save()

        from lino_xl.lib.households.fixtures.std import objects

        for o in objects():
            o.save()

        # FIRST TEST : helped me to understand a problem on 20150130
        # ("Submitting an ActionFormPanel no longer forwards
        # `param_values`").  Since the problem was caused by
        # Javascript code in :xfile:`linoweb.js`, it cannot
        # actually reproduce the problem (that would
        # require a Javascript testing framework).

        # Reception --> Clients --> Detail on client 116

        url = "/api/reception/Clients/116?"
        # url += "pv=&pv=&pv=&pv=&pv=false&pv=&pv=&pv=&pv=&pv=&pv=10&pv=false"
        url += "&an=detail&rp=ext-comp-1359&fmt=json"

        response = self.client.get(url, REMOTE_USER="******")
        result = self.check_json_result(response, "navinfo data disable_delete id title")

        fieldname = "MembersByPerson"
        html = result["data"][fieldname]
        soup = BeautifulSoup(html)

        links = soup.find_all("a")
        self.assertEqual(len(links), 6)
        self.assertEqual(links[0].string, "Married couple")
        self.assertEqual(links[1].get_text(), "Divorced couple")
        js = links[0]["href"]

        # javascript:Lino.contacts.Persons.create_household.run(\
        # "ext-comp-1359",{
        # "field_values": { "head": "JEFFIN Jean (116)", "headHidden":
        # 116, "typeHidden": 1, "partner": null, "partnerHidden":
        # null, "type": "Married" }, "param_values": {
        # "also_obsolete": false, "gender": null, "genderHidden": null
        # }, "base_params": { } })

        start = "javascript:Lino.contacts.Persons.create_household." 'run("ext-comp-1359",'
        self.assertEqual(js.startswith(start), True)
        js = js[len(start) : -1]
        d = AttrDict(json.loads(js))

        self.assertEqual(" ".join(d.keys()), "field_values param_values base_params")
        self.assertEqual(len(d.field_values), 6)
        self.assertEqual(len(d.param_values), 3)
        self.assertEqual(len(d.base_params), 0)

        fv = AttrDict(d.field_values)
        self.assertEqual(fv.head, "JEFFIN Jean (116)")

        pv = AttrDict(d.param_values)
        self.assertEqual(pv.also_obsolete, False)
        self.assertEqual(pv.gender, None)
        self.assertEqual(pv.genderHidden, None)

        # When user klicks OK:
        url = "/api/contacts/Persons/116"
        url += "?fv=&fv=1&fv=116&an=create_household"

        # The 20150130 problem was because the ActionFormPanel added
        # param_values. When klicking OK, it sometimes added the
        # following:
        if False:  # before 20150130
            url += "&pv=&pv=&pv=&pv=&pv=false&pv=&pv=&pv=&pv=&pv=&pv=10&pv=false"
        url += "&sr=116"
        response = self.client.get(url, REMOTE_USER="******")
        result = self.check_json_result(response, "message eval_js success refresh_all close_window")