Exemplo n.º 1
0
    def test_import_from_gsheet_helper_unique_fields_no_lvs(
            self, mock_get_credential_obj, mock_get_authorized_service,
            mock_get_gsheet_metadata, mock_fetch_data_gsheet,
            mock_get_or_create_read):
        data = [
            ['Name', 'Last.Name', 'E-mail'],
            ['John', 'Doe', '*****@*****.**'],
            ['Bob', 'Smith', '*****@*****.**'],
        ]
        expected_result = [{
            'silo_id': self.silo.id
        }, {
            'msg': 'Operation successful',
            'level': messages.SUCCESS
        }]

        mock_get_credential_obj.return_value = Mock(OAuth2Credentials)
        mock_get_authorized_service.return_value = Mock()
        mock_get_gsheet_metadata.return_value = (Mock(), None)
        mock_fetch_data_gsheet.return_value = (data, None)
        mock_get_or_create_read.return_value = self.read

        result = gviews_v4.import_from_gsheet_helper(self.tola_user.user,
                                                     self.silo.id,
                                                     self.silo.name, 1234)
        self.assertEqual(result, expected_result)
Exemplo n.º 2
0
    def test_import_from_gsheet_helper_sheet_not_selected(
            self, mock_get_credential_obj, mock_get_authorized_service,
            mock_get_gsheet_metadata):
        external_msg = {
            'level': messages.ERROR,
            'msg': 'Error: GSheet is not selected.'
        }
        expected_result = [{
            'level': messages.ERROR,
            'msg': 'A Google Spreadsheet is not selected to '
            'import data from.',
            'redirect': reverse('index')
        }, {
            'silo_id': self.silo.id
        }, external_msg]

        mock_get_credential_obj.return_value = Mock(OAuth2Credentials)
        mock_get_authorized_service.return_value = Mock()
        mock_get_gsheet_metadata.return_value = (None, external_msg)

        result = gviews_v4.import_from_gsheet_helper(self.tola_user.user,
                                                     self.silo.id,
                                                     self.silo.name, None)

        self.assertEqual(result, expected_result)
Exemplo n.º 3
0
    def test_import_from_gsheet_helper_minimal(self, mock_get_credential_obj,
                                               mock_get_authorized_service,
                                               mock_get_gsheet_metadata,
                                               mock_fetch_data_gsheet,
                                               mock_get_or_create_read):
        data = [
            ['Name', 'Age'],
            ['John', '40'],
        ]
        expected_result = [{
            'silo_id': self.silo.id
        }, {
            'msg': 'Operation successful',
            'level': messages.SUCCESS
        }]

        mock_get_credential_obj.return_value = Mock(OAuth2Credentials)
        mock_get_authorized_service.return_value = Mock()
        mock_get_gsheet_metadata.return_value = (Mock(), None)
        mock_fetch_data_gsheet.return_value = (data, None)
        mock_get_or_create_read.return_value = self.read

        result = gviews_v4.import_from_gsheet_helper(self.tola_user.user,
                                                     self.silo.id,
                                                     self.silo.name, 1234)

        self.silo = Silo.objects.get(id=self.silo.id)
        self.assertEqual(result, expected_result)

        lvss = LabelValueStore.objects.filter(silo_id=self.silo.id)
        for lvs in lvss:
            lvs_json = json.loads(lvs.to_json())
            self.assertEqual(lvs_json.get('Name'), 'John')
            self.assertEqual(lvs_json.get('Age'), 40)
Exemplo n.º 4
0
    def test_import_from_gsheet_helper_skipped_rows(
            self, mock_get_credential_obj, mock_get_authorized_service,
            mock_get_gsheet_metadata, mock_fetch_data_gsheet,
            mock_get_or_create_read):
        lvs = LabelValueStore()
        lvs.silo_id = self.silo.id
        lvs.save()
        data = [{
            'First.Name': 'John',
            'Last.Name': 'Doe',
            'E-mail': '*****@*****.**',
        }, {
            'First.Name': 'Bob',
            'Last.Name': 'Smith',
            'E-mail': '*****@*****.**',
        }]
        save_data_to_silo(self.silo, data, self.read)

        # create multiple lvs
        lvs = LabelValueStore()
        lvs.silo_id = self.silo.id
        lvs.save()
        save_data_to_silo(self.silo, data, self.read)

        factories.UniqueFields(name='E-mail', silo=self.silo)
        data = [
            ['First.Name', 'Last.Name', 'E-mail'],
            ['John', 'Lennon', '*****@*****.**'],
        ]
        expected_result = [{
            'silo_id': self.silo.id
        }, {
            'msg':
            'Skipped updating/adding records where '
            '[email protected],silo_id=1 because there are '
            'already multiple records.',
            'level':
            messages.WARNING
        }, {
            'msg': 'Operation successful',
            'level': messages.SUCCESS
        }]

        mock_get_credential_obj.return_value = Mock(OAuth2Credentials)
        mock_get_authorized_service.return_value = Mock()
        mock_get_gsheet_metadata.return_value = (Mock(), None)
        mock_fetch_data_gsheet.return_value = (data, None)
        mock_get_or_create_read.return_value = self.read

        result = gviews_v4.import_from_gsheet_helper(self.tola_user.user,
                                                     self.silo.id,
                                                     self.silo.name,
                                                     1234,
                                                     partialcomplete=True)
        self.assertEqual(result, ([], expected_result))
