コード例 #1
0
    def test_should_repeat_questions_in_general_for_all_members(self):
        AGE = '24'
        general_group = HouseholdMemberGroup.objects.create(name="GENERAL", order=2)

        general_condition = GroupCondition.objects.create(attribute="GENERAL", value="HEAD", condition='EQUALS')
        general_group.conditions.add(general_condition)

        general_question_1 = Question.objects.create(group=general_group, text="General Question 1",
                                                     answer_type=Question.NUMBER,
                                                     order=4, identifier='Q31')
        general_question_2 = Question.objects.create(group=general_group, text="General Question 2",
                                                     answer_type=Question.NUMBER,
                                                     order=5, identifier='Q41')

        general_question_1.batches.add(self.batch)
        general_question_2.batches.add(self.batch)

        BatchQuestionOrder.objects.create(question=general_question_1, batch=self.batch, order=4)
        BatchQuestionOrder.objects.create(question=general_question_2, batch=self.batch, order=5)

        household_head_1 = self.create_household_head(0, self.investigator, self.batch.survey)
        household_head_2 = self.create_household_head(1, self.investigator, self.batch.survey)

        member_1 = HouseholdMember.objects.create(surname="Member 1", date_of_birth=date(1999, 2, 9),
                                                  household=household_head_1.household)
        member_2 = HouseholdMember.objects.create(surname="Member 2", date_of_birth=date(1999, 2, 9),
                                                  household=household_head_2.household)

        self.investigator.member_answered(self.question_1, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_2, 2, self.batch)

        self.investigator.member_answered(general_question_1, household_head_1, 4, self.batch)
        self.investigator.member_answered(general_question_1, household_head_2, 1, self.batch)

        self.investigator.member_answered(general_question_2, household_head_1, 4, self.batch)
        self.investigator.member_answered(general_question_2, household_head_2, 3, self.batch)

        self.investigator.member_answered(self.question_2, household_head_1, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_2, self.yes_option.order, self.batch)

        self.investigator.member_answered(self.question_3, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_2, 2, self.batch)

        result_down_load_service = ResultsDownloadService(batch=self.batch)
        age = '24'
        age_14 = '15'
        expected_csv_data = [
            ['Kampala', household_head_1.household.household_code, household_head_1.surname, age, '2', '1990',
             'Male' if household_head_1.male else 'Female', 1, self.no_option.order, self.no_option.text, 1, 4, 4],
            ['Kampala', household_head_2.household.household_code, member_1.surname, age_14, '2', '1999',
             'Male' if member_1.male else 'Female', '', '', '', 4, 4],
            ['Kampala', household_head_2.household.household_code, household_head_2.surname, age, '2', '1990',
             'Male' if household_head_2.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2, 1, 3],
            ['Kampala', household_head_2.household.household_code, member_2.surname, age_14, '2', '1999',
             'Male' if member_2.male else 'Female', '', '', '', 1, 3]]

        actual_csv_data = result_down_load_service.get_summarised_answers()
        self.assertEqual(4, len(actual_csv_data))
        for i in range(4):
            self.assertIn(expected_csv_data[i], actual_csv_data)
