X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Ft%2Fmail%2Fdashboard-chart-with-utf8.t;fp=rt%2Ft%2Fmail%2Fdashboard-chart-with-utf8.t;h=6d07b963b72fd38875a9ea4f16a369390f9b8965;hb=21a232b78413718d8a68867ba7eb4f52a287f9b6;hp=0000000000000000000000000000000000000000;hpb=c24d6e2242ae0e026684b8f95decf156aba6e75e;p=freeside.git diff --git a/rt/t/mail/dashboard-chart-with-utf8.t b/rt/t/mail/dashboard-chart-with-utf8.t new file mode 100644 index 000000000..6d07b963b --- /dev/null +++ b/rt/t/mail/dashboard-chart-with-utf8.t @@ -0,0 +1,82 @@ +use strict; +use warnings; + +use RT::Test tests => 15; +use utf8; + +my $root = RT::Test->load_or_create_user( Name => 'root' ); + +my ( $baseurl, $m ) = RT::Test->started_ok; +ok( $m->login, 'logged in' ); +my $ticket = RT::Ticket->new( $RT::SystemUser ); +$ticket->Create( + Queue => 'General', + Subject => 'test äöü', +); +ok( $ticket->id, 'created ticket' ); + +$m->get_ok(q{/Search/Chart.html?Query=Subject LIKE 'test äöü'}); +$m->submit_form( + form_name => 'SaveSearch', + fields => { + SavedSearchDescription => 'chart foo', + SavedSearchOwner => 'RT::User-' . $root->id, + }, + button => 'SavedSearchSave', +); + +# first, create and populate a dashboard +$m->get_ok('/Dashboards/Modify.html?Create=1'); +$m->form_name('ModifyDashboard'); +$m->field( 'Name' => 'dashboard foo' ); +$m->click_button( value => 'Create' ); + +$m->follow_link_ok( { text => 'Content' } ); +my $form = $m->form_name('Dashboard-Searches-body'); +my @input = $form->find_input('Searches-body-Available'); +my ($dashboards_component) = + map { ( $_->possible_values )[1] } + grep { ( $_->value_names )[1] =~ /^Chart/ } @input; +$form->value( 'Searches-body-Available' => $dashboards_component ); +$m->click_button( name => 'add' ); +$m->content_contains('Dashboard updated'); + +$m->follow_link_ok( { text => 'Subscription' } ); +$m->form_name('SubscribeDashboard'); +$m->field( 'Frequency' => 'daily' ); +$m->field( 'Hour' => '06:00' ); +$m->click_button( name => 'Save' ); +$m->content_contains('Subscribed to dashboard dashboard foo'); + +my $c = $m->get(q{/Search/Chart?Query=Subject LIKE 'test äöü'}); +my $image = $c->content; +RT::Test->run_and_capture( + command => $RT::SbinPath . '/rt-email-dashboards', all => 1 +); + +my @mails = RT::Test->fetch_caught_mails; +is @mails, 1, "got a dashboard mail"; + +# can't use parse_mail here is because it deletes all attachments +# before we can call bodyhandle :/ +use RT::EmailParser; +my $parser = RT::EmailParser->new; +my $mail = $parser->ParseMIMEEntityFromScalar( $mails[0] ); +like( + $mail->head->get('Subject'), + qr/Daily Dashboard: dashboard foo/, + 'mail subject' +); + +my ($mail_image) = grep { $_->mime_type eq 'image/png' } $mail->parts; +ok( $mail_image, 'mail contains image attachment' ); + +my $handle = $mail_image->bodyhandle; + +my $mail_image_data = ''; +if ( my $io = $handle->open('r') ) { + while ( defined( $_ = $io->getline ) ) { $mail_image_data .= $_ } + $io->close; +} +is( $mail_image_data, $image, 'image in mail is the same one in web' ); +