Introduce Kalamar::Request

Change-Id: I0c21bf8521cebeedc95a4251d7abf074e30ca2a3
diff --git a/t/request.t b/t/request.t
new file mode 100644
index 0000000..4457048
--- /dev/null
+++ b/t/request.t
@@ -0,0 +1,77 @@
+use Mojolicious::Lite;
+use Test::More tests => 17;
+use Mojolicious::Controller;
+
+use_ok('Kalamar::Request');
+
+my $req = Kalamar::Request->new(
+  url => 'http://www.example.com',
+  method => 'POST',
+  controller => Mojolicious::Controller->new
+)->param('x', 'y');
+
+is($req->method, 'POST');
+is($req->url, 'http://www.example.com');
+ok($req->controller);
+is_deeply($req->param, ['x','y'], 'Compare');
+
+my $err;
+$req->start->catch(
+  sub {
+    $err = shift
+  })->finally(
+    sub {
+      is($err,'No useragent defined','Error');
+    })->wait;
+
+my $c = $req->controller;
+$c->app(app);
+ok($req->controller(undef),'Set controller');
+
+$req->start->catch(
+  sub {
+    $err = shift
+  })->finally(
+    sub {
+      is($err,'No controller defined','Error');
+    })->wait;
+
+ok($req->url(undef),'Set URL');
+
+$req->start->catch(
+  sub {
+    $err = shift
+  })->finally(
+    sub {
+      is($err,'No URL defined','Error');
+    })->wait;
+
+put '/test' => sub {
+  shift->render(text => 'Hallo')
+};
+
+# Set UA
+ok($req->ua(Mojo::UserAgent->new));
+$req->ua->server->app->log->level('fatal');
+ok($req->controller($c));
+ok($req->method('put'));
+ok($req->url('/test'));
+ok($req->param(undef));
+
+$err = undef;
+$req->start->then(
+  sub {
+    my $tx = shift;
+    is($tx->res->body,'Hallo');
+  })->catch(
+    sub {
+      $err = shift;
+    })->finally(
+      sub {
+        ok(!$err);
+      })->wait;
+
+done_testing;
+__END__
+
+1;