コード例 #2
0
    def test_should_repeat_questions_in_general_for_all_members(self):
        AGE = '24'
        general_group = HouseholdMemberGroup.objects.create(name="GENERAL", order=2)

        general_condition = GroupCondition.objects.create(attribute="GENERAL", value="HEAD", condition='EQUALS')
        general_group.conditions.add(general_condition)

        general_question_1 = Question.objects.create(group=general_group, text="General Question 1",
                                                     answer_type=Question.NUMBER,
                                                     order=4, identifier='Q31')
        general_question_2 = Question.objects.create(group=general_group, text="General Question 2",
                                                     answer_type=Question.NUMBER,
                                                     order=5, identifier='Q41')

        general_question_1.batches.add(self.batch)
        general_question_2.batches.add(self.batch)

        BatchQuestionOrder.objects.create(question=general_question_1, batch=self.batch, order=4)
        BatchQuestionOrder.objects.create(question=general_question_2, batch=self.batch, order=5)

        household_head_1 = self.create_household_head(0, self.investigator, self.batch.survey)
        household_head_2 = self.create_household_head(1, self.investigator, self.batch.survey)

        member_1 = HouseholdMember.objects.create(surname="Member 1", date_of_birth=date(1999, 2, 9),
                                                  household=household_head_1.household)
        member_2 = HouseholdMember.objects.create(surname="Member 2", date_of_birth=date(1999, 2, 9),
                                                  household=household_head_2.household)

        self.investigator.member_answered(self.question_1, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_2, 2, self.batch)

        self.investigator.member_answered(general_question_1, household_head_1, 4, self.batch)
        self.investigator.member_answered(general_question_1, household_head_2, 1, self.batch)

        self.investigator.member_answered(general_question_2, household_head_1, 4, self.batch)
        self.investigator.member_answered(general_question_2, household_head_2, 3, self.batch)

        self.investigator.member_answered(self.question_2, household_head_1, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_2, self.yes_option.order, self.batch)

        self.investigator.member_answered(self.question_3, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_2, 2, self.batch)

        result_down_load_service = ResultsDownloadService(batch=self.batch)
        age = '24'
        age_14 = '15'
        expected_csv_data = [
            ['Kampala', household_head_1.household.household_code, household_head_1.surname, age, '2', '1990',
             'Male' if household_head_1.male else 'Female', 1, self.no_option.order, self.no_option.text, 1, 4, 4],
            ['Kampala', household_head_2.household.household_code, member_1.surname, age_14, '2', '1999',
             'Male' if member_1.male else 'Female', '', '', '', 4, 4],
            ['Kampala', household_head_2.household.household_code, household_head_2.surname, age, '2', '1990',
             'Male' if household_head_2.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2, 1, 3],
            ['Kampala', household_head_2.household.household_code, member_2.surname, age_14, '2', '1999',
             'Male' if member_2.male else 'Female', '', '', '', 1, 3]]

        actual_csv_data = result_down_load_service.get_summarised_answers()
        self.assertEqual(4, len(actual_csv_data))
        for i in range(4):
            self.assertIn(expected_csv_data[i], actual_csv_data)
コード例 #3
0
    def test_gets_summarised_response_for_all_batches_under_survey(self):
        household_listing = HouseholdListing.objects.create(ea=self.ea,list_registrar=self.investigator,initial_survey=self.survey)
        survey_householdlisting = SurveyHouseholdListing.objects.create(listing=household_listing,survey=self.survey)
        HouseholdMemberGroup.objects.create(name="GENERAL", order=2)
        household_head_1 = create_household_head(0, self.investigator,household_listing,survey_householdlisting)
        household_head_2 = create_household_head(1, self.investigator,household_listing,survey_householdlisting)
        household_head_3 = create_household_head(2, self.investigator,household_listing,survey_householdlisting)
        household_head_4 = create_household_head(3, self.investigator,household_listing,survey_householdlisting)
        household_head_5 = create_household_head(4, self.investigator,household_listing,survey_householdlisting)

        batchB = Batch.objects.create(order=2, name="different batch", survey=self.survey)
        module = QuestionModule.objects.create(name="Education in a different batch")
        question_1B = Question.objects.create(identifier='1.21',text="This is a question21", answer_type='Numerical Answer',
                                           group=self.group,batch=self.batch,module=module)
        question_2B = Question.objects.create(identifier='1.22',text="This is a question22", answer_type='Numerical Answer',
                                           group=self.group,batch=self.batch,module=module)
        question_3B = Question.objects.create(identifier='1.23',text="This is a question23", answer_type='Numerical Answer',
                                           group=self.group,batch=self.batch,module=module)

        yes_option = QuestionOption.objects.create(question=question_2B, text="Yes", order=1)
        no_option = QuestionOption.objects.create(question=question_2B, text="No", order=2)

        result_down_load_service = ResultsDownloadService(survey=self.survey)

        header_structure = [unicode(self.district.name), unicode(self.county.name), unicode(self.subcounty.name), unicode(self.parish.name),
                            unicode(self.village.name), unicode(self.ea.name),
                            'Household Number', 'Family Name', 'First Name','Age', 'Date of Birth', 'Gender']

        headers = result_down_load_service.set_report_headers()
        self.assertEqual(header_structure, headers)

        AGE = '28'
        household1=household_head_1.surname+'-'+household_head_1.first_name
        household2=household_head_2.surname+'-'+household_head_2.first_name
        household3=household_head_3.surname+'-'+household_head_3.first_name
        household4=household_head_4.surname+'-'+household_head_4.first_name
        household5=household_head_5.surname+'-'+household_head_5.first_name
        expected_csv_data = [

            [u'Kampala', unicode(self.ea.name),household_head_2.household.house_number, unicode(household2), AGE, '01-01-1988',
             'Male' if household_head_2.household.head_sex else 'Female'],
            [u'Kampala', unicode(self.ea.name),household_head_3.household.house_number, unicode(household3), AGE, '01-01-1988',
             'Male' if household_head_3.household.head_sex else 'Female'],
            [u'Kampala', unicode(self.ea.name),household_head_4.household.house_number, unicode(household4),AGE, '01-01-1988',
             'Male' if household_head_4.household.head_sex else 'Female'],
            [u'Kampala', unicode(self.ea.name),household_head_5.household.house_number, unicode(household5),AGE, '01-01-1988',
             'Male' if household_head_5.household.head_sex else 'Female']]

        actual_csv_data = result_down_load_service.get_summarised_answers()
        self.assertEqual(5, len(actual_csv_data))
        for i in range(4):
            self.assertIn(expected_csv_data[i], actual_csv_data)
