houdini/spec/lib/insert/insert_import_spec.rb

110 lines
4.6 KiB
Ruby
Raw Normal View History

# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
require 'rails_helper'
describe InsertImport, :pending => true do
before(:all) do
#@data = PsqlFixtures.init
end
describe '.from_csv' do
before(:all) do
# @row_count = 4
# @args = {
# nonprofit_id: @data['np']['id'],
# user_email: @data['np_admin']['email'],
# user_id: @data['np_admin']['id'],
# file_uri: "#{ENV['PWD']}/spec/fixtures/test_import.csv",
# header_matches: {
# "Date" => "donation.date",
# "Program" => "donation.designation",
# "Amount" => "donation.amount",
# "Business or organization name" => "supporter.organization",
# "First Name" => "supporter.first_name",
# "Last Name" => "supporter.last_name",
# "Address" => "supporter.address",
# "City" => "supporter.city",
# "State" => "supporter.state_code",
# "Zip Code" => "supporter.zip_code",
# "EMAIL" => "supporter.email",
# "notes" => "donation.comment",
# "Field Guy" => "custom_field",
# "Tag 1" => "tag",
# "Tag 2" => "tag"
# }
# }
# @result = InsertImport.from_csv(@args)
# @supporters = Psql.execute("SELECT * FROM supporters WHERE import_id = #{@result['id']}")
# @supporter_ids = @supporters.map{|h| h['id']}
# @donations = Psql.execute("SELECT * FROM donations WHERE supporter_id IN (#{@supporter_ids.join(",")})")
end
it 'creates an import table with all the correct data' do
expect(@result['nonprofit_id']).to eq(@data['np']['id'])
expect(@result['id']).to be_present
expect(@result['row_count']).to eq @row_count
expect(@result['date']).to eq(@result['created_at'])
expect(@result['user_id']).to eq(@data['np_admin']['id'])
expect(@result['imported_count']).to eq(16)
end
it 'creates all the supporters with correct names' do
names = @supporters.map{|s| s['name']}
expect(names.sort).to eq(Hamster::Vector["Robert Norris", "Angie Vaughn", "Bill Waddell", "Bubba Thurmond"].sort)
end
it 'creates all the supporters with correct emails' do
emails = @supporters.map{|s| s['email']}
expect(emails.sort).to eq(Hamster::Vector["user@example.com", "user@example.com", "user@example.com", "user@example.com"].sort)
end
it 'creates all the supporters with correct organizations' do
orgs = @supporters.map{|s| s['organization']}
expect(orgs.sort).to eq(Hamster::Vector["Jet-Pep", "Klein Drug Shoppe, Inc.", "River City Equipment Rental and Sales", "Somewhere LLC"].sort)
end
it 'creates all the supporters with correct cities' do
cities = @supporters.map{|s| s['city']}
expect(cities.sort).to eq(Hamster::Vector["Decatur", "Guntersville", "Holly Pond", "Snead"].sort)
end
it 'creates all the supporters with correct addresses' do
addresses = @supporters.map{|s| s['address']}
expect(addresses.sort).to eq(Hamster::Vector["3370 Alabama Highway 69", "649 Finley Island Road", "P.O. Box 143", "P.O. Box 611"].sort)
end
it 'creates all the supporters with correct zip_codes' do
zips = @supporters.map{|s| s['zip_code']}
expect(zips.sort).to eq(Hamster::Vector["35601", "35806", "35952", "35976"].sort)
end
it 'creates all the supporters with correct state_codes' do
states = @supporters.map{|s| s['state_code']}
expect(states.sort).to eq(Hamster::Vector["AL", "AL", "AL", "AL"])
end
it 'creates all the donations with correct amounts' do
amounts = @donations.map{|d| d['amount']}
expect(amounts.sort).to eq(Hamster::Vector[1000, 1000, 1000, 1000])
end
it 'creates all the donations with correct designations' do
desigs = @donations.map{|d| d['designation']}
expect(desigs.sort).to eq(Hamster::Vector["third party event", "third party event", "third party event", "third party event"])
end
it 'inserts custom fields' do
vals = Psql.execute("SELECT value FROM custom_field_joins ORDER BY id DESC LIMIT 4").map{|h| h['value']}
expect(vals).to eq(Hamster::Vector["custfield", "custfield", "custfield", "custfield"])
end
it 'inserts tags' do
ids = @supporters.map{|h| h['id']}.join(", ")
names = Psql.execute("SELECT tag_masters.name FROM tag_joins JOIN tag_masters ON tag_masters.id=tag_joins.tag_master_id WHERE tag_joins.supporter_id IN (#{ids})")
.map{|h| h['name']}
expect(Hamster.to_ruby(names).sort).to eq(["tag1", "tag1", "tag1", "tag1", "tag2", "tag2", "tag2", "tag2"])
end
end
end