Amon2-Plugin-Web-Flash

 view release on metacpan or  search on metacpan

t/02_flash.t  view on Meta::CPAN

    get '/now' => sub {
        my $c = shift;
        $session_id = $c->session->{session_id};
        $c->flash_now(peach => "Peach");
        $c->render('index.tx', +{
            flash => $c->flash,
        });
    };

    get '/discard' => sub {
        my $c = shift;
        $session_id = $c->session->{session_id};
        $c->flash_now(honey => "Honey");
        $c->flash_now(apple => "Apple");
        $c->flash_discard('honey');
        $c->render('index.tx', +{
            flash => $c->flash,
        });
    };

    get '/discard_all' => sub {
        my $c = shift;
        $session_id = $c->session->{session_id};
        $c->flash_now(honey => "Honey");
        $c->flash_now(apple => "Apple");
        $c->flash_discard;
        $c->render('index.tx', +{
            flash => $c->flash,
        });
    };

    get '/keep' => sub {
        my $c = shift;
        $session_id = $c->session->{session_id};
        $c->flash_keep('honey');
        $c->render('index.tx', +{
            flash => $c->flash,
        });
    };

    get '/keep_all' => sub {
        my $c = shift;
        $session_id = $c->session->{session_id};
        $c->flash_now(honey => "Honey");
        $c->flash_keep;
        $c->render('index.tx', +{
            flash => $c->flash,
        });
    };

    __PACKAGE__->to_app;
};

sub deftest($&) {
    my ($desc, $sub) = @_;
    subtest $desc => sub {
        test_psgi(
            app => $app,
            client => sub {
                my $cb = shift;
                $cb->(HTTP::Request->new(GET => "http://localhost/session")); # set session_id
                $sub->($cb);
                done_testing;
            }
        );
    };
}

sub request {
    my ($cb, $action) = @_;

    my $res = $cb->(HTTP::Request->new(GET => "http://localhost/$action?$session_key=$session_id"));
    note $res->content;
    return $res->content;
}

##### Tests starts here ####

deftest 'set and get and turn' => sub {
    my $cb = shift;
    unlike request($cb, 'set'), qr/honey is Honey/;
    like request($cb, 'use'), qr/honey is Honey/;
    unlike request($cb, 'use'), qr/honey is Honey/;
};

deftest 'now' => sub {
    my $cb = shift;
    like request($cb, 'now'), qr/peach is Peach/;
};

deftest 'discard' => sub {
    my $cb = shift;
    my $content = request($cb, 'discard');
    unlike $content, qr/honey is Honey/;
    like $content, qr/apple is Apple/;
};

deftest 'discard_all' => sub {
    my $cb = shift;
    my $content = request($cb, 'discard_all');
    unlike $content, qr/honey is Honey/;
    unlike $content, qr/apple is Apple/;
};

deftest 'keep' => sub {
    my $cb = shift;
    request($cb, 'set');
    request($cb, 'keep');
    my $content = request($cb, 'use');
    like $content, qr/honey is Honey/;
    unlike $content, qr/apple is Apple/;
};

deftest 'keep_all' => sub {
    my $cb = shift;
    request($cb, 'set');
    request($cb, 'keep_all');
    my $content = request($cb, 'use');
    like $content, qr/honey is Honey/;
    like $content, qr/apple is Apple/;
    $content = request($cb, 'use');
    unlike $content, qr/honey is Honey/;
    unlike $content, qr/apple is Apple/;
};

done_testing;

package MyApp::Web;
__DATA__

@@ index.tx
: for $flash.keys() -> $k {



( run in 0.928 second using v1.01-cache-2.11-cpan-6aa56a78535 )