コード例 #4
0
    def test_gets_summarised_response_for_a_given_batch(self):
        HouseholdMemberGroup.objects.create(name="GENERAL", order=2)
        household_head_1 = self.create_household_head(0, self.investigator, self.batch.survey)
        household_head_2 = self.create_household_head(1, self.investigator, self.batch.survey)
        household_head_3 = self.create_household_head(2, self.investigator, self.batch.survey)
        household_head_4 = self.create_household_head(3, self.investigator, self.batch.survey)
        household_head_5 = self.create_household_head(4, self.investigator, self.batch.survey)

        self.investigator.member_answered(self.question_1, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_2, 2, self.batch)
        self.investigator.member_answered(self.question_1, household_head_3, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_4, 2, self.batch)
        self.investigator.member_answered(self.question_1, household_head_5, 3, self.batch)

        self.investigator.member_answered(self.question_2, household_head_1, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_2, self.yes_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_3, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_4, self.yes_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_5, self.yes_option.order, self.batch)

        self.investigator.member_answered(self.question_3, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_2, 2, self.batch)
        self.investigator.member_answered(self.question_3, household_head_3, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_4, 2, self.batch)
        self.investigator.member_answered(self.question_3, household_head_5, 3, self.batch)

        result_down_load_service = ResultsDownloadService(batch=self.batch)
        AGE = '24'
        expected_csv_data = [
            ['Kampala', household_head_1.household.household_code, household_head_1.surname, AGE, '2', '1990',
             'Male' if household_head_1.male else 'Female', 1, self.no_option.order, self.no_option.text, 1],
            ['Kampala', household_head_2.household.household_code, household_head_2.surname, AGE, '2', '1990',
             'Male' if household_head_2.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2],
            ['Kampala', household_head_3.household.household_code, household_head_3.surname, AGE, '2', '1990',
             'Male' if household_head_3.male else 'Female', 1, self.no_option.order, self.no_option.text, 1],
            ['Kampala', household_head_4.household.household_code, household_head_4.surname, AGE, '2', '1990',
             'Male' if household_head_4.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2],
            ['Kampala', household_head_5.household.household_code, household_head_5.surname, AGE, '2', '1990',
             'Male' if household_head_5.male else 'Female', 3, self.yes_option.order, self.yes_option.text, 3]]

        actual_csv_data = result_down_load_service.get_summarised_answers()
        self.assertEqual(5, len(actual_csv_data))
        for i in range(5):
            self.assertIn(expected_csv_data[i], actual_csv_data)
