[libmagpie-perl] 08/30: Missing DBIC test.

Jonas Smedegaard dr at jones.dk
Wed Dec 6 00:56:39 UTC 2017


This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag debian/1.163200-1
in repository libmagpie-perl.

commit 46a6509484cd460a147b382b9632dbc4c504e973
Author: Kip Hampton <khampton at totalcinema.com>
Date:   Mon Nov 14 17:21:32 2016 -0800

    Missing DBIC test.
---
 t/dbic.t | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 108 insertions(+)

diff --git a/t/dbic.t b/t/dbic.t
new file mode 100644
index 0000000..9bdfef6
--- /dev/null
+++ b/t/dbic.t
@@ -0,0 +1,108 @@
+use strict;
+use warnings;
+use Test::More;
+use FindBin;
+use lib "$FindBin::Bin/lib";
+use lib "$FindBin::Bin/../lib";
+
+use Test::Requires qw{
+    DBIx::Class
+    DBD::SQLite
+};
+
+use Plack::Test;
+use Plack::Builder;
+use Plack::Middleware::Magpie;
+use Bread::Board;
+use HTTP::Request::Common;
+use Magpie::DBIC::Schema;
+
+my %user = (
+    name   => 'ubu',
+    status => 'dubious at best',
+);
+
+my $assets = container '' => as {
+    service 'somevar'   => 'some value';
+    service 'dbic_schema' => (
+        lifecycle => 'Singleton',
+        block     => sub {
+            my $s = shift;
+            my $schema = Magpie::DBIC::Schema->connect( "dbi:SQLite::memory:", create => 1, );
+            $schema->deploy();
+            return $schema;
+        },
+    );
+};
+
+my $handler = builder {
+    enable "Magpie",
+        assets   => $assets,
+        pipeline => [
+        machine {
+            match qr|/users| => [
+                'Magpie::Resource::DBIC' => {
+                    result_class => 'Magpie::DBIC::Schema::Result::User'
+                },
+                'Magpie::Transformer::JSON',
+            ];
+        }
+        ];
+};
+
+test_psgi
+    app    => $handler,
+    client => sub {
+    my $cb  = shift;
+    my $url = "http://localhost/users/";
+    my $created_url = undef;
+    {
+        my $res = $cb->( POST $url => \%user );
+        warn "RES: " . $res->content;
+
+        is $res->code, 201, "correct response code";
+        $created_url = $res->header('Location');
+        ok defined $created_url;
+    }
+    {
+        if ($created_url) {
+            my $res = $cb->( GET $created_url);
+            is $res->code, 200, "correct GET response.";
+            like $res->content, qr|ubu|, 'JSON serialized';
+        }
+        else {
+         fail "GET to follow-on URL failed."
+        }
+    }
+    {
+        if ($created_url) {
+            my $updated_user = { status => 'still dubious', name => 'roy' };
+            my $res = $cb->( POST $created_url, $updated_user);
+            is $res->code, 204, "correct POST update response.";
+
+            # refetch to make sure the update stuck
+            my $res2 = $cb->( GET $created_url);
+            is $res2->code, 200, "correct GET response.";
+            like $res2->content, qr|roy|, 'Updated JSON serialized';
+            warn $res2->content;
+        }
+        else {
+         fail "GET to follow-on URL failed."
+        }
+    }
+    {
+        if ($created_url) {
+            my $res = $cb->(HTTP::Request::Common::DELETE $created_url);
+            is $res->code, 204, "correct DELETE response.";
+
+            my $res2 = $cb->( GET $created_url);
+            is $res2->code, 404, "correct GET response for deleted entity.";
+            warn $res2->content;
+
+        }
+
+    }
+    };
+
+ok(1);
+done_testing;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmagpie-perl.git



More information about the Pkg-perl-cvs-commits mailing list