def test_read_in_s3(self, mock_requests):
     mock_requests.return_value.content = (
         u'a,b,c\nd,e,\u201c'.encode('utf-8'))
     data = read_in_s3('fake-s3-url.com')
     self.assertEqual(mock_requests.call_count, 1)
     self.assertEqual(data, [{u'a': u'd', u'b': u'e', u'c': u'\u201c'}])
     mock_requests.return_value.content = (
         u'a,b,c\nd,e,\u201c'.encode('windows-1252'))
     data = read_in_s3('fake-s3-url.com')
     self.assertTrue(mock_requests.call_count == 2)
     self.assertTrue(data == [{u'a': u'd', u'b': u'e', u'c': u'\u201c'}])
Exemple #2
0
def tag_schools(s3_url):
    """
    Sets schools' 'settlement_school' value based on a CSV

    Assumes the CSV's headings include fields for 'ipeds_unit_id' and 'flag'
    """
    counter = 0
    csv_data = read_in_s3(s3_url)
    if not csv_data[0]:
        return "ERROR: could not read data from {0}".format(s3_url)
    headings = csv_data[0].keys()
    for heading in ['ipeds_unit_id', 'flag']:
        if heading not in headings:
            return ("ERROR: CSV doesn't have required fields; "
                    "fields found were {}".format(headings))
    initial_flag = csv_data[0]['flag']
    for row in csv_data:
        school = None
        if row['ipeds_unit_id']:
            school = get_school(row['ipeds_unit_id'])
        if school:
            school.settlement_school = row['flag']
            school.save()
            counter += 1
    intro = "school was" if counter == 1 else "schools were"
    return "{} {} tagged as '{}' settlement schools".format(
        counter, intro, initial_flag)
 def test_read_in_s3_error(self, mock_cdr, mock_requests):
     mock_requests.return_value.content = (
         u'a,b,c\nd,e,\u201c'.encode('utf-8'))
     mock_cdr.side_effect = TypeError
     data = read_in_s3('fake-s3-url.com')
     self.assertEqual(mock_requests.call_count, 1)
     self.assertEqual(mock_cdr.call_count, 1)
     self.assertEqual(data, [{}])
 def test_read_in_s3_error(self, mock_cdr, mock_requests):
     mock_requests.return_value.content = (
         u'a,b,c\nd,e,\u201c'.encode('utf-8')
     )
     mock_cdr.side_effect = TypeError
     data = read_in_s3('fake-s3-url.com')
     self.assertEqual(mock_requests.call_count, 1)
     self.assertEqual(mock_cdr.call_count, 1)
     self.assertEqual(data, [{}])
 def test_read_in_s3(self, mock_requests):
     mock_requests.return_value.content = (
         u'a,b,c\nd,e,\u201c'.encode('utf-8')
     )
     data = read_in_s3('fake-s3-url.com')
     self.assertEqual(
         mock_requests.call_count,
         1
     )
     self.assertEqual(
         data,
         [{u'a': u'd', u'b': u'e', u'c': u'\u201c'}]
     )
     mock_requests.return_value.content = (
         u'a,b,c\nd,e,\u201c'.encode('windows-1252')
     )
     data = read_in_s3('fake-s3-url.com')
     self.assertTrue(mock_requests.call_count == 2)
     self.assertTrue(data == [{u'a': u'd', u'b': u'e', u'c': u'\u201c'}])
 def test_read_in_s3(self, mock_requests):
     mock_requests.return_value.text = (
         'a,b,c\nd,e,\u201c')
     data = read_in_s3('fake-s3-url.com')
     self.assertEqual(
         mock_requests.call_count,
         1
     )
     self.assertEqual(
         data,
         [{'a': 'd', 'b': 'e', 'c': '\u201c'}]
     )