コード例 #5
0
    def test_gets_summarised_response_for_a_given_batch(self):
        HouseholdMemberGroup.objects.create(name="GENERAL", order=2)
        household_head_1 = self.create_household_head(0, self.investigator, self.batch.survey)
        household_head_2 = self.create_household_head(1, self.investigator, self.batch.survey)
        household_head_3 = self.create_household_head(2, self.investigator, self.batch.survey)
        household_head_4 = self.create_household_head(3, self.investigator, self.batch.survey)
        household_head_5 = self.create_household_head(4, self.investigator, self.batch.survey)

        self.investigator.member_answered(self.question_1, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_2, 2, self.batch)
        self.investigator.member_answered(self.question_1, household_head_3, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_4, 2, self.batch)
        self.investigator.member_answered(self.question_1, household_head_5, 3, self.batch)

        self.investigator.member_answered(self.question_2, household_head_1, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_2, self.yes_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_3, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_4, self.yes_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_5, self.yes_option.order, self.batch)

        self.investigator.member_answered(self.question_3, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_2, 2, self.batch)
        self.investigator.member_answered(self.question_3, household_head_3, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_4, 2, self.batch)
        self.investigator.member_answered(self.question_3, household_head_5, 3, self.batch)

        result_down_load_service = ResultsDownloadService(batch=self.batch)
        AGE = '24'
        expected_csv_data = [
            ['Kampala', household_head_1.household.household_code, household_head_1.surname, AGE, '2', '1990',
             'Male' if household_head_1.male else 'Female', 1, self.no_option.order, self.no_option.text, 1],
            ['Kampala', household_head_2.household.household_code, household_head_2.surname, AGE, '2', '1990',
             'Male' if household_head_2.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2],
            ['Kampala', household_head_3.household.household_code, household_head_3.surname, AGE, '2', '1990',
             'Male' if household_head_3.male else 'Female', 1, self.no_option.order, self.no_option.text, 1],
            ['Kampala', household_head_4.household.household_code, household_head_4.surname, AGE, '2', '1990',
             'Male' if household_head_4.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2],
            ['Kampala', household_head_5.household.household_code, household_head_5.surname, AGE, '2', '1990',
             'Male' if household_head_5.male else 'Female', 3, self.yes_option.order, self.yes_option.text, 3]]

        actual_csv_data = result_down_load_service.get_summarised_answers()
        self.assertEqual(5, len(actual_csv_data))
        for i in range(5):
            self.assertIn(expected_csv_data[i], actual_csv_data)
コード例 #6
0
    def test_should_repeat_questions_in_general_for_all_members(self):
        household_listing1 = HouseholdListing.objects.create(ea=self.ea,list_registrar=self.investigator,initial_survey=self.survey)
        survey_householdlisting1 = SurveyHouseholdListing.objects.create(listing=household_listing1,survey=self.survey)
        AGE = '24'
        general_group = HouseholdMemberGroup.objects.create(name="GENERAL", order=2)

        general_condition = GroupCondition.objects.create(attribute="GENERAL", value="HEAD", condition='EQUALS')
        general_group.conditions.add(general_condition)
        module1 = QuestionModule.objects.create(name="Education123")
        general_question_1 = Question.objects.create(identifier='1.111',text="This is a question111", answer_type='Numerical Answer',
                                           group=self.group,batch=self.batch,module=module1)
        general_question_2 = Question.objects.create(identifier='1.112',text="This is a question112", answer_type='Numerical Answer',
                                           group=self.group,batch=self.batch,module=module1)
        ea = EnumerationArea.objects.create(name="EA")
        ea.locations.add(self.kampala)
        household_head_1 = create_household_head(0, self.investigator,household_listing1,survey_householdlisting1)
        household_head_2 = create_household_head(1, self.investigator,household_listing1,survey_householdlisting1)
        household_listing = HouseholdListing.objects.create(ea=ea,list_registrar=self.investigator,initial_survey=self.survey)
        household = Household.objects.create(house_number=123456,listing=household_listing,physical_address='Test address',
                                             last_registrar=self.investigator,registration_channel="ODK Access",head_desc="Head",head_sex='MALE')
        survey_householdlisting = SurveyHouseholdListing.objects.create(listing=household_listing,survey=self.survey)
        member_1 = HouseholdMember.objects.create(surname="sur", first_name='fir', gender='MALE', date_of_birth="1988-01-01",
                                                          household=household_head_1.household,survey_listing=survey_householdlisting,
                                                          registrar=self.investigator,registration_channel="ODK Access")
        member_2 = HouseholdMember.objects.create(surname="sur", first_name='fir', gender='MALE', date_of_birth="1988-01-01",
                                                          household=household_head_2.household,survey_listing=survey_householdlisting,
                                                          registrar=self.investigator,registration_channel="ODK Access")
        result_down_load_service = ResultsDownloadService(batch=self.batch)
        age = '28'
        age_14 = '15'
        household1=household_head_1.surname+'-'+household_head_1.first_name
        member1=member_1.surname+'-'+member_1.first_name
        household2=household_head_2.surname+'-'+household_head_2.first_name
        expected_csv_data = [
            [u'Kampala',unicode(ea.name), household_head_1.household.house_number, household1, age,  '01-01-1988',
             'Male' if household_head_1.household.head_sex else 'Female'],
            [u'Kampala' ,unicode(ea.name), household_head_2.household.house_number, household2, age, '01-01-1988',
             'Male' if household_head_2.household.head_sex else 'Female']]

        actual_csv_data = result_down_load_service.get_summarised_answers()
        self.assertEqual(4, len(actual_csv_data))
        for i in range(2):
            self.assertIn(expected_csv_data[i], actual_csv_data)
