Email-MIME-MobileJP

 view release on metacpan or  search on metacpan

t/01_parse.t  view on Meta::CPAN

use strict;
use warnings;
use utf8;
use Test::More;
use Email::MIME::MobileJP::Parser;
use Email::MIME;
use Encode;
use MIME::Base64;
use Devel::Peek;

subtest 'single part' => sub {
    my $src = Email::MIME->create(
        header => [
            From => 'tomi...@docomo.ne.jp',
            To   => 'to@example.com',
            Subject =>
            Encode::encode( 'MIME-Header-ISO_2022_JP', 'コンニチワ' ),
        ],
        attributes => {
            content_type => 'text/plain',
            charset      => 'iso-2022-jp',
        },
        body => encode( 'iso-2022-jp', '元気でやってるかー?' ),
    );

    my $mail = Email::MIME::MobileJP::Parser->new($src->as_string);

    subtest 'subject' => sub {
        is $mail->subject(), 'コンニチワ';
        ok Encode::is_utf8($mail->subject), 'decoded';
    };

    subtest 'carrier' => sub {
        isa_ok $mail->carrier, 'Email::Address::JP::Mobile::DoCoMo';
        is $mail->carrier->name, 'DoCoMo';
    };

    subtest 'get_texts' => sub {
        my @texts = $mail->get_texts();
        is scalar(@texts), 1;
        is $texts[0], '元気でやってるかー?';
        ok Encode::is_utf8($texts[0]);
    };
};

subtest 'multi part' => sub {
    my $src = Email::MIME->create(
        'header' => [
            'From'    => encode( 'MIME-Header-ISO_2022_JP', 'foo.@docomo.ne.jp' ),
            'To'      => encode( 'MIME-Header-ISO_2022_JP', 'foo@example.com' ),
            'Subject' => encode( 'MIME-Header-ISO_2022_JP', "おこんちわ" ),
        ],
        parts => [
            Email::MIME->create(
                'attributes' => {
                    'content_type' => 'text/plain',
                    'charset'      => 'ISO-2022-JP',
                    'encoding'     => '7bit',
                },
                'body' => Encode::encode( 'iso-2022-jp', "やっほ" ),
            ),
            Email::MIME->create(
                'attributes' => {
                    'fimename'     => 'hoge.jpg',
                    'content_type' => 'image/jpeg',
                    'encoding'     => 'base64',
                    'name'         => 'sample.jpg',
                },
                'body' => 'JFIF(ry',
            ),
        ],
    );
    note $src->as_string;

    my $mail = Email::MIME::MobileJP::Parser->new($src->as_string);

    subtest 'get_texts' => sub {
        my @texts = $mail->get_texts();
        is scalar(@texts), 1;
        is($texts[0], "やっほ") or do {
            Dump($texts[0]);
            Dump("やっほ");
        };
        ok Encode::is_utf8($texts[0]);
    };

    subtest 'get_parts' => sub {
        my @parts = $mail->get_parts(qr{^image/(gif|png|jpeg)});
        is scalar(@parts), 1;
        is $parts[0]->content_type, 'image/jpeg; name="sample.jpg"';



( run in 0.775 second using v1.01-cache-2.11-cpan-2c0d6866c4f )