diff options
-rw-r--r-- | t/open311/populate-service-list.t | 173 |
1 files changed, 38 insertions, 135 deletions
diff --git a/t/open311/populate-service-list.t b/t/open311/populate-service-list.t index 9cfa74c33..83df47358 100644 --- a/t/open311/populate-service-list.t +++ b/t/open311/populate-service-list.t @@ -17,47 +17,12 @@ use_ok( 'Open311' ); my $processor = Open311::PopulateServiceList->new( council_list => [] ); ok $processor, 'created object'; -subtest 'check basic functionality' => sub { - FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->delete(); - my $xml = qq{<?xml version="1.0" encoding="utf-8"?> -<services> - <service> - <service_code>001</service_code> - <service_name>Cans left out 24x7</service_name> - <description>Garbage or recycling cans that have been left out for more than 24 hours after collection. Violators will be cited.</description> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>sanitation</group> - </service> - <service> - <service_code>002</service_code> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>street</group> - <service_name>Construction plate shifted</service_name> - <description>Metal construction plate covering the street or sidewalk has been moved.</description> - </service> - <service> - <service_code>003</service_code> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>street</group> - <service_name>Curb or curb ramp defect</service_name> - <description>Sidewalk curb or ramp has problems such as cracking, missing pieces, holes, and/or chipped curb.</description> - </service> -</services> -}; - my $simple = XML::Simple->new(); - my $obj; +subtest 'check basic functionality' => sub { + FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->delete(); - eval { - $obj = $simple->XMLin( $xml ); - }; + my $service_list = get_xml_simple_object( get_standard_xml ); my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { area_id => 1 @@ -65,7 +30,7 @@ subtest 'check basic functionality' => sub { my $processor = Open311::PopulateServiceList->new( council_list => [] ); $processor->_current_council( $council ); - $processor->process_services( $obj ); + $processor->process_services( $service_list ); my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); is $contact_count, 3, 'correct number of contacts'; @@ -87,44 +52,7 @@ subtest 'check non open311 contacts marked as deleted' => sub { } ); - my $xml = qq{<?xml version="1.0" encoding="utf-8"?> -<services> - <service> - <service_code>001</service_code> - <service_name>Cans left out 24x7</service_name> - <description>Garbage or recycling cans that have been left out for more than 24 hours after collection. Violators will be cited.</description> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>sanitation</group> - </service> - <service> - <service_code>002</service_code> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>street</group> - <service_name>Construction plate shifted</service_name> - <description>Metal construction plate covering the street or sidewalk has been moved.</description> - </service> - <service> - <service_code>003</service_code> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>street</group> - <service_name>Curb or curb ramp defect</service_name> - <description>Sidewalk curb or ramp has problems such as cracking, missing pieces, holes, and/or chipped curb.</description> - </service> -</services> -}; - - my $simple = XML::Simple->new(); - my $obj; - - eval { - $obj = $simple->XMLin( $xml ); - }; + my $service_list = get_xml_simple_object( get_standard_xml ); my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { area_id => 1 @@ -132,7 +60,7 @@ subtest 'check non open311 contacts marked as deleted' => sub { my $processor = Open311::PopulateServiceList->new( council_list => [] ); $processor->_current_council( $council ); - $processor->process_services( $obj ); + $processor->process_services( $service_list ); my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); is $contact_count, 4, 'correct number of contacts'; @@ -141,7 +69,7 @@ subtest 'check non open311 contacts marked as deleted' => sub { is $contact_count, 1, 'correct number of deleted contacts'; }; -subtest 'check duplicate service name issues error' => sub { +subtest 'check email changed if matching category' => sub { FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->delete(); my $contact = FixMyStreet::App->model('DB::Contact')->create( @@ -159,44 +87,7 @@ subtest 'check duplicate service name issues error' => sub { ok $contact, 'contact created'; - my $xml = qq{<?xml version="1.0" encoding="utf-8"?> -<services> - <service> - <service_code>001</service_code> - <service_name>Cans left out 24x7</service_name> - <description>Garbage or recycling cans that have been left out for more than 24 hours after collection. Violators will be cited.</description> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>sanitation</group> - </service> - <service> - <service_code>002</service_code> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>street</group> - <service_name>Construction plate shifted</service_name> - <description>Metal construction plate covering the street or sidewalk has been moved.</description> - </service> - <service> - <service_code>003</service_code> - <metadata>false</metadata> - <type>realtime</type> - <keywords>lorem, ipsum, dolor</keywords> - <group>street</group> - <service_name>Curb or curb ramp defect</service_name> - <description>Sidewalk curb or ramp has problems such as cracking, missing pieces, holes, and/or chipped curb.</description> - </service> -</services> -}; - - my $simple = XML::Simple->new(); - my $obj; - - eval { - $obj = $simple->XMLin( $xml ); - }; + my $service_list = get_xml_simple_object( get_standard_xml ); my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { area_id => 1 @@ -204,7 +95,7 @@ subtest 'check duplicate service name issues error' => sub { my $processor = Open311::PopulateServiceList->new( council_list => [] ); $processor->_current_council( $council ); - $processor->process_services( $obj ); + $processor->process_services( $service_list ); $contact->discard_changes; is $contact->email, '001', 'email unchanged'; @@ -233,7 +124,28 @@ subtest 'check category name changed if updated' => sub { ok $contact, 'contact created'; - my $xml = qq{<?xml version="1.0" encoding="utf-8"?> + my $service_list = get_xml_simple_object( get_standard_xml ); + + my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { + area_id => 1 + } ); + + my $processor = Open311::PopulateServiceList->new( council_list => [] ); + $processor->_current_council( $council ); + $processor->process_services( $service_list ); + + $contact->discard_changes; + is $contact->email, '001', 'email unchanged'; + is $contact->category, 'Cans left out 24x7', 'category changed'; + is $contact->confirmed, 1, 'contact still confirmed'; + is $contact->deleted, 0, 'contact still not deleted'; + + my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); + is $contact_count, 3, 'correct number of contacts'; +}; + +sub get_standard_xml { + return qq{<?xml version="1.0" encoding="utf-8"?> <services> <service> <service_code>001</service_code> @@ -264,6 +176,10 @@ subtest 'check category name changed if updated' => sub { </service> </services> }; +} + +sub get_xml_simple_object { + my $xml = shift; my $simple = XML::Simple->new(); my $obj; @@ -272,22 +188,9 @@ subtest 'check category name changed if updated' => sub { $obj = $simple->XMLin( $xml ); }; - my $council = FixMyStreet::App->model('DB::Open311Conf')->new( { - area_id => 1 - } ); - - my $processor = Open311::PopulateServiceList->new( council_list => [] ); - $processor->_current_council( $council ); - $processor->process_services( $obj ); - - $contact->discard_changes; - is $contact->email, '001', 'email unchanged'; - is $contact->category, 'Cans left out 24x7', 'category changed'; - is $contact->confirmed, 1, 'contact still confirmed'; - is $contact->deleted, 0, 'contact still not deleted'; + die $@ if $@; - my $contact_count = FixMyStreet::App->model('DB::Contact')->search( { area_id => 1 } )->count(); - is $contact_count, 3, 'correct number of contacts'; -}; + return $obj; +} done_testing(); |