Bug 33227: Unit tests
authorTomas Cohen Arazi <tomascohen@theke.io>
Wed, 15 Mar 2023 14:14:19 +0000 (11:14 -0300)
committerTomas Cohen Arazi <tomascohen@theke.io>
Mon, 20 Mar 2023 12:39:49 +0000 (09:39 -0300)
This patch adds a unit test that launches the swagger-cli validator
against our spec.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
xt/api.t

index 1dd206f..0dc8dcc 100755 (executable)
--- a/xt/api.t
+++ b/xt/api.t
 
 use Modern::Perl;
 
-use Test::More tests => 2;
+use Test::More tests => 3;
 
 use Test::Mojo;
 use Data::Dumper;
 
+use FindBin();
+use IPC::Cmd qw(can_run);
+
 my $t    = Test::Mojo->new('Koha::REST::V1');
 my $spec = $t->get_ok( '/api/v1/', 'Correctly fetched the spec' )->tx->res->json;
 
@@ -75,3 +78,18 @@ foreach my $route ( keys %{$paths} ) {
 
 is( scalar @missing_additionalProperties, 0 )
   or diag Dumper \@missing_additionalProperties;
+
+subtest 'The spec passes the swagger-cli validation' => sub {
+
+    plan tests => 1;
+
+    SKIP: {
+        skip "Skipping tests, swagger-cli missing", 1
+          unless can_run('swagger-cli');
+
+        my $spec_dir = "$FindBin::Bin/../api/v1/swagger";
+        my $var      = qx{swagger-cli validate $spec_dir/swagger.yaml 2>&1};
+        is( $?, 0, 'Validation exit code is 0' )
+          or diag $var;
+    }
+};