Exemplo n.º 1
0
    def test_kwargs_from_temba(self):

        temba_contact = TembaContact.create(uuid='C-006', name="Jan", urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={'registration_date': None, 'state': None,
                                                    'lga': None, 'occupation': None, 'born': None,
                                                    'gender': None},
                                            language='eng')

        kwargs = Contact.kwargs_from_temba(self.nigeria, temba_contact)

        self.assertEqual(kwargs, dict(uuid='C-006', org=self.nigeria, gender='', born=0, occupation='',
                                      registered_on=None, state='', district='', ward=''))

        # try creating contact from them
        Contact.objects.create(**kwargs)

        # Invalid boundaries become ''
        temba_contact = TembaContact.create(uuid='C-007', name="Jan", urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={'registration_date': '2014-01-02T03:04:05.000000Z',
                                                    'state': 'Kigali', 'lga': 'Oyo', 'occupation': 'Student',
                                                    'born': '1990', 'gender': 'Male'},
                                            language='eng')

        kwargs = Contact.kwargs_from_temba(self.nigeria, temba_contact)

        self.assertEqual(kwargs, dict(uuid='C-007', org=self.nigeria, gender='M', born=1990, occupation='Student',
                                      registered_on=json_date_to_datetime('2014-01-02T03:04:05.000'), state='',
                                      district='', ward=''))

        # try creating contact from them
        Contact.objects.create(**kwargs)

        temba_contact = TembaContact.create(uuid='C-008', name="Jan", urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={'registration_date': '2014-01-02T03:04:05.000000Z', 'state':'Lagos',
                                                    'lga': 'Oyo', 'ward': 'Ikeja', 'occupation': 'Student', 'born': '1990',
                                                    'gender': 'Male'},
                                            language='eng')

        kwargs = Contact.kwargs_from_temba(self.nigeria, temba_contact)

        self.assertEqual(kwargs, dict(uuid='C-008', org=self.nigeria, gender='M', born=1990, occupation='Student',
                                      registered_on=json_date_to_datetime('2014-01-02T03:04:05.000'), state='R-LAGOS',
                                      district='R-OYO', ward='R-IKEJA'))

        # try creating contact from them
        Contact.objects.create(**kwargs)
Exemplo n.º 2
0
    def test_contact_ward_field(self):

        temba_contact = TembaContact.create(uuid='C-0011', name="Jan", urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={'registration_date': '2014-01-02T03:04:05.000000Z', 'state':'Lagos',
                                                    'lga': '', 'ward': 'Ikeja', 'occupation': 'Student', 'born': '1990',
                                                    'gender': 'Male'},
                                            language='eng')

        kwargs = Contact.kwargs_from_temba(self.nigeria, temba_contact)
        # invalid parent boundary (district) will yield empty ward
        self.assertEqual(kwargs, dict(uuid='C-0011', org=self.nigeria, gender='M', born=1990, occupation='Student',
                                      registered_on=json_date_to_datetime('2014-01-02T03:04:05.000'), state='R-LAGOS',
                                      district='', ward=''))

        self.assertEqual(ReportersCounter.get_counts(self.nigeria), dict())
        Contact.objects.create(uuid='C-007', org=self.nigeria, gender='M', born=1990, occupation='Student',
                               registered_on=json_date_to_datetime('2014-01-02T03:04:05.000'), state='R-LAGOS',
                               district='R-OYO', ward='R-IKEJA')
        field_count = ReportersCounter.get_counts(self.nigeria)

        self.assertEqual(field_count['ward:R-IKEJA'], 1)

        Contact.objects.create(uuid='C-008', org=self.nigeria, gender='M', born=1980, occupation='Teacher',
                               registered_on=json_date_to_datetime('2014-01-02T03:07:05.000'), state='R-LAGOS',
                               district='R-OYO', ward='R-IKEJA')

        field_count = ReportersCounter.get_counts(self.nigeria)
        self.assertEqual(field_count['ward:R-IKEJA'], 2)
        Contact.objects.all().delete()
Exemplo n.º 3
0
    def test_update_or_create_from_temba(self):
        temba_contact = TembaContact.create(uuid='C-006', name="Jan", urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={'registration_date': None, 'state': None,
                                                    'lga': None, 'occupation': None, 'born': None,
                                                    'gender': None},
                                            language='eng')

        contact = Contact.update_or_create_from_temba(self.nigeria, temba_contact)

        self.assertEqual(contact.uuid, 'C-006')

        updated_contact = Contact.update_or_create_from_temba(self.nigeria, temba_contact)

        self.assertEqual(contact.pk, updated_contact.pk)
