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)
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)
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)
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))
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)
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)
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])
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])
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)