fix ticketing system error on bootstrap of new install
[freeside.git] / rt / t / web / dashboards-search-cache.t
1 use strict;
2 use warnings;
3
4 use RT::Test tests => 33;
5 my ($baseurl, $m) = RT::Test->started_ok;
6
7 my $url = $m->rt_base_url;
8
9 ok($m->login, 'logged in');
10
11 # create a search
12 $m->follow_link_ok({text => 'Tickets'}, 'to query builder');
13 $m->form_name('BuildQuery');
14
15 $m->field(ValueOfid => 10 );
16 $m->click('AddClause');
17 $m->text_contains( 'id < 10', 'added new clause');
18
19 $m->form_name('BuildQuery');
20 $m->field(SavedSearchDescription => 'Original Name');
21 $m->click('SavedSearchSave');
22
23 # create the inner dashboard
24 $m->get_ok("$url/Dashboards/Modify.html?Create=1");
25 $m->form_name('ModifyDashboard');
26 $m->field('Name' => 'inner dashboard');
27 $m->click_button(value => 'Create');
28 $m->text_contains('Saved dashboard inner dashboard');
29
30 my ($inner_id) = $m->content =~ /name="id" value="(\d+)"/;
31 ok($inner_id, "got an ID, $inner_id");
32
33 # create a dashboard
34 $m->get_ok("$url/Dashboards/Modify.html?Create=1");
35 $m->form_name('ModifyDashboard');
36 $m->field('Name' => 'cachey dashboard');
37 $m->click_button(value => 'Create');
38 $m->text_contains('Saved dashboard cachey dashboard');
39
40 my ($dashboard_id) = $m->content =~ /name="id" value="(\d+)"/;
41 ok($dashboard_id, "got an ID, $dashboard_id");
42
43 # add the search to the dashboard
44 $m->follow_link_ok({text => 'Content'});
45 my $form = $m->form_name('Dashboard-Searches-body');
46 my @input = $form->find_input('Searches-body-Available');
47 my ($search_value) =
48   map { ( $_->possible_values )[1] }
49   grep { ( $_->value_names )[1] =~ /Saved Search: Original Name/ } @input;
50 $form->value('Searches-body-Available' => $search_value );
51 $m->click_button(name => 'add');
52 $m->text_contains('Dashboard updated');
53
54 # add the dashboard to the dashboard
55 $m->follow_link_ok({text => 'Content'});
56 $form = $m->form_name('Dashboard-Searches-body');
57 @input = $form->find_input('Searches-body-Available');
58 my ($dashboard_value) =
59   map { ( $_->possible_values )[1] }
60   grep { ( $_->value_names )[1] =~ /Dashboard: inner dashboard/ } @input;
61 $form->value('Searches-body-Available' => $dashboard_value );
62 $m->click_button(name => 'add');
63 $m->text_contains('Dashboard updated');
64
65 # subscribe to the dashboard
66 $m->follow_link_ok({text => 'Subscription'});
67 $m->text_contains('Saved Search: Original Name');
68 $m->text_contains('Dashboard: inner dashboard');
69 $m->form_name('SubscribeDashboard');
70 $m->click_button(name => 'Save');
71 $m->text_contains('Subscribed to dashboard cachey dashboard');
72
73 # rename the search
74 $m->follow_link_ok({text => 'Tickets'}, 'to query builder');
75 $form = $m->form_name('BuildQuery');
76 @input = $form->find_input('SavedSearchLoad');
77 ($search_value) =
78   map { ( $_->possible_values )[1] }
79   grep { ( $_->value_names )[1] =~ /Original Name/ } @input;
80 $form->value('SavedSearchLoad' => $search_value );
81 $m->click_button(value => 'Load');
82 $m->text_contains('Loaded saved search "Original Name"');
83
84 $m->form_name('BuildQuery');
85 $m->field('SavedSearchDescription' => 'New Name');
86 $m->click_button(value => 'Update');
87 $m->text_contains('Updated saved search "New Name"');
88
89 # rename the dashboard
90 $m->get_ok("/Dashboards/Modify.html?id=$inner_id");
91 $m->form_name('ModifyDashboard');
92 $m->field('Name' => 'recursive dashboard');
93 $m->click_button(value => 'Save Changes');
94 $m->text_contains('Dashboard recursive dashboard updated');
95
96 # check subscription page again
97 $m->get_ok("/Dashboards/Subscription.html?id=$dashboard_id");
98 TODO: {
99     local $TODO = 'we cache search names too aggressively';
100     $m->text_contains('Saved Search: New Name');
101     $m->text_unlike(qr/Saved Search: Original Name/); # t-w-m lacks text_lacks
102
103     $m->text_contains('Dashboard: recursive dashboard');
104     $m->text_unlike(qr/Dashboard: inner dashboard/); # t-w-m lacks text_lacks
105 }
106
107 $m->get_ok("/Dashboards/Render.html?id=$dashboard_id");
108 $m->text_contains('New Name');
109 $m->text_unlike(qr/Original Name/); # t-w-m lacks text_lacks