# 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