コード例 #1
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testGetAnswerChoicesForChoiceId(self):
     survey_id = connection.execute(survey_table.select().where(
         survey_table.c.survey_title == 'test_title')).first().survey_id
     q_where = question_table.select().where(
         question_table.c.type_constraint_name == 'multiple_choice')
     question = connection.execute(q_where).first()
     question_id = question.question_id
     tcn = question.type_constraint_name
     seq = question.sequence_number
     mul = question.allow_multiple
     submission_exec = connection.execute(
         submission_insert(submitter='test_submitter',
                           submitter_email='*****@*****.**',
                           survey_id=survey_id))
     submission_id = submission_exec.inserted_primary_key[0]
     choices = get_choices(connection, question_id)
     the_choice = choices.first()
     connection.execute(answer_choice_insert(
         question_choice_id=the_choice.question_choice_id,
         answer_choice_metadata={},
         question_id=question_id,
         submission_id=submission_id,
         survey_id=survey_id, type_constraint_name=tcn, sequence_number=seq,
         allow_multiple=mul))
     gacfci = get_answer_choices_for_choice_id
     actual_choices = gacfci(connection, the_choice.question_choice_id)
     self.assertEqual(actual_choices.rowcount, 1)
コード例 #2
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testAnswerInsertNoMetadata(self):
     survey_id = connection.execute(survey_table.select().where(
         survey_table.c.survey_title == 'test_title')).first().survey_id
     q_where = question_table.select().where(
         question_table.c.type_constraint_name == 'integer')
     question = connection.execute(q_where).first()
     question_id = question.question_id
     tcn = question.type_constraint_name
     seq = question.sequence_number
     mul = question.allow_multiple
     submission_exec = connection.execute(
         submission_insert(submitter='test_submitter',
                           submitter_email='*****@*****.**',
                           survey_id=survey_id))
     submission_id = submission_exec.inserted_primary_key[0]
     answer_exec = connection.execute(answer_insert(
         answer=1, question_id=question_id,
         answer_metadata=None,
         submission_id=submission_id,
         survey_id=survey_id,
         type_constraint_name=tcn,
         is_type_exception=False,
         sequence_number=seq,
         allow_multiple=mul))
     answer_id = answer_exec.inserted_primary_key[0]
     self.assertIsNotNone(answer_id)
コード例 #3
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testQuestionBranchInsert(self):
     survey_id = connection.execute(survey_table.select().where(
         survey_table.c.survey_title == 'test_title')).first().survey_id
     to_question = get_questions_no_credentials(
         connection, survey_id).fetchall()[-1]
     q_where = question_table.select().where(
         cast(cast(question_table.c.logic['allow_other'], Text),
              Boolean))
     from_question = connection.execute(q_where).fetchall()[0]
     choice = get_choices(
         connection, from_question.question_id).fetchall()[0]
     from_tcn = from_question.type_constraint_name
     branch_dict = {'question_choice_id': choice.question_choice_id,
                    'from_question_id': from_question.question_id,
                    'from_type_constraint': from_tcn,
                    'from_sequence_number':
                        from_question.sequence_number,
                    'from_allow_multiple':
                        from_question.allow_multiple,
                    'from_survey_id': survey_id,
                    'to_question_id': to_question.question_id,
                    'to_type_constraint':
                        to_question.type_constraint_name,
                    'to_sequence_number':
                        to_question.sequence_number,
                    'to_allow_multiple': to_question.allow_multiple,
                    'to_survey_id': survey_id}
     branch_exec = connection.execute(question_branch_insert(**branch_dict))
     inserted_id = branch_exec.inserted_primary_key[0]
     the_branch = connection.execute(question_branch_table.select().where(
         question_branch_table.c.question_branch_id ==
         inserted_id)).first()
     self.assertEqual(the_branch.to_question_id,
                      to_question.question_id)
