houdini/spec/lib/insert/insert_import_spec.rb
Bradley M. Kuhn 6772312ea7 Relicense all .rb files under new project license.
The primary license of the project is changing to:
  AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later

with some specific files to be licensed under the one of two licenses:
   CC0-1.0
   LGPL-3.0-or-later

This commit is one of the many steps to relicense the entire codebase.

Documentation granting permission for this relicensing (from all past
contributors who hold copyrights) is on file with Software Freedom
Conservancy, Inc.
2018-03-25 15:10:40 -04:00

109 lines
4.6 KiB
Ruby

# 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