Skip to content

Instantly share code, notes, and snippets.

@jberger
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jberger/72527a9702c2ed8b5e2f to your computer and use it in GitHub Desktop.
Save jberger/72527a9702c2ed8b5e2f to your computer and use it in GitHub Desktop.
package Test::Mojo::Role::Cookies;
use Mojo::Base -strict;
use Role::Tiny;
use Test::More ();
use Mojo::JSON::Pointer;
use Mojo::Util 'encode';
sub _controller {
my $t = shift;
my $c = $t->app->build_controller;
my $cookies = $t->tx->res->cookies;
$c->tx->req->cookies(map { {name => $_->name, value => $_->value} } @$cookies);
return $c;
}
sub session_is {
my $t = shift;
my ($p, $data) = @_ > 1 ? (shift, shift) : ('', shift);
my $desc = encode 'UTF-8', shift || qq{exact session match for JSON Pointer "$p"};
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $s = Test::More::is_deeply(Mojo::JSON::Pointer->new($t->_controller->session)->get($p), $data, $desc);
return $t->success($s);
}
sub session_has {
my ($t, $p, $desc) = @_;
$desc ||= encode 'UTF-8', qq{session has value for JSON Pointer "$p"};
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $s = Test::More::ok(Mojo::JSON::Pointer->new($t->_controller->session)->contains($p), $desc);
return $t->success($s);
}
sub session_hasnt {
my ($t, $p, $desc) = @_;
$desc ||= encode 'UTF-8', qq{session has no value for JSON Pointer "$p"};
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $s = Test::More::ok(!Mojo::JSON::Pointer->new($t->_controller->session)->contains($p), $desc);
return $t->success($s);
}
sub flash_is {
my $t = shift;
my ($p, $data) = @_ > 1 ? (shift, shift) : ('', shift);
my $desc = encode 'UTF-8', shift || qq{exact flash match for JSON Pointer "$p"};
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $s = Test::More::is_deeply(Mojo::JSON::Pointer->new($t->_controller->session->{flash})->get($p), $data, $desc);
return $t->success($s);
}
sub flash_has {
my ($t, $p, $desc) = @_;
$desc ||= encode 'UTF-8', qq{flash has value for JSON Pointer "$p"};
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $s = Test::More::ok(Mojo::JSON::Pointer->new($t->_controller->session->{flash})->contains($p), $desc);
return $t->success($s);
}
sub flash_hasnt {
my ($t, $p, $desc) = @_;
$desc ||= encode 'UTF-8', qq{flash has no value for JSON Pointer "$p"};
local $Test::Builder::Level = $Test::Builder::Level + 1;
my $s = Test::More::ok(!Mojo::JSON::Pointer->new($t->_controller->session->{flash})->contains($p), $desc);
return $t->success($s);
}
1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment