def test_convert_to_json_under_10(): """ Confirm that totals under $10 are aggregated. """ opportunities = DataFrame({ "AccountId": ["A01", "B01", "A01", "B01"], "Amount": [5, 20, 4, 4000], "CloseDate": ['2009-01-02', '2009-01-03', '2009-01-04', '2010-01-02'] }) accounts = DataFrame({ "AccountId": ["A01", "B01"], "Text_For_Donor_Wall__c": ["Donor A", "Donor B"] }) expected = """ [ { "donations": [ { "amount": "Less than $10", "year": 2009 }, { "amount": "Less than $10", "year": "all-time" } ], "name": "Donor A" }, { "donations": [ { "amount": "$20", "year": 2009 }, { "amount": "$4,000", "year": 2010 }, { "amount": "$4,020", "year": "all-time" } ], "name": "Donor B" } ] """ actual = convert_donors(opportunities=opportunities, accounts=accounts) assert json.loads(actual) == json.loads(expected)
def test_convert_to_json_normal(): """ Check the normal case. """ opportunities = DataFrame({ "AccountId": ["A01", "B01", "A01", "B01"], "Amount": [10, 20, 30, 4000], "CloseDate": ['2009-01-02', '2009-01-03', '2009-01-04', '2010-01-02'] }) accounts = DataFrame({ "AccountId": ["A01", "B01"], "Text_For_Donor_Wall__c": ["Donor A", "Donor B"] }) expected = """ [ { "donations": [ { "amount": "$40", "year": 2009 }, { "amount": "$40", "year": "all-time" } ], "name": "Donor A" }, { "donations": [ { "amount": "$20", "year": 2009 }, { "amount": "$4,000", "year": 2010 }, { "amount": "$4,020", "year": "all-time" } ], "name": "Donor B" } ] """ actual = convert_donors(opportunities=opportunities, accounts=accounts) assert json.loads(actual) == json.loads(expected)
def test_convert_to_json_with_empty_amount(): """ Verify that blank values are ignored. """ opportunities = DataFrame({ "AccountId": ["A01", "B01", "A01", "B01"], "Amount": [10, 20, 30, ''], "CloseDate": ['2009-01-02', '2009-01-03', '2009-01-04', '2010-01-02'] }) accounts = DataFrame({ "AccountId": ["A01", "B01"], "Text_For_Donor_Wall__c": ["Donor A", "Donor B"] }) actual = convert_donors(opportunities=opportunities, accounts=accounts) expected = """ [ { "donations": [ { "amount": "$40", "year": 2009 }, { "amount": "$40", "year": "all-time" } ], "name": "Donor A" }, { "donations": [ { "amount": "$20", "year": 2009 }, { "amount": "$20", "year": "all-time" } ], "name": "Donor B" } ] """ assert json.loads(actual) == json.loads(expected)
sleep(3) bulk.close_job(job) rows = bulk.get_batch_result_iter(job, batch, parse_csv=True) accts = DataFrame.from_dict(list(rows)) accts.rename(columns={'Id': 'AccountId'}, inplace=True) return opps, accts # Circles print "Fetching Circle data..." generate_circle_data() # Sponsors opps, accts = sf_data(sponsors_query) print "Transforming and exporting to JSON..." json_output = convert_sponsors(opportunities=opps, accounts=accts) print "Saving sponsors to S3..." push_to_s3(filename='sponsors.json', contents=json_output) # Donors opps, accounts = sf_data(donors_query) print "Transforming and exporting to JSON..." json_output = convert_donors(opportunities=opps, accounts=accts) print "Saving donors to S3..." push_to_s3(filename='donors.json', contents=json_output)