Exemplo n.º 4
0
    def test_update_or_create_from_temba(self):
        temba_contact = TembaContact.create(uuid='C-006',
                                            name="Jan",
                                            urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={
                                                'registration_date': None,
                                                'state': None,
                                                'lga': None,
                                                'occupation': None,
                                                'born': None,
                                                'gender': None
                                            },
                                            language='eng')

        contact = Contact.update_or_create_from_temba(self.nigeria,
                                                      temba_contact)

        self.assertEqual(contact.uuid, 'C-006')

        updated_contact = Contact.update_or_create_from_temba(
            self.nigeria, temba_contact)

        self.assertEqual(contact.pk, updated_contact.pk)
Exemplo n.º 5
0
    def test_contact_ward_field(self):

        temba_contact = TembaContact.create(uuid='C-0011',
                                            name="Jan",
                                            urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={
                                                'registration_date':
                                                '2014-01-02T03:04:05.000000Z',
                                                'state': 'Lagos',
                                                'lga': '',
                                                'ward': 'Ikeja',
                                                'occupation': 'Student',
                                                'born': '1990',
                                                'gender': 'Male'
                                            },
                                            language='eng')

        kwargs = Contact.kwargs_from_temba(self.nigeria, temba_contact)
        # invalid parent boundary (district) will yield empty ward
        self.assertEqual(
            kwargs,
            dict(
                uuid='C-0011',
                org=self.nigeria,
                gender='M',
                born=1990,
                occupation='Student',
                registered_on=json_date_to_datetime('2014-01-02T03:04:05.000'),
                state='R-LAGOS',
                district='',
                ward=''))

        self.assertEqual(ReportersCounter.get_counts(self.nigeria), dict())
        Contact.objects.create(
            uuid='C-007',
            org=self.nigeria,
            gender='M',
            born=1990,
            occupation='Student',
            registered_on=json_date_to_datetime('2014-01-02T03:04:05.000'),
            state='R-LAGOS',
            district='R-OYO',
            ward='R-IKEJA')
        field_count = ReportersCounter.get_counts(self.nigeria)

        self.assertEqual(field_count['ward:R-IKEJA'], 1)

        Contact.objects.create(
            uuid='C-008',
            org=self.nigeria,
            gender='M',
            born=1980,
            occupation='Teacher',
            registered_on=json_date_to_datetime('2014-01-02T03:07:05.000'),
            state='R-LAGOS',
            district='R-OYO',
            ward='R-IKEJA')

        field_count = ReportersCounter.get_counts(self.nigeria)
        self.assertEqual(field_count['ward:R-IKEJA'], 2)
        Contact.objects.all().delete()
Exemplo n.º 6
0
    def test_kwargs_from_temba(self):

        temba_contact = TembaContact.create(uuid='C-006',
                                            name="Jan",
                                            urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={
                                                'registration_date': None,
                                                'state': None,
                                                'lga': None,
                                                'occupation': None,
                                                'born': None,
                                                'gender': None
                                            },
                                            language='eng')

        kwargs = Contact.kwargs_from_temba(self.nigeria, temba_contact)

        self.assertEqual(
            kwargs,
            dict(uuid='C-006',
                 org=self.nigeria,
                 gender='',
                 born=0,
                 occupation='',
                 registered_on=None,
                 state='',
                 district='',
                 ward=''))

        # try creating contact from them
        Contact.objects.create(**kwargs)

        # Invalid boundaries become ''
        temba_contact = TembaContact.create(uuid='C-007',
                                            name="Jan",
                                            urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={
                                                'registration_date':
                                                '2014-01-02T03:04:05.000000Z',
                                                'state': 'Kigali',
                                                'lga': 'Oyo',
                                                'occupation': 'Student',
                                                'born': '1990',
                                                'gender': 'Male'
                                            },
                                            language='eng')

        kwargs = Contact.kwargs_from_temba(self.nigeria, temba_contact)

        self.assertEqual(
            kwargs,
            dict(
                uuid='C-007',
                org=self.nigeria,
                gender='M',
                born=1990,
                occupation='Student',
                registered_on=json_date_to_datetime('2014-01-02T03:04:05.000'),
                state='',
                district='',
                ward=''))

        # try creating contact from them
        Contact.objects.create(**kwargs)

        temba_contact = TembaContact.create(uuid='C-008',
                                            name="Jan",
                                            urns=['tel:123'],
                                            groups=['G-001', 'G-007'],
                                            fields={
                                                'registration_date':
                                                '2014-01-02T03:04:05.000000Z',
                                                'state': 'Lagos',
                                                'lga': 'Oyo',
                                                'ward': 'Ikeja',
                                                'occupation': 'Student',
                                                'born': '1990',
                                                'gender': 'Male'
                                            },
                                            language='eng')

        kwargs = Contact.kwargs_from_temba(self.nigeria, temba_contact)

        self.assertEqual(
            kwargs,
            dict(
                uuid='C-008',
                org=self.nigeria,
                gender='M',
                born=1990,
                occupation='Student',
                registered_on=json_date_to_datetime('2014-01-02T03:04:05.000'),
                state='R-LAGOS',
                district='R-OYO',
                ward='R-IKEJA'))

        # try creating contact from them
        Contact.objects.create(**kwargs)
