Bug 20254: Add tests for transport ingest
authorColin Campbell <colin.campbell@ptfs-europe.com>
Mon, 10 Dec 2018 12:57:50 +0000 (12:57 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 20 Aug 2019 14:04:26 +0000 (15:04 +0100)
Add test framework for Koha::Edifact::Transport
Add specific test that ingest does not duplicate
an existing filename

Signed-off-by: Mark Tompsett <mtompset@hotmail.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

t/EdiTransport.t [new file with mode: 0644]

diff --git a/t/EdiTransport.t b/t/EdiTransport.t
new file mode 100644 (file)
index 0000000..fb2442e
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+use Modern::Perl;
+use FindBin qw( $Bin );
+use Test::More;
+use Test::MockModule;
+use Module::Load::Conditional qw/check_install/;
+
+BEGIN {
+    if ( check_install( module => 'Test::DBIx::Class' ) ) {
+        plan tests => 5;
+    }
+    else {
+        plan skip_all => 'Need Test::DBIx::Class';
+    }
+
+}
+
+use Test::DBIx::Class;
+
+fixtures_ok [
+    VendorEdiAccount =>
+      [ [ 'id', 'description', 'transport' ], [ 1, 'test vendor', 'FILE' ], ],
+    EdifactMessage => [
+        [ 'message_type', 'filename',  'raw_msg' ],
+        [ 'TEST',         'duplicate', 'message_contents' ],
+    ],
+  ],
+  'add_fixtures';
+
+my $filename = 'QUOTES_413514.CEQ';
+
+my $db = Test::MockModule->new('Koha::Database');
+$db->mock( _new_schema => sub { return Schema(); } );
+
+use_ok('Koha::Edifact::Transport');
+
+my $trans = Koha::Edifact::Transport->new(1);
+
+isa_ok( $trans, 'Koha::Edifact::Transport' );
+
+$trans->working_directory("$Bin/edi_testfiles");
+
+my $mhash = $trans->message_hash();
+$mhash->{message_type} = 'TEST';    # set a bogus message type
+
+$trans->ingest( $mhash, $filename );
+
+my $cnt = ResultSet('EdifactMessage')->count();
+
+is( $cnt, 2, 'unique message name ingested' );
+
+$trans->ingest( $mhash, $filename );    # try a repeat ingest
+
+my $cnt2 = ResultSet('EdifactMessage')->count();
+
+is( $cnt2, 2, 'duplicate message name not ingested' );