1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
use strict;
use warnings;
use Test::More;
use FixMyStreet::TestMech;
my $mech = FixMyStreet::TestMech->new;
# check that the homepage loads
$mech->get_ok('/');
subtest "check that the form goes to /around" => sub {
$mech->get_ok('/');
is $mech->uri->path, '/', "still on '/'";
$mech->submit_form_ok( { with_fields => { pc => 'SW1A 1AA', } } );
# check that we are at /around
is $mech->uri->path, '/around', "Got to /around";
is_deeply { $mech->uri->query_form }, { pc => 'SW1A 1AA' },
"query passed along";
};
subtest "does pc, (x,y), (e,n) or (lat,lon) go to /around" => sub {
foreach my $test ( #
{
in => { pc => 'SW1A 1AA' },
out => { pc => 'SW1A 1AA' },
},
{
in => { lat => 51.50100, lon => -0.14158 },
out => { lat => 51.50100, lon => -0.14158, zoom => 3 },
},
{
in => { x => 3281, y => 1113, },
out => { lat => 51.499825, lon => -0.140137, zoom => 3 },
},
{
in => { e => 1234, n => 4567 },
out => { lat => 49.808509, lon => -7.544784, zoom => 3 },
},
)
{
my $uri = URI->new('http://localhost/');
$uri->query_form( $test->{in} );
# get the uri and check for 302
FixMyStreet::override_config {
MAPIT_URL => 'http://mapit.uk/',
}, sub {
$mech->get_ok($uri);
};
# check that we are at /around
is $mech->uri->path, '/around', "Got to /around";
is_deeply { $mech->uri->query_form }, $test->{out}, "query correct";
}
};
my $problem_rs = FixMyStreet::App->model('DB::Problem');
my $num = $problem_rs->count;
my @edinburgh_problems = $mech->create_problems_for_body(5, 2651, 'Front page');
is scalar @edinburgh_problems, 5, 'correct number of edinburgh problems created';
$mech->get_ok('/report/' . $edinburgh_problems[2]->id);
$mech->content_contains('Front page Test 3 for 2651', 'problem to be marked non public visible');
is $problem_rs->count, $num+5;
my $private = $edinburgh_problems[2];
ok $private->update( { non_public => 1 } ), 'problem marked non public';
ok $mech->get('/report/' . $edinburgh_problems[2]->id);
is $mech->res->code, 403, 'page forbidden';
is $problem_rs->count, $num+5;
my $oxon = $mech->create_body_ok(2237, 'Oxfordshire County Council', id => 2237);
subtest "prefilters /around if user has categories" => sub {
my $user = $mech->log_in_ok('test@example.com');
my $categories = [
$mech->create_contact_ok( body_id => $oxon->id, category => 'Cows', email => 'cows@example.net' )->id,
$mech->create_contact_ok( body_id => $oxon->id, category => 'Potholes', email => 'potholes@example.net' )->id,
];
$user->from_body($oxon);
$user->set_extra_metadata('categories', $categories);
$user->update;
$mech->get_ok('/');
# NB can't use visible_form_values because categories field is hidden
$mech->content_contains("Cows,Potholes");
};
END {
$mech->delete_problems_for_body( 2651 );
$mech->delete_body($oxon);
done_testing();
}
|