コード例 #4
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testAnswerChoiceInsertNoMetadata(self):
     survey_id = connection.execute(survey_table.select().where(
         survey_table.c.survey_title == 'test_title')).first().survey_id
     q_where = question_table.select().where(
         question_table.c.type_constraint_name == 'multiple_choice')
     question = connection.execute(q_where).first()
     question_id = question.question_id
     tcn = question.type_constraint_name
     seq = question.sequence_number
     mul = question.allow_multiple
     submission_exec = connection.execute(submission_insert(
         submitter='test_submitter', submitter_email='*****@*****.**',
         survey_id=survey_id))
     submission_id = submission_exec.inserted_primary_key[0]
     choices = get_choices(connection, question_id)
     the_choice = choices.first()
     exec_stmt = connection.execute(answer_choice_insert(
         question_choice_id=the_choice.question_choice_id,
         answer_choice_metadata=None,
         question_id=question_id,
         submission_id=submission_id,
         survey_id=survey_id, type_constraint_name=tcn, sequence_number=seq,
         allow_multiple=mul))
     answer_id = exec_stmt.inserted_primary_key[0]
     self.assertIsNotNone(answer_id)
コード例 #5
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testGetAnswersForQuestion(self):
     survey_id = connection.execute(survey_table.select().where(
         survey_table.c.survey_title == 'test_title')).first().survey_id
     q_where = question_table.select().where(
         question_table.c.type_constraint_name == 'integer')
     question = connection.execute(q_where).first()
     question_id = question.question_id
     tcn = question.type_constraint_name
     seq = question.sequence_number
     mul = question.allow_multiple
     submission_exec = connection.execute(
         submission_insert(submitter='test_submitter',
                           submitter_email='*****@*****.**',
                           survey_id=survey_id))
     submission_id = submission_exec.inserted_primary_key[0]
     connection.execute(answer_insert(answer=1, question_id=question_id,
                                      answer_metadata={},
                                      submission_id=submission_id,
                                      survey_id=survey_id,
                                      type_constraint_name=tcn,
                                      is_type_exception=False,
                                      sequence_number=seq,
                                      allow_multiple=mul))
     self.assertEqual(
         get_answers_for_question(connection, question_id).rowcount, 1)
コード例 #6
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testInsertFacility(self):
     survey_id = connection.execute(survey_table.select().where(
         survey_table.c.survey_title == 'test_title')).first().survey_id
     q_where = question_table.select().where(
         question_table.c.type_constraint_name == 'facility')
     question = connection.execute(q_where).first()
     question_id = question.question_id
     tcn = question.type_constraint_name
     seq = question.sequence_number
     mul = question.allow_multiple
     submission_exec = connection.execute(
         submission_insert(submitter='test_submitter',
                           submitter_email='*****@*****.**',
                           survey_id=survey_id))
     submission_id = submission_exec.inserted_primary_key[0]
     answer_exec = connection.execute(answer_insert(
         answer={'id': 'revisit ID', 'lon': 90, 'lat': 0},
         answer_metadata={'facility_name': 'cool facility',
                          'facility_sector': 'health'},
         question_id=question_id,
         submission_id=submission_id,
         survey_id=survey_id,
         type_constraint_name=tcn,
         is_type_exception=False,
         sequence_number=seq,
         allow_multiple=mul))
     answer_id = answer_exec.inserted_primary_key[0]
     self.assertIsNotNone(answer_id)
     condition = answer_table.c.answer_id == answer_id
     answer = connection.execute(
         answer_table.select().where(condition)).first()
     location = get_geo_json(connection, answer)['coordinates']
     self.assertEqual(location, [90, 0])
     facility_id = answer.answer_text
     self.assertEqual(facility_id, 'revisit ID')
コード例 #7
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
    def testQuestionChoiceSelect(self):
        q_where = question_table.select().where(
            question_table.c.type_constraint_name == 'multiple_choice')
        question_id = connection.execute(q_where).first().question_id
        choice_id = get_choices(connection,
                                question_id).first().question_choice_id
        choice = question_choice_select(connection, choice_id)
        self.assertIsNotNone(choice)

        self.assertRaises(QuestionChoiceDoesNotExistError,
                          question_choice_select, connection,
                          str(uuid.uuid4()))
