def test_get(self):
        ag_login_id = '0077c686-b0ad-11f8-e050-8a800c5d1877'
        self.mock_login_admin()
        email = db.get_login_info(ag_login_id)[0]['email']
        response = self.get('/ag_edit_participant/', {'email': email})
        self.assertEqual(response.code, 200)

        # check that all relevant user information is rendered on HTML side
        login = db.get_login_by_email(email)
        for key, value in login.items():
            if not isinstance(key, unicode):
                key = key.decode('utf-8')
            if key == 'zip':
                key = u'zipcode'
            elif key == 'ag_login_id':
                continue
            if not isinstance(value, unicode):
                value = value.decode('utf-8')
            key = xhtml_escape(key.encode('utf-8'))
            value = xhtml_escape(value.encode('utf-8'))
            self.assertIn(('</td><td><input type="text" name="%s" id="%s" '
                           'value="%s"></td></tr>') % (key, key, value),
                          response.body)

        # check what happens if user with email does not exist.
        # TODO: we should create a better error message in the handler to be
        # displayed, see issue: #115
        response = self.get('/ag_edit_participant/?email=notInDB')
        self.assertIn('AN ERROR HAS OCCURED!', response.body)
        self.assertEqual(response.code, 500)

        # TODO: similarly if no email, i.e. user, is given. Issue: #115
        response = self.get('/ag_edit_participant/?email=')
        self.assertIn('AN ERROR HAS OCCURED!', response.body)
        self.assertEqual(response.code, 500)
Example #2
0
    def test_post_user(self):
        self.mock_login_admin()

        # search participant info
        search_term = '*****@*****.**'
        response = self.post('/ag_search/', {'search_term': search_term})
        self.assertEqual(response.code, 200)
        for login in db.search_participant_info(search_term):
            for l in db.get_login_info(login):
                for field in l:
                    if field == 'ag_login_id':
                        self.assertNotIn(l[field], response.body)
                    else:
                        self.assertIn(l[field], response.body)
Example #3
0
    def test_post_user(self):
        self.mock_login_admin()

        # search participant info
        search_term = '*****@*****.**'
        response = self.post('/ag_search/', {'search_term': search_term})
        self.assertEqual(response.code, 200)
        for login in db.search_participant_info(search_term):
            for l in db.get_login_info(login):
                for field in l:
                    if field == 'ag_login_id':
                        self.assertNotIn(l[field], response.body)
                    else:
                        self.assertIn(l[field], response.body)
Example #4
0
    def post(self):
        term = self.get_argument('search_term')
        results = {}
        # search participant info
        logins = db.search_participant_info(term)
        results = set(logins)
        # search kit info and add to resluts
        logins = db.search_kits(term)
        results = results | set(logins)
        #  search barcode and add to results
        logins = db.search_barcodes(term)
        results = results | set(logins)
        # search handout kits
        handouts = db.search_handout_kits(term)

        # now take the ag_login_ids and collect the information to display
        display_results = []  # list of dictionatries
        for login in results:
            login_display = {}
            login_display['login_info'] = db.get_login_info(login)
            login_display['humans'] = db.getHumanParticipants(
                login)
            login_display['animals'] = db.getAnimalParticipants(
                login)
            login_display['kit'] = db.get_kit_info_by_login(login)
            for kit in login_display['kit']:
                barcode_info = {}
                ag_barcodes = db.get_barcode_info_by_kit_id(
                    kit['ag_kit_id'])
                barcode_info = {}
                for ag_barcode in ag_barcodes:
                    barcode_info[ag_barcode['barcode']] = {}
                    barcode_info[ag_barcode['barcode']]['ag_info'] = ag_barcode
                    lab_barcode_info = db.get_barcode_details(
                        ag_barcode['barcode'])
                    plate = db.get_plate_for_barcode(
                        ag_barcode['barcode'])
                    barcode_info[ag_barcode['barcode']]['barcode_info'] = \
                        lab_barcode_info
                    barcode_info[ag_barcode['barcode']]['plate'] = plate
                kit['barcode_info'] = barcode_info
            display_results.append(login_display)

        # now render the page
        self.render("ag_search.html",
                    results=display_results,
                    handouts=handouts,
                    currentuser=self.current_user)
