Importa i prospect Calcio a 5 senza toccare la Pallavolo e filtra le organizzazioni per sport.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
require "test_helper"
|
||||
|
||||
class OrganizationsControllerTest < ActionDispatch::IntegrationTest
|
||||
test "sport filter is a dropdown of values already in the project" do
|
||||
login_as users(:admin)
|
||||
create_campaign_org(name: "Futsal Test", email: "futsal@example.com", sport: "Calcio a 5")
|
||||
|
||||
get organizations_path(project_code: "matchlivetv")
|
||||
|
||||
assert_response :success
|
||||
assert_select "select[name=sport]" do
|
||||
assert_select "option[value='']", text: "Sport"
|
||||
assert_select "option[value=Calcio]", text: "Calcio"
|
||||
assert_select "option[value='Calcio a 5']", text: "Calcio a 5"
|
||||
end
|
||||
assert_select "input[name=sport]", count: 0
|
||||
end
|
||||
|
||||
test "sport filter keeps only organizations of that sport" do
|
||||
login_as users(:admin)
|
||||
create_campaign_org(name: "Futsal Test", email: "futsal@example.com", sport: "Calcio a 5")
|
||||
|
||||
get organizations_path(project_code: "matchlivetv", sport: "Calcio a 5")
|
||||
|
||||
assert_response :success
|
||||
assert_match(/Futsal Test/, response.body)
|
||||
assert_no_match(/ASD Test Calcio/, response.body)
|
||||
assert_select "select[name=sport] option[value='Calcio a 5'][selected]"
|
||||
end
|
||||
end
|
||||
@@ -48,4 +48,63 @@ class CampaignImportMatchlivetvLaunchTest < ActiveSupport::TestCase
|
||||
ensure
|
||||
csv.close!
|
||||
end
|
||||
|
||||
test "imports with a distinct sport and skips duplicate clubs" do
|
||||
csv = Tempfile.new(["calcioa5", ".csv"])
|
||||
csv.write(<<~CSV)
|
||||
N.,Regione,Prov.,Società,M/F,Email verificata,Sito / profilo,Streaming rilevato,Evidenza / fit commerciale,Test A/B,Stato invio,Data invio,Esito,Demo / Trial,Conversione,Piano,Fonte contatto / ricerca,Data verifica,Note follow-up
|
||||
101,Lazio,RM,Ecocity Futsal Genzano,M,info@ecocityfutsal.it,ecocityfutsal.it,LIMITATO,Attiva,A,DA INVIARE,,,NO,NO,,fonte,2026-09-06,
|
||||
129,Lazio,RM,Ecocity Futsal Genzano,M,amministrazione@pec.ecocityfutsal.it,ecocityfutsal.it,LIMITATO,PEC,A,DA INVIARE,,,NO,NO,,fonte,2026-09-06,
|
||||
157,Valle d'Aosta,AO,SSDARL AOSTA CALCIO 511,M/F,aostacalcio511@gmail.com,divisionecalcioa5.it,NON RILEVATO,U19,A,DA INVIARE,,,NO,NO,NO,fonte,2026-09-06,
|
||||
CSV
|
||||
csv.flush
|
||||
|
||||
create_campaign_org(name: "Aosta Calcio 511", email: "esistente@example.com", list_position: 97)
|
||||
|
||||
result = CampaignImport::MatchlivetvLaunch.new(
|
||||
path: csv.path,
|
||||
user: users(:admin),
|
||||
project: projects(:matchlivetv),
|
||||
wipe: false,
|
||||
sport: "Calcio a 5",
|
||||
campaign_name: "Campagna Calcio a 5"
|
||||
).call
|
||||
|
||||
assert_empty result.errors, result.errors.inspect
|
||||
assert_equal 1, result.imported
|
||||
assert_equal 2, result.skipped
|
||||
|
||||
org = Organization.find_by!(name: "Ecocity Futsal Genzano")
|
||||
assert_equal "Calcio a 5", org.sport
|
||||
assert_equal "Campagna Calcio a 5", org.campaign_opportunity(projects(:matchlivetv)).name
|
||||
assert_nil org.campaign_opportunity(projects(:matchlivetv)).product
|
||||
assert_equal 1, Organization.where("LOWER(name) = ?", "ecocity futsal genzano").count
|
||||
assert_nil Organization.find_by(name: "SSDARL AOSTA CALCIO 511")
|
||||
ensure
|
||||
csv.close!
|
||||
end
|
||||
|
||||
test "strips spaces inside campaign emails" do
|
||||
csv = Tempfile.new(["email", ".csv"])
|
||||
csv.write(<<~CSV)
|
||||
N.,Regione,Prov.,Società,M/F,Email verificata,Sito / profilo,Streaming rilevato,Evidenza / fit commerciale,Test A/B,Stato invio,Data invio,Esito,Demo / Trial,Conversione,Piano,Fonte contatto / ricerca,Data verifica,Note follow-up
|
||||
144,Emilia-Romagna,RE,Real Casalgrandese C5,M,REAL CASALGRANDESEC5@LIBERO.IT,divisionecalcioa5.it,NON RILEVATO,Attiva,B,DA INVIARE,,,NO,NO,,fonte,2026-09-06,
|
||||
CSV
|
||||
csv.flush
|
||||
|
||||
result = CampaignImport::MatchlivetvLaunch.new(
|
||||
path: csv.path,
|
||||
user: users(:admin),
|
||||
project: projects(:matchlivetv),
|
||||
wipe: false,
|
||||
sport: "Calcio a 5",
|
||||
campaign_name: "Campagna Calcio a 5"
|
||||
).call
|
||||
|
||||
assert_empty result.errors, result.errors.inspect
|
||||
org = Organization.find_by!(name: "Real Casalgrandese C5")
|
||||
assert_equal "realcasalgrandesec5@libero.it", org.email
|
||||
ensure
|
||||
csv.close!
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user