From 5bc4f40bf74e737b113b036faebf010cbe83d06a Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 24 Jan 2011 20:32:27 -0600 Subject: some simple tests --- t/01-basic.t | 79 ++++++++++++++++++++++++++++++++++++++++++++ t/data/01/templates/foo.tt | 1 + t/data/01/templates/index.tt | 1 + 3 files changed, 81 insertions(+) create mode 100644 t/01-basic.t create mode 100644 t/data/01/templates/foo.tt create mode 100644 t/data/01/templates/index.tt diff --git a/t/01-basic.t b/t/01-basic.t new file mode 100644 index 0000000..87ad77b --- /dev/null +++ b/t/01-basic.t @@ -0,0 +1,79 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Plack::Test; +use FindBin; + +use HTTP::Request::Common; +use Path::Class (); + +{ + package Foo::Controller; + use Moose; + + has view => ( + is => 'ro', + isa => 'OX::View::TT', + required => 1, + handles => ['render'], + ); + + our $AUTOLOAD; + sub AUTOLOAD { + my $self = shift; + my ($r) = @_; + (my $template = $AUTOLOAD) =~ s/.*:://; + $template .= '.tt'; + my $defaults = $r->env->{'plack.router.match'}->route->defaults; + $self->render($r, $template, $defaults); + } +} + +{ + package Foo; + use OX; + + config template_root => sub { + Path::Class::dir($FindBin::Bin)->subdir('data', '01', 'templates') + }; + + component View => 'OX::View::TT', ( + template_root => depends_on('/Config/template_root'), + ); + + component Controller => 'Foo::Controller', ( + view => depends_on('/Component/View'), + ); + + router as { + route '/' => 'root.index', ( + content => 'Hello world', + ); + route '/foo' => 'root.foo'; + }, (root => depends_on('/Component/Controller')); +} + +my $foo = Foo->new; +my $view = $foo->resolve(service => '/Component/View'); +isa_ok($view, 'OX::View::TT'); +isa_ok($view->tt, 'Template'); + +test_psgi + app => $foo->to_app, + client => sub { + my $cb = shift; + + { + my $res = $cb->(GET 'http://localhost/'); + is($res->code, 200, "right code"); + is($res->content, "Hello world\n", "right content"); + } + { + my $res = $cb->(GET 'http://localhost/foo'); + is($res->code, 200, "right code"); + is($res->content, "

/foo

\n", "right content"); + } + }; + +done_testing; diff --git a/t/data/01/templates/foo.tt b/t/data/01/templates/foo.tt new file mode 100644 index 0000000..8bd1950 --- /dev/null +++ b/t/data/01/templates/foo.tt @@ -0,0 +1 @@ +

[% r.path_info %]

diff --git a/t/data/01/templates/index.tt b/t/data/01/templates/index.tt new file mode 100644 index 0000000..d9df92b --- /dev/null +++ b/t/data/01/templates/index.tt @@ -0,0 +1 @@ +[% content %] -- cgit v1.2.3-54-g00ecf