aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--t/open311/populate-service-list.t173
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();