コード例 #7
0
 def test_gets_summarised_response_for_a_given_batch(self):
     household_listing = HouseholdListing.objects.create(ea=self.ea,list_registrar=self.investigator,initial_survey=self.survey)
     survey_householdlisting = SurveyHouseholdListing.objects.create(listing=household_listing,survey=self.survey)
     HouseholdMemberGroup.objects.create(name="GENERAL", order=2)
     household_head_1 = create_household_head(0, self.investigator,household_listing,survey_householdlisting)
     household_head_2 = create_household_head(1, self.investigator,household_listing,survey_householdlisting)
     household_head_3 = create_household_head(2, self.investigator,household_listing,survey_householdlisting)
     household_head_4 = create_household_head(3, self.investigator,household_listing,survey_householdlisting)
     household_head_5 = create_household_head(4, self.investigator,household_listing,survey_householdlisting)
     result_down_load_service = ResultsDownloadService(batch=self.batch)
     AGE = '28'
     household1=household_head_1.surname+'-'+household_head_1.first_name
     household2=household_head_2.surname+'-'+household_head_2.first_name
     household3=household_head_3.surname+'-'+household_head_3.first_name
     household4=household_head_4.surname+'-'+household_head_4.first_name
     household5=household_head_5.surname+'-'+household_head_5.first_name
     expected_csv_data = [
         [u'Kampala', unicode(self.ea.name), household_head_1.household.house_number,unicode(household1),AGE, '01-01-1988',
          'Male' if household_head_1.household.head_sex else 'Female'],
         [u'Kampala', unicode(self.ea.name),household_head_2.household.house_number, unicode(household2), AGE, '01-01-1988',
          'Male' if household_head_2.household.head_sex else 'Female'],
         [u'Kampala', unicode(self.ea.name),household_head_3.household.house_number, unicode(household3), AGE, '01-01-1988',
          'Male' if household_head_3.household.head_sex else 'Female'],
         [u'Kampala', unicode(self.ea.name),household_head_4.household.house_number, unicode(household4),AGE, '01-01-1988',
          'Male' if household_head_4.household.head_sex else 'Female'],
         [u'Kampala', unicode(self.ea.name),household_head_5.household.house_number, unicode(household5),AGE, '01-01-1988',
          'Male' if household_head_5.household.head_sex else 'Female']]
     batch = Batch.objects.create(name="Batch name", description='description')
     group_1 = HouseholdMemberGroup.objects.create(name="Group 11", order=10)
     group_2 = HouseholdMemberGroup.objects.create(name="Group 12", order=11)
     group_3 = HouseholdMemberGroup.objects.create(name="Group 13", order=12)
     household_member_group = HouseholdMemberGroup.objects.create(name="Greater than 65 years", order=19)
     question_mod = QuestionModule.objects.create(name="Test question name",description="test desc")
     question_1 = Question.objects.create(identifier='1.1',text="This is a question1", answer_type='Numerical Answer',
                                         group=group_3,batch=batch,module=question_mod)
     actual_csv_data = result_down_load_service.get_summarised_answers()
     self.assertEqual(5, len(actual_csv_data))
     for i in range(5):
         self.assertIn(expected_csv_data[i], actual_csv_data)