Exemplo n.º 7
0
    def test_fetch_contacts(self):
        self.nigeria.set_config('reporter_group', 'Reporters')

        tz = pytz.timezone('UTC')
        with patch.object(timezone, 'now', return_value=tz.localize(datetime(2015, 9, 29, 10, 20, 30, 40))):

            with patch('dash.orgs.models.TembaClient1.get_groups') as mock_groups:
                group = TembaGroup.create(uuid="uuid-8", name='reporters', size=120)
                mock_groups.return_value = [group]

                with patch('dash.orgs.models.TembaClient1.get_contacts') as mock_contacts:
                    mock_contacts.return_value = [
                        TembaContact.create(uuid='000-001', name="Ann", urns=['tel:1234'], groups=['000-002'],
                                            fields=dict(state="Lagos", lga="Oyo", gender='Female', born="1990"),
                                            language='eng',
                                            modified_on=datetime(2015, 9, 20, 10, 20, 30, 400000, pytz.utc))]

                    seen_uuids = Contact.fetch_contacts(self.nigeria)

                    self.assertEqual(seen_uuids, [])

                group = TembaGroup.create(uuid="000-002", name='reporters', size=120)
                mock_groups.return_value = [group]

                with patch('dash.orgs.models.TembaClient1.get_contacts') as mock_contacts:
                    mock_contacts.return_value = [
                        TembaContact.create(uuid='000-001', name="Ann",urns=['tel:1234'], groups=['000-002'],
                                            fields=dict(state="Lagos", lga="Oyo",gender='Female', born="1990"),
                                            language='eng',
                                            modified_on=datetime(2015, 9, 20, 10, 20, 30, 400000, pytz.utc))]

                    seen_uuids = Contact.fetch_contacts(self.nigeria)
                    self.assertTrue('000-001' in seen_uuids)

                    contact = Contact.objects.get()
                    self.assertEqual(contact.uuid, '000-001')
                    self.assertEqual(contact.org, self.nigeria)
                    self.assertEqual(contact.state, 'R-LAGOS')
                    self.assertEqual(contact.district, 'R-OYO')
                    self.assertEqual(contact.gender, 'F')
                    self.assertEqual(contact.born, 1990)

                    Contact.fetch_contacts(self.nigeria, after=datetime(2014, 12, 01, 22, 34, 36, 123000, pytz.utc))
                    self.assertTrue('000-001' in seen_uuids)

                # delete the contacts
                Contact.objects.all().delete()

                group1 = TembaGroup.create(uuid="000-001", name='reporters too', size=10)
                group2 = TembaGroup.create(uuid="000-002", name='reporters', size=120)
                mock_groups.return_value = [group1, group2]

                with patch('dash.orgs.models.TembaClient1.get_contacts') as mock_contacts:
                    mock_contacts.return_value = [
                        TembaContact.create(uuid='000-001', name="Ann",urns=['tel:1234'], groups=['000-002'],
                                            fields=dict(state="Lagos", lga="Oyo",gender='Female', born="1990"),
                                            language='eng',
                                            modified_on=datetime(2015, 9, 20, 10, 20, 30, 400000, pytz.utc))]

                    seen_uuids = Contact.fetch_contacts(self.nigeria)
                    self.assertTrue('000-001' in seen_uuids)

                    contact = Contact.objects.get()
                    self.assertEqual(contact.uuid, '000-001')
                    self.assertEqual(contact.org, self.nigeria)
                    self.assertEqual(contact.state, 'R-LAGOS')
                    self.assertEqual(contact.district, 'R-OYO')
                    self.assertEqual(contact.gender, 'F')
                    self.assertEqual(contact.born, 1990)

                    Contact.fetch_contacts(self.nigeria, after=datetime(2014, 12, 01, 22, 34, 36, 123000, pytz.utc))
                    self.assertTrue('000-001' in seen_uuids)
