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
|
use FixMyStreet::TestMech;
my $mech = FixMyStreet::TestMech->new;
$mech->get_ok('/my/planned');
is $mech->uri->path, '/auth', "got sent to the sign in page";
my $body = $mech->create_body_ok(2237, 'Oxfordshire County Council');
my ($problem) = $mech->create_problems_for_body(1, $body->id, 'Test Title');
$mech->get_ok($problem->url);
$mech->content_lacks('Shortlist');
$mech->content_lacks('Shortlisted');
my $user = $mech->log_in_ok( 'test@example.com' );
$user->update({ from_body => $body });
$user->user_body_permissions->find_or_create({
body => $body,
permission_type => 'planned_reports',
});
$mech->get_ok('/my/planned');
$mech->content_lacks('Test Title');
$user->add_to_planned_reports($problem);
$mech->get_ok('/my/planned');
$mech->content_contains('Test Title');
$user->remove_from_planned_reports($problem);
$mech->get_ok('/my/planned');
$mech->content_lacks('Test Title');
$user->add_to_planned_reports($problem);
$mech->get_ok('/my/planned');
$mech->content_contains('Test Title');
$mech->get_ok($problem->url);
$mech->text_contains('Shortlisted');
$mech->submit_form_ok({ with_fields => { 'shortlist-remove' => 1 } });
$mech->text_contains('Shortlist');
$mech->submit_form_ok({ with_fields => { 'shortlist-add' => 1 } });
$mech->text_contains('Shortlisted');
$mech->get_ok('/my/planned?sort=shortlist&ajax=1');
$mech->content_contains('shortlist-up');
$mech->content_contains('shortlist-down');
$mech->get_ok('/my/planned?sort=created-desc&ajax=1');
$mech->content_lacks('shortlist-up');
$mech->content_lacks('shortlist-down');
$mech->get_ok('/my/planned?ajax=1');
$mech->content_contains('shortlist-up');
$mech->content_contains('shortlist-down');
subtest "POSTing multiple problems to my/planned/change adds all to shortlist" => sub {
my ($problem1, $problem2, $problem3) = $mech->create_problems_for_body(3, $body->id, 'New Problem');
# Grab CSRF token
$mech->get_ok($problem1->url);
my ($csrf) = $mech->content =~ /meta content="([^"]*)" name="csrf-token"/;
$mech->post_ok( '/my/planned/change_multiple', {
'ids[]' => [
$problem1->id,
$problem2->id,
$problem3->id,
],
token => $csrf,
}
);
$mech->get_ok($problem1->url);
$mech->text_contains('Shortlisted');
$mech->get_ok($problem2->url);
$mech->text_contains('Shortlisted');
$mech->get_ok($problem3->url);
$mech->text_contains('Shortlisted');
};
done_testing();
END {
$mech->delete_user($user);
}
|