コード例 #8
0
    def test_gets_summarised_response_for_all_batches_under_survey(self):
        HouseholdMemberGroup.objects.create(name="GENERAL", order=2)
        household_head_1 = self.create_household_head(0, self.investigator, self.batch.survey)
        household_head_2 = self.create_household_head(1, self.investigator, self.batch.survey)
        household_head_3 = self.create_household_head(2, self.investigator, self.batch.survey)
        household_head_4 = self.create_household_head(3, self.investigator, self.batch.survey)
        household_head_5 = self.create_household_head(4, self.investigator, self.batch.survey)

        self.investigator.member_answered(self.question_1, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_2, 2, self.batch)
        self.investigator.member_answered(self.question_1, household_head_3, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_4, 2, self.batch)
        self.investigator.member_answered(self.question_1, household_head_5, 3, self.batch)

        self.investigator.member_answered(self.question_2, household_head_1, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_2, self.yes_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_3, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_4, self.yes_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_5, self.yes_option.order, self.batch)

        self.investigator.member_answered(self.question_3, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_2, 2, self.batch)
        self.investigator.member_answered(self.question_3, household_head_3, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_4, 2, self.batch)
        self.investigator.member_answered(self.question_3, household_head_5, 3, self.batch)

        batchB = Batch.objects.create(order=2, name="different batch", survey=self.survey)
        module = QuestionModule.objects.create(name="Education in a different batch")
        question_1B = Question.objects.create(group=self.group, text="Question 1 B", module=module,
                                                  answer_type=Question.NUMBER,
                                                  order=1, identifier='Q1B')
        question_2B = Question.objects.create(group=self.group, text="Question 2B", module=module,
                                                  answer_type=Question.MULTICHOICE,
                                                  order=2, identifier='Q2B')
        question_3B = Question.objects.create(group=self.group, text="Question 3B", module=module,
                                                  answer_type=Question.NUMBER,
                                                  order=3, identifier='Q3B')

        yes_option = QuestionOption.objects.create(question=question_2B, text="Yes", order=1)
        no_option = QuestionOption.objects.create(question=question_2B, text="No", order=2)

        question_1B.batches.add(batchB)
        question_2B.batches.add(batchB)
        question_3B.batches.add(batchB)

        BatchQuestionOrder.objects.create(question=question_1B, batch=batchB, order=1)
        BatchQuestionOrder.objects.create(question=question_2B, batch=batchB, order=2)
        BatchQuestionOrder.objects.create(question=question_3B, batch=batchB, order=3)

        self.investigator.member_answered(question_1B, household_head_1, 1, batchB)
        self.investigator.member_answered(question_1B, household_head_2, 2, batchB)
        self.investigator.member_answered(question_1B, household_head_3, 1, batchB)
        self.investigator.member_answered(question_1B, household_head_4, 2, batchB)
        self.investigator.member_answered(question_1B, household_head_5, 3, batchB)

        self.investigator.member_answered(question_2B, household_head_1, no_option.order, batchB)
        self.investigator.member_answered(question_2B, household_head_2, yes_option.order, batchB)
        self.investigator.member_answered(question_2B, household_head_3, no_option.order, batchB)
        self.investigator.member_answered(question_2B, household_head_4, yes_option.order, batchB)
        self.investigator.member_answered(question_2B, household_head_5, yes_option.order, batchB)

        self.investigator.member_answered(question_3B, household_head_1, 1, batchB)
        self.investigator.member_answered(question_3B, household_head_2, 2, batchB)
        self.investigator.member_answered(question_3B, household_head_3, 1, batchB)
        self.investigator.member_answered(question_3B, household_head_4, 2, batchB)
        self.investigator.member_answered(question_3B, household_head_5, 3, batchB)

        result_down_load_service = ResultsDownloadService(survey=self.survey)

        header_structure = [self.district.name, self.county.name, self.subcounty.name, self.parish.name,
                            self.village.name,
                            'Household ID', 'Name', 'Age', 'Month of Birth', 'Year of Birth', 'Gender',
                            self.question_1.identifier, self.question_2.identifier, '', self.question_3.identifier,
                            question_1B.identifier, question_2B.identifier, '', question_3B.identifier]

        headers = result_down_load_service.set_report_headers()
        self.assertEqual(header_structure, headers)

        age = '24'
        expected_csv_data = [
            ['Kampala', household_head_1.household.household_code, household_head_1.surname, age, '2', '1990',
             'Male' if household_head_1.male else 'Female', 1, self.no_option.order, self.no_option.text, 1,
            1, no_option.order, no_option.text, 1],
            ['Kampala', household_head_2.household.household_code, household_head_2.surname, age, '2', '1990',
             'Male' if household_head_2.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2,
             2, yes_option.order, yes_option.text, 2],
            ['Kampala', household_head_3.household.household_code, household_head_3.surname, age, '2', '1990',
             'Male' if household_head_3.male else 'Female', 1, self.no_option.order, self.no_option.text, 1,
             1, no_option.order, no_option.text, 1],
            ['Kampala', household_head_4.household.household_code, household_head_4.surname, age, '2', '1990',
             'Male' if household_head_4.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2,
             2, yes_option.order, yes_option.text, 2],
            ['Kampala', household_head_5.household.household_code, household_head_5.surname, age, '2', '1990',
             'Male' if household_head_5.male else 'Female', 3, self.yes_option.order, self.yes_option.text, 3,
             3, yes_option.order, yes_option.text, 3]]

        actual_csv_data = result_down_load_service.get_summarised_answers()
        self.assertEqual(5, len(actual_csv_data))
        for i in range(5):
            self.assertIn(expected_csv_data[i], actual_csv_data)
