]> Dogcows Code - chaz/graphql-client/blobdiff - t/lib/MockUA.pm
add tests and many fixes
[chaz/graphql-client] / t / lib / MockUA.pm
diff --git a/t/lib/MockUA.pm b/t/lib/MockUA.pm
new file mode 100644 (file)
index 0000000..3ee2d70
--- /dev/null
@@ -0,0 +1,48 @@
+package MockUA;
+# ABSTRACT: HTTP::AnyUA backend for testing GraphQL::Client::http
+
+use warnings;
+use strict;
+
+use Scalar::Util qw(blessed);
+use namespace::clean;
+
+use parent 'HTTP::AnyUA::Backend';
+
+=method response
+
+    $response = $backend->response;
+    $response = $backend->response($response);
+
+Get and set the response hashref or L<Future> that this backend will always respond with.
+
+=cut
+
+sub response { @_ == 2 ? $_[0]->{response} = pop : $_[0]->{response} }
+
+=method requests
+
+    @requests = $backend->requests;
+
+Get the requests the backend has handled so far.
+
+=cut
+
+sub requests { @{$_[0]->{requests} || []} }
+
+sub response_is_future { blessed($_[0]->{response}) && $_[0]->{response}->isa('Future') }
+
+sub request {
+    my $self = shift;
+
+    push @{$self->{requests} ||= []}, [@_];
+
+    return $self->response || {
+        success => '',
+        status  => 599,
+        reason  => 'Internal Exception',
+        content => "No response mocked.\n",
+    };
+}
+
+1;
This page took 0.019438 seconds and 4 git commands to generate.