Exemplo n.º 8
0
    def test_fetch_contacts(self):
        self.nigeria.set_config('reporter_group', 'Reporters')

        tz = pytz.timezone('UTC')
        with patch.object(timezone,
                          'now',
                          return_value=tz.localize(
                              datetime(2015, 9, 29, 10, 20, 30, 40))):

            with patch(
                    'dash.orgs.models.TembaClient1.get_groups') as mock_groups:
                group = TembaGroup.create(uuid="uuid-8",
                                          name='reporters',
                                          size=120)
                mock_groups.return_value = [group]

                with patch('dash.orgs.models.TembaClient1.get_contacts'
                           ) as mock_contacts:
                    mock_contacts.return_value = [
                        TembaContact.create(uuid='000-001',
                                            name="Ann",
                                            urns=['tel:1234'],
                                            groups=['000-002'],
                                            fields=dict(state="Lagos",
                                                        lga="Oyo",
                                                        gender='Female',
                                                        born="1990"),
                                            language='eng',
                                            modified_on=datetime(
                                                2015, 9, 20, 10, 20, 30,
                                                400000, pytz.utc))
                    ]

                    seen_uuids = Contact.fetch_contacts(self.nigeria)

                    self.assertEqual(seen_uuids, [])

                group = TembaGroup.create(uuid="000-002",
                                          name='reporters',
                                          size=120)
                mock_groups.return_value = [group]

                with patch('dash.orgs.models.TembaClient1.get_contacts'
                           ) as mock_contacts:
                    mock_contacts.return_value = [
                        TembaContact.create(uuid='000-001',
                                            name="Ann",
                                            urns=['tel:1234'],
                                            groups=['000-002'],
                                            fields=dict(state="Lagos",
                                                        lga="Oyo",
                                                        gender='Female',
                                                        born="1990"),
                                            language='eng',
                                            modified_on=datetime(
                                                2015, 9, 20, 10, 20, 30,
                                                400000, pytz.utc))
                    ]

                    seen_uuids = Contact.fetch_contacts(self.nigeria)
                    self.assertTrue('000-001' in seen_uuids)

                    contact = Contact.objects.get()
                    self.assertEqual(contact.uuid, '000-001')
                    self.assertEqual(contact.org, self.nigeria)
                    self.assertEqual(contact.state, 'R-LAGOS')
                    self.assertEqual(contact.district, 'R-OYO')
                    self.assertEqual(contact.gender, 'F')
                    self.assertEqual(contact.born, 1990)

                    Contact.fetch_contacts(self.nigeria,
                                           after=datetime(
                                               2014, 12, 01, 22, 34, 36,
                                               123000, pytz.utc))
                    self.assertTrue('000-001' in seen_uuids)

                # delete the contacts
                Contact.objects.all().delete()

                group1 = TembaGroup.create(uuid="000-001",
                                           name='reporters too',
                                           size=10)
                group2 = TembaGroup.create(uuid="000-002",
                                           name='reporters',
                                           size=120)
                mock_groups.return_value = [group1, group2]

                with patch('dash.orgs.models.TembaClient1.get_contacts'
                           ) as mock_contacts:
                    mock_contacts.return_value = [
                        TembaContact.create(uuid='000-001',
                                            name="Ann",
                                            urns=['tel:1234'],
                                            groups=['000-002'],
                                            fields=dict(state="Lagos",
                                                        lga="Oyo",
                                                        gender='Female',
                                                        born="1990"),
                                            language='eng',
                                            modified_on=datetime(
                                                2015, 9, 20, 10, 20, 30,
                                                400000, pytz.utc))
                    ]

                    seen_uuids = Contact.fetch_contacts(self.nigeria)
                    self.assertTrue('000-001' in seen_uuids)

                    contact = Contact.objects.get()
                    self.assertEqual(contact.uuid, '000-001')
                    self.assertEqual(contact.org, self.nigeria)
                    self.assertEqual(contact.state, 'R-LAGOS')
                    self.assertEqual(contact.district, 'R-OYO')
                    self.assertEqual(contact.gender, 'F')
                    self.assertEqual(contact.born, 1990)

                    Contact.fetch_contacts(self.nigeria,
                                           after=datetime(
                                               2014, 12, 01, 22, 34, 36,
                                               123000, pytz.utc))
                    self.assertTrue('000-001' in seen_uuids)