コード例 #9
0
    def test_gets_summarised_response_for_all_batches_under_survey(self):
        HouseholdMemberGroup.objects.create(name="GENERAL", order=2)
        household_head_1 = self.create_household_head(0, self.investigator, self.batch.survey)
        household_head_2 = self.create_household_head(1, self.investigator, self.batch.survey)
        household_head_3 = self.create_household_head(2, self.investigator, self.batch.survey)
        household_head_4 = self.create_household_head(3, self.investigator, self.batch.survey)
        household_head_5 = self.create_household_head(4, self.investigator, self.batch.survey)

        self.investigator.member_answered(self.question_1, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_2, 2, self.batch)
        self.investigator.member_answered(self.question_1, household_head_3, 1, self.batch)
        self.investigator.member_answered(self.question_1, household_head_4, 2, self.batch)
        self.investigator.member_answered(self.question_1, household_head_5, 3, self.batch)

        self.investigator.member_answered(self.question_2, household_head_1, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_2, self.yes_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_3, self.no_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_4, self.yes_option.order, self.batch)
        self.investigator.member_answered(self.question_2, household_head_5, self.yes_option.order, self.batch)

        self.investigator.member_answered(self.question_3, household_head_1, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_2, 2, self.batch)
        self.investigator.member_answered(self.question_3, household_head_3, 1, self.batch)
        self.investigator.member_answered(self.question_3, household_head_4, 2, self.batch)
        self.investigator.member_answered(self.question_3, household_head_5, 3, self.batch)

        batchB = Batch.objects.create(order=2, name="different batch", survey=self.survey)
        module = QuestionModule.objects.create(name="Education in a different batch")
        question_1B = Question.objects.create(group=self.group, text="Question 1 B", module=module,
                                                  answer_type=Question.NUMBER,
                                                  order=1, identifier='Q1B')
        question_2B = Question.objects.create(group=self.group, text="Question 2B", module=module,
                                                  answer_type=Question.MULTICHOICE,
                                                  order=2, identifier='Q2B')
        question_3B = Question.objects.create(group=self.group, text="Question 3B", module=module,
                                                  answer_type=Question.NUMBER,
                                                  order=3, identifier='Q3B')

        yes_option = QuestionOption.objects.create(question=question_2B, text="Yes", order=1)
        no_option = QuestionOption.objects.create(question=question_2B, text="No", order=2)

        question_1B.batches.add(batchB)
        question_2B.batches.add(batchB)
        question_3B.batches.add(batchB)

        BatchQuestionOrder.objects.create(question=question_1B, batch=batchB, order=1)
        BatchQuestionOrder.objects.create(question=question_2B, batch=batchB, order=2)
        BatchQuestionOrder.objects.create(question=question_3B, batch=batchB, order=3)

        self.investigator.member_answered(question_1B, household_head_1, 1, batchB)
        self.investigator.member_answered(question_1B, household_head_2, 2, batchB)
        self.investigator.member_answered(question_1B, household_head_3, 1, batchB)
        self.investigator.member_answered(question_1B, household_head_4, 2, batchB)
        self.investigator.member_answered(question_1B, household_head_5, 3, batchB)

        self.investigator.member_answered(question_2B, household_head_1, no_option.order, batchB)
        self.investigator.member_answered(question_2B, household_head_2, yes_option.order, batchB)
        self.investigator.member_answered(question_2B, household_head_3, no_option.order, batchB)
        self.investigator.member_answered(question_2B, household_head_4, yes_option.order, batchB)
        self.investigator.member_answered(question_2B, household_head_5, yes_option.order, batchB)

        self.investigator.member_answered(question_3B, household_head_1, 1, batchB)
        self.investigator.member_answered(question_3B, household_head_2, 2, batchB)
        self.investigator.member_answered(question_3B, household_head_3, 1, batchB)
        self.investigator.member_answered(question_3B, household_head_4, 2, batchB)
        self.investigator.member_answered(question_3B, household_head_5, 3, batchB)

        result_down_load_service = ResultsDownloadService(survey=self.survey)

        header_structure = [self.district.name, self.county.name, self.subcounty.name, self.parish.name,
                            self.village.name,
                            'Household ID', 'Name', 'Age', 'Month of Birth', 'Year of Birth', 'Gender',
                            self.question_1.identifier, self.question_2.identifier, '', self.question_3.identifier,
                            question_1B.identifier, question_2B.identifier, '', question_3B.identifier]

        headers = result_down_load_service.set_report_headers()
        self.assertEqual(header_structure, headers)

        age = '24'
        expected_csv_data = [
            ['Kampala', household_head_1.household.household_code, household_head_1.surname, age, '2', '1990',
             'Male' if household_head_1.male else 'Female', 1, self.no_option.order, self.no_option.text, 1,
            1, no_option.order, no_option.text, 1],
            ['Kampala', household_head_2.household.household_code, household_head_2.surname, age, '2', '1990',
             'Male' if household_head_2.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2,
             2, yes_option.order, yes_option.text, 2],
            ['Kampala', household_head_3.household.household_code, household_head_3.surname, age, '2', '1990',
             'Male' if household_head_3.male else 'Female', 1, self.no_option.order, self.no_option.text, 1,
             1, no_option.order, no_option.text, 1],
            ['Kampala', household_head_4.household.household_code, household_head_4.surname, age, '2', '1990',
             'Male' if household_head_4.male else 'Female', 2, self.yes_option.order, self.yes_option.text, 2,
             2, yes_option.order, yes_option.text, 2],
            ['Kampala', household_head_5.household.household_code, household_head_5.surname, age, '2', '1990',
             'Male' if household_head_5.male else 'Female', 3, self.yes_option.order, self.yes_option.text, 3,
             3, yes_option.order, yes_option.text, 3]]

        actual_csv_data = result_down_load_service.get_summarised_answers()
        self.assertEqual(5, len(actual_csv_data))
        for i in range(5):
            self.assertIn(expected_csv_data[i], actual_csv_data)