コード例 #8
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
    def testInsertLocation(self):
        survey_id = connection.execute(survey_table.select().where(
            survey_table.c.survey_title == 'test_title')).first().survey_id
        q_where = question_table.select().where(
            question_table.c.type_constraint_name == 'location')
        question = connection.execute(q_where).first()
        question_id = question.question_id
        tcn = question.type_constraint_name
        seq = question.sequence_number
        mul = question.allow_multiple
        submission_exec = connection.execute(submission_insert(
            submitter='test_submitter', submitter_email='*****@*****.**',
            survey_id=survey_id))
        submission_id = submission_exec.inserted_primary_key[0]
        answer_exec = connection.execute(answer_insert(
            answer={'lon': 90, 'lat': 0},
            answer_metadata={},
            question_id=question_id,
            submission_id=submission_id,
            survey_id=survey_id,
            type_constraint_name=tcn,
            is_type_exception=False,
            sequence_number=seq,
            allow_multiple=mul))
        answer_id = answer_exec.inserted_primary_key[0]
        self.assertIsNotNone(answer_id)
        condition = answer_table.c.answer_id == answer_id
        answer = connection.execute(
            answer_table.select().where(condition)).first()
        location = get_geo_json(connection, answer)['coordinates']
        self.assertEqual(location, [90, 0])

        submission_2_exec = connection.execute(
            submission_insert(submitter='test_submitter',
                              submitter_email='*****@*****.**',
                              survey_id=survey_id))
        submission_2_id = submission_2_exec.inserted_primary_key[0]
        answer_2_exec = connection.execute(answer_insert(
            answer=None, question_id=question_id,
            answer_metadata={},
            submission_id=submission_2_id,
            survey_id=survey_id,
            type_constraint_name=tcn,
            is_type_exception=False,
            sequence_number=seq,
            allow_multiple=mul))
        answer_2_id = answer_2_exec.inserted_primary_key[0]
        condition_2 = answer_table.c.answer_id == answer_2_id
        answer_2 = connection.execute(
            answer_table.select().where(condition_2)).first()
        location_2 = get_geo_json(connection, answer_2)
        self.assertEqual(location_2,
                         {'coordinates': [], 'type': 'MultiPoint'})
コード例 #9
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testGetSubmissionsWithFilter(self):
     survey_id = connection.execute(survey_table.select().where(
         survey_table.c.survey_title == 'test_title')).first().survey_id
     q_where = question_table.select().where(
         question_table.c.type_constraint_name == 'integer')
     question = connection.execute(q_where).first()
     question_id = question.question_id
     tcn = question.type_constraint_name
     seq = question.sequence_number
     mul = question.allow_multiple
     for i in range(2):
         submission_exec = connection.execute(submission_insert(
             submitter='test_submitter',
             submitter_email='*****@*****.**',
             survey_id=survey_id))
         submission_id = submission_exec.inserted_primary_key[0]
         connection.execute(answer_insert(
             answer=i,
             question_id=question_id,
             submission_id=submission_id,
             answer_metadata={},
             survey_id=survey_id,
             type_constraint_name=tcn,
             is_type_exception=False,
             sequence_number=seq,
             allow_multiple=mul))
     self.assertEqual(
         len(get_submissions_by_email(
             connection,
             'test_email',
             survey_id=survey_id
         ).fetchall()),
         2)
     f_result = get_submissions_by_email(
         connection,
         'test_email',
         survey_id=survey_id,
         filters=[
             {
                 'question_id': question_id,
                 'answer_integer': 1
             }
         ]
     ).fetchall()
     self.assertEqual(len(f_result), 1)
コード例 #10
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testQuestionInsert(self):
     survey_id = connection.execute(survey_table.select().where(
         survey_table.c.survey_title == 'test_title')).first().survey_id
     sequence_number = get_free_sequence_number(connection,
                                                survey_id)
     stmt = question_insert(hint=None, allow_multiple=None,
                            logic={
                                'required': False,
                                'allow_other': False,
                                'allow_dont_know': False
                            },
                            sequence_number=sequence_number,
                            question_title='test insert',
                            type_constraint_name='text',
                            question_to_sequence_number=sequence_number + 1,
                            survey_id=survey_id)
     question_id = connection.execute(stmt).inserted_primary_key[0]
     condition = question_table.c.question_title == 'test insert'
     self.assertEqual(connection.execute(question_table.select().where(
         condition)).first().question_id, question_id)
コード例 #11
0
ファイル: db_test.py プロジェクト: juniorsilver/dokomoforms
 def testGetChoices(self):
     q_where = question_table.select().where(
         question_table.c.type_constraint_name == 'multiple_choice')
     question_id = connection.execute(q_where).first().question_id
     choices = get_choices(connection, question_id)
     self.assertGreater(choices.rowcount, 0)