Exemplo n.º 5
0
    def test_import_from_gsheet_helper_with_integer_unique_fields(
            self, mock_get_credential_obj, mock_get_authorized_service,
            mock_get_gsheet_metadata, mock_fetch_data_gsheet,
            mock_get_or_create_read):
        '''Import function should update existing data when it got new data with
        same unique field'''
        lvs = LabelValueStore()
        lvs.silo_id = self.silo.id
        lvs.save()
        data = [{
            'First.Name': 'John',
            'Last.Name': 'Doe',
            'Number': 1,
        }, {
            'First.Name': 'Bob',
            'Last.Name': 'Smith',
            'Number': 2,
        }]

        save_data_to_silo(self.silo, data, self.read)
        factories.UniqueFields(name='Number', silo=self.silo)

        data = [
            ['First.Name', 'Last.Name', 'Number'],
            ['John', 'Lennon', 1],
        ]
        expected_result = [{
            'silo_id': self.silo.id
        }, {
            'msg': 'Operation successful',
            'level': messages.SUCCESS
        }]

        mock_get_credential_obj.return_value = Mock(OAuth2Credentials)
        mock_get_authorized_service.return_value = Mock()
        mock_get_gsheet_metadata.return_value = (Mock(), None)
        mock_fetch_data_gsheet.return_value = (data, None)
        mock_get_or_create_read.return_value = self.read

        result = gviews_v4.import_from_gsheet_helper(self.hikaya_user.user,
                                                     self.silo.id,
                                                     self.silo.name, 1234)
        self.assertEqual(result, expected_result)

        lvss = LabelValueStore.objects.filter(silo_id=self.silo.id)
        count = 0
        for lvs in lvss:
            lvs_json = json.loads(lvs.to_json())
            if lvs_json.get('First_Name') == 'John':
                self.assertEqual(lvs_json.get('Last_Name'), 'Lennon')
                count += 1

        self.assertEqual(count, 1)
        self.assertEqual(lvss.count(), 3)
Exemplo n.º 6
0
    def test_import_from_gsheet_helper_unique_fields(
            self, mock_get_credential_obj, mock_get_authorized_service,
            mock_get_gsheet_metadata, mock_fetch_data_gsheet,
            mock_get_or_create_read):
        lvs = LabelValueStore()
        lvs.silo_id = self.silo.id
        lvs.save()
        data = [{
            'First.Name': 'John',
            'Last.Name': 'Doe',
            'E-mail': '*****@*****.**',
        }, {
            'First.Name': 'Bob',
            'Last.Name': 'Smith',
            'E-mail': '*****@*****.**',
        }]

        save_data_to_silo(self.silo, data, self.read)
        factories.UniqueFields(name='E-mail', silo=self.silo)

        data = [
            ['First.Name', 'Last.Name', 'E-mail'],
            ['John', 'Lennon', '*****@*****.**'],
        ]
        expected_result = [{
            'silo_id': self.silo.id
        }, {
            'msg': 'Operation successful',
            'level': messages.SUCCESS
        }]

        mock_get_credential_obj.return_value = Mock(OAuth2Credentials)
        mock_get_authorized_service.return_value = Mock()
        mock_get_gsheet_metadata.return_value = (Mock(), None)
        mock_fetch_data_gsheet.return_value = (data, None)
        mock_get_or_create_read.return_value = self.read

        result = gviews_v4.import_from_gsheet_helper(self.tola_user.user,
                                                     self.silo.id,
                                                     self.silo.name, 1234)
        self.assertEqual(result, expected_result)

        lvss = LabelValueStore.objects.filter(silo_id=self.silo.id)
        count = 0
        for lvs in lvss:
            lvs_json = json.loads(lvs.to_json())
            if lvs_json.get('First_Name') == 'John':
                self.assertEqual(lvs_json.get('Last_Name'), 'Lennon')
                count += 1

        self.assertEqual(count, 1)
Exemplo n.º 7
0
    def test_import_from_gsheet_helper_wrong_creadential(
            self, mock_get_credential_obj):
        msg = {
            'msg': 'Requires Google Authorization Setup',
            'redirect': 'url',
            'redirect_uri_after_step2': True,
            'level': messages.ERROR
        }
        mock_get_credential_obj.return_value = msg

        result = gviews_v4.import_from_gsheet_helper(self.tola_user.user,
                                                     self.silo.id,
                                                     self.silo.name, 1234)
        self.assertEqual(result, [msg])
Exemplo n.º 8
0
    def test_import_from_gsheet_helper_sheet_refresh_credential(
            self, mock_get_credential_obj, mock_get_authorized_service,
            mock_get_gsheet_metadata):
        mock_credential_obj = Mock(OAuth2Credentials)
        external_msg = {
            'credential': [mock_credential_obj],
        }

        mock_get_credential_obj.return_value = Mock(OAuth2Credentials)
        mock_get_authorized_service.return_value = Mock()
        mock_get_gsheet_metadata.return_value = (None, external_msg)

        result = gviews_v4.import_from_gsheet_helper(self.tola_user.user,
                                                     self.silo.id,
                                                     self.silo.name, None)

        self.assertEqual(result, [mock_credential_obj])
Exemplo n.º 9
0
    def test_import_from_gsheet_helper_error_fetching(
            self, mock_get_credential_obj, mock_get_authorized_service,
            mock_get_gsheet_metadata, mock_fetch_data_gsheet,
            mock_get_or_create_read):
        external_msg = {
            'level': messages.ERROR,
            'msg': 'Something went wrong 22: error',
            'redirect': None
        }
        expected_result = [{'silo_id': self.silo.id}, external_msg]

        mock_get_credential_obj.return_value = Mock(OAuth2Credentials)
        mock_get_authorized_service.return_value = Mock()
        mock_get_gsheet_metadata.return_value = (Mock(), None)
        mock_fetch_data_gsheet.return_value = (None, external_msg)
        mock_get_or_create_read.return_value = self.read

        result = gviews_v4.import_from_gsheet_helper(self.tola_user.user,
                                                     self.silo.id,
                                                     self.silo.name, 1234)
        self.assertEqual(result, expected_result)