Example #5
0
    def post(self):
        term = self.get_argument('search_term')
        results = {}
        # search participant info
        logins = db.search_participant_info(term)
        results = set(logins)
        # search kit info and add to resluts
        logins = db.search_kits(term)
        results = results | set(logins)
        #  search barcode and add to results
        logins = db.search_barcodes(term)
        results = results | set(logins)
        # search handout kits
        handouts = db.search_handout_kits(term)

        # now take the ag_login_ids and collect the information to display
        display_results = []  # list of dictionatries
        for login in results:
            login_display = {}
            login_display['login_info'] = db.get_login_info(login)
            login_display['humans'] = db.getHumanParticipants(
                login)
            login_display['animals'] = db.getAnimalParticipants(
                login)
            login_display['kit'] = db.get_kit_info_by_login(login)
            for kit in login_display['kit']:
                barcode_info = {}
                ag_barcodes = db.get_barcode_info_by_kit_id(
                    kit['ag_kit_id'])
                barcode_info = {}
                for ag_barcode in ag_barcodes:
                    barcode_info[ag_barcode['barcode']] = {}
                    barcode_info[ag_barcode['barcode']]['ag_info'] = ag_barcode
                    lab_barcode_info = db.get_barcode_details(
                        ag_barcode['barcode'])
                    plate = db.get_plate_for_barcode(
                        ag_barcode['barcode'])
                    barcode_info[ag_barcode['barcode']]['barcode_info'] = \
                        lab_barcode_info
                    barcode_info[ag_barcode['barcode']]['plate'] = plate
                kit['barcode_info'] = barcode_info
            display_results.append(login_display)

        # now render the page
        self.render("ag_search.html", results=display_results,
                    handouts=handouts, currentuser=self.current_user)
    def test_post(self):
        self.mock_login_admin()

        name = u'TESTDUDE'
        address = u'123 fake test street'
        city = u'testcity'
        state = u'\xc3\x8ele-de-France'
        zipcode = u'1L2 2G3'
        country = 'United Kingdom'
        ag_login_id = '0023cc03-3332-eec6-e050-8a800c5d3c04'
        email = db.get_login_info(ag_login_id)[0]['email']

        # check a regular update
        response = self.post('/ag_edit_participant/',
                             {'email': email,
                              'name': name,
                              'address': address,
                              'city': city,
                              'state': state,
                              'zipcode': zipcode,
                              'country': country,
                              'ag_login_id': ag_login_id})
        self.assertEqual(response.code, 200)
        self.assertIn('Participant was updated successfully', response.body)

        # pull it back out and verify
        response = self.get('/ag_edit_participant/', {'email': email})
        self.assertEqual(response.code, 200)
        # check that all relevant user information is rendered on HTML side
        login = db.get_login_by_email(email)
        for key, value in login.items():
            if key == 'zip':
                key = 'zipcode'
            elif key == 'ag_login_id':
                continue
            value = value.decode('utf-8')
            self.assertIn('</td><td><input type="text" name="%s" id="%s" '
                          'value="%s"></td></tr>'
                          % (key, key, xhtml_escape(value)),
                          response.body.decode('utf-8'))

        # wrong ag_login_id
        response = self.post('/ag_edit_participant/',
                             {'email': email,
                              'name': name,
                              'address': address,
                              'city': city,
                              'state': state,
                              'zipcode': zipcode,
                              'country': country,
                              'ag_login_id': 'wrongID'})
        self.assertEqual(response.code, 200)
        self.assertIn('Error Updating Particpant Info', response.body)

        # check missing arguments
        response = self.post('/ag_edit_participant/',
                             {'email': email,
                              'name': name,
                              'city': city,
                              'state': state,
                              'zipcode': zipcode,
                              'country': country,
                              'ag_login_id': ag_login_id})
        self.assertEqual(response.code, 400)
        self.assertIn(('MissingArgumentError: HTTP 400: Bad Request '
                       '(Missing argument address)'), response.body)