#!/usr/bin/perl use strict; use warnings; use Test::More 'no_plan'; use ok 'Mail::Summary::Tools::FlatFile'; use Mail::Summary::Tools::Summary; my $summary = Mail::Summary::Tools::Summary->new( lists => [ Mail::Summary::Tools::Summary::List->new( name => "list1", threads => [ Mail::Summary::Tools::Summary::Thread->new( message_id => 'unique1@example.com', subject => "Moose droppings", extra => { posters => [ { name => "User 1", email => 'foo@example.com' } ], }, default_archive => "gmane", ), Mail::Summary::Tools::Summary::Thread->new( message_id => 'unique2@example.com', subject => "Moose drool", default_archive => "gmane", summary => "This is a summary", ), ], ), Mail::Summary::Tools::Summary::List->new( name => "list2", threads => [ Mail::Summary::Tools::Summary::Thread->new( message_id => 'unique3@example.com', subject => "Moose nuts", default_archive => "gmane", ), ], ), ], ); my $flat = Mail::Summary::Tools::FlatFile->new( summary => $summary ); { my $res = $flat->save; $res =~ s/^#.*$//mg; like( $res, qr/---/, "contains separators" ); is( scalar(grep { length } split /\s*\n---\n\s*/, $res ), 3, "three threads" ); like( $res, qr/unique1\@example.com/, "refers to message IDs" ); like( $res, qr/This is a summary/, "contains summary of second thread" ); } $flat->skip_summarized(1); { my $res = $flat->save; $res =~ s/^#.*$//mg; is( scalar(grep { length } split /\s*\n---\n\s*/, $res ), 2, "just two threads" ); unlike( $res, qr/This is a summary/, "doesn't contain summary" ); }