| 
      
            Lines 36-41
          use Koha::Biblioitem;
      
      
        Link Here
      
     | 
  
        
          | 36 | 
          use Koha::Exporter::Record;  | 
          36 | 
          use Koha::Exporter::Record;  | 
        
        
          | 37 | 
          use Koha::Biblio::Metadatas;  | 
          37 | 
          use Koha::Biblio::Metadatas;  | 
        
        
          | 38 | 
           | 
          38 | 
           | 
        
            
               | 
               | 
              39 | 
              use t::lib::TestBuilder;  | 
            
            
              | 40 | 
               | 
            
            
              | 41 | 
              my $builder = t::lib::TestBuilder->new;  | 
            
            
              | 42 | 
               | 
            
        
          | 39 | 
          my $schema  = Koha::Database->new->schema;  | 
          43 | 
          my $schema  = Koha::Database->new->schema;  | 
        
        
          | 40 | 
          $schema->storage->txn_begin;  | 
          44 | 
          $schema->storage->txn_begin;  | 
        
        
          | 41 | 
           | 
          45 | 
           | 
        
  
    | 
      
            Lines 43-68
          my $dbh = C4::Context->dbh;
      
      
        Link Here
      
     | 
  
        
          | 43 | 
           | 
          47 | 
           | 
        
        
          | 44 | 
          my $biblio_1_title = 'Silence in the library';  | 
          48 | 
          my $biblio_1_title = 'Silence in the library';  | 
        
        
          | 45 | 
          my $biblio_2_title = 'The art of computer programming ກ ຂ ຄ ງ ຈ ຊ ຍ é';  | 
          49 | 
          my $biblio_2_title = 'The art of computer programming ກ ຂ ຄ ງ ຈ ຊ ຍ é';  | 
        
          
            
              | 46 | 
              my $biblio_1 = MARC::Record->new();  | 
              50 | 
              my $biblio_1 = $builder->build_sample_biblio(  | 
            
            
              | 47 | 
              $biblio_1->leader('00266nam a22001097a 4500'); | 
              51 | 
                  { | 
            
            
              | 48 | 
              $biblio_1->append_fields(  | 
              52 | 
                      title => $biblio_1_title,  | 
            
            
              | 49 | 
                  MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'), | 
              53 | 
                      author => 'Moffat, Steven',  | 
            
            
              | 50 | 
                  MARC::Field->new('245', ' ', ' ', a => $biblio_1_title), | 
              54 | 
                  }  | 
            
        
          | 51 | 
          );  | 
          55 | 
          );  | 
        
          
            
              | 52 | 
              my ($biblionumber_1, $biblioitemnumber_1) = AddBiblio($biblio_1, '');  | 
              56 | 
              my $biblionumber_1 = $biblio_1->biblionumber;  | 
            
            
              | 53 | 
              my $biblio_2 = MARC::Record->new();  | 
              57 | 
              my $biblio_2 = $builder->build_sample_biblio(  | 
            
            
              | 54 | 
              $biblio_2->leader('00266nam a22001097a 4500'); | 
              58 | 
                  { | 
            
            
              | 55 | 
              $biblio_2->append_fields(  | 
              59 | 
                      title => $biblio_2_title,  | 
            
            
              | 56 | 
                  MARC::Field->new('100', ' ', ' ', a => 'Knuth, Donald Ervin'), | 
              60 | 
                      author => 'Knuth, Donald Ervin',  | 
            
            
              | 57 | 
                  MARC::Field->new('245', ' ', ' ', a => $biblio_2_title), | 
              61 | 
                  }  | 
            
        
          | 58 | 
          );  | 
          62 | 
          );  | 
        
          
            
              | 59 | 
              my ($biblionumber_2, $biblioitemnumber_2) = AddBiblio($biblio_2, '');  | 
              63 | 
              my $biblionumber_2 = $biblio_2->biblionumber;  | 
            
            
               | 
               | 
              64 | 
               | 
            
            
              | 65 | 
              my $marcflavour = C4::Context->preference('marcflavour'); | 
            
            
              | 66 | 
              my ($title_field_tag, $item_field_tag, $barcode_subfield_code, $homebranch_subfield_code);  | 
            
            
              | 67 | 
              if ($marcflavour eq 'UNIMARC') { | 
            
            
              | 68 | 
                  $title_field_tag = '200';  | 
            
            
              | 69 | 
                  $item_field_tag = '995';  | 
            
            
              | 70 | 
                  $barcode_subfield_code = 'f';  | 
            
            
              | 71 | 
                  $homebranch_subfield_code = 'b';  | 
            
            
              | 72 | 
              } else { | 
            
            
              | 73 | 
                  $title_field_tag = '245';  | 
            
            
              | 74 | 
                  $item_field_tag = '952';  | 
            
            
              | 75 | 
                  $barcode_subfield_code = 'p';  | 
            
            
              | 76 | 
                  $homebranch_subfield_code = 'a';  | 
            
            
              | 77 | 
              }  | 
            
        
          | 60 | 
           | 
          78 | 
           | 
        
        
          | 61 | 
          my $bad_biblio = Koha::Biblio->new()->store();  | 
          79 | 
          my $bad_biblio = Koha::Biblio->new()->store();  | 
        
          
            
              | 62 | 
              Koha::Biblio::Metadata->new( { biblionumber => $bad_biblio->id, format => 'marcxml', metadata => 'something wrong', schema => C4::Context->preference('marcflavour') } )->store(); | 
              80 | 
              Koha::Biblio::Metadata->new( { biblionumber => $bad_biblio->id, format => 'marcxml', metadata => 'something wrong', schema => $marcflavour } )->store(); | 
            
        
          | 63 | 
          my $bad_biblionumber = $bad_biblio->id;  | 
          81 | 
          my $bad_biblionumber = $bad_biblio->id;  | 
        
        
          | 64 | 
           | 
          82 | 
           | 
        
            
              | 65 | 
              my $builder = t::lib::TestBuilder->new;  | 
               | 
               | 
            
        
          | 66 | 
          my $item_1_1 = $builder->build_sample_item(  | 
          83 | 
          my $item_1_1 = $builder->build_sample_item(  | 
        
        
          | 67 | 
              { | 
          84 | 
              { | 
        
        
          | 68 | 
                  biblionumber => $biblionumber_1,  | 
          85 | 
                  biblionumber => $biblionumber_1,  | 
        
  
    | 
      
            Lines 87-93
          my $bad_item = $builder->build({ # Cannot call build_sample_item, we want incons
      
      
        Link Here
      
     | 
  
        
          | 87 | 
           | 
          104 | 
           | 
        
        
          | 88 | 
          subtest 'export csv' => sub { | 
          105 | 
          subtest 'export csv' => sub { | 
        
        
          | 89 | 
              plan tests => 3;  | 
          106 | 
              plan tests => 3;  | 
        
          
            
              | 90 | 
                  my $csv_content = q{Title=245$a|Barcode=952$p}; | 
              107 | 
                  my $csv_content = "Title=$title_field_tag\$a|Barcode=$item_field_tag\$$barcode_subfield_code";  | 
            
        
          | 91 | 
              $dbh->do(q|INSERT INTO export_format(profile, description, content, csv_separator, field_separator, subfield_separator, encoding, type) VALUES (?, ?, ?, ?, ?, ?, ?, ?)|, {}, "TEST_PROFILE_Records.t", "my useless desc", $csv_content, '|', ';', ',', 'utf8', 'marc'); | 
          108 | 
              $dbh->do(q|INSERT INTO export_format(profile, description, content, csv_separator, field_separator, subfield_separator, encoding, type) VALUES (?, ?, ?, ?, ?, ?, ?, ?)|, {}, "TEST_PROFILE_Records.t", "my useless desc", $csv_content, '|', ';', ',', 'utf8', 'marc'); | 
        
        
          | 92 | 
              my $csv_profile_id = $dbh->last_insert_id( undef, undef, 'export_format', undef );  | 
          109 | 
              my $csv_profile_id = $dbh->last_insert_id( undef, undef, 'export_format', undef );  | 
        
        
          | 93 | 
              my $generated_csv_file = '/tmp/test_export_1.csv';  | 
          110 | 
              my $generated_csv_file = '/tmp/test_export_1.csv';  | 
        
  
    | 
      
            Lines 160-166
          subtest 'export xml' => sub {
      
      
        Link Here
      
     | 
  
        
          | 160 | 
              }  | 
          177 | 
              }  | 
        
        
          | 161 | 
              is( scalar( @records ), 2, 'Export XML: 2 records should have been exported' );  | 
          178 | 
              is( scalar( @records ), 2, 'Export XML: 2 records should have been exported' );  | 
        
        
          | 162 | 
              my $second_record = $records[1];  | 
          179 | 
              my $second_record = $records[1];  | 
        
          
            
              | 163 | 
                  my $title = $second_record->subfield(245, 'a');  | 
              180 | 
                  my $title = $second_record->subfield($title_field_tag, 'a');  | 
            
        
          | 164 | 
              $title = Encode::encode('UTF-8', $title); | 
          181 | 
              $title = Encode::encode('UTF-8', $title); | 
        
        
          | 165 | 
              is( $title, $biblio_2_title, 'Export XML: The title is correctly encoded' );  | 
          182 | 
              is( $title, $biblio_2_title, 'Export XML: The title is correctly encoded' );  | 
        
        
          | 166 | 
          };  | 
          183 | 
          };  | 
        
  
    | 
      
            Lines 187-193
          subtest 'export iso2709' => sub {
      
      
        Link Here
      
     | 
  
        
          | 187 | 
              }  | 
          204 | 
              }  | 
        
        
          | 188 | 
              is( scalar( @records ), 2, 'Export ISO2709: 2 records should have been exported' );  | 
          205 | 
              is( scalar( @records ), 2, 'Export ISO2709: 2 records should have been exported' );  | 
        
        
          | 189 | 
              my $second_record = $records[1];  | 
          206 | 
              my $second_record = $records[1];  | 
        
          
            
              | 190 | 
                  my $title = $second_record->subfield(245, 'a');  | 
              207 | 
                  my $title = $second_record->subfield($title_field_tag, 'a');  | 
            
        
          | 191 | 
              $title = Encode::encode('UTF-8', $title); | 
          208 | 
              $title = Encode::encode('UTF-8', $title); | 
        
        
          | 192 | 
              is( $title, $biblio_2_title, 'Export ISO2709: The title is correctly encoded' );  | 
          209 | 
              is( $title, $biblio_2_title, 'Export ISO2709: The title is correctly encoded' );  | 
        
        
          | 193 | 
          };  | 
          210 | 
          };  | 
        
  
    | 
      
            Lines 207-219
          subtest 'export without record_type' => sub {
      
      
        Link Here
      
     | 
  
        
          | 207 | 
          subtest '_get_biblio_for_export' => sub { | 
          224 | 
          subtest '_get_biblio_for_export' => sub { | 
        
        
          | 208 | 
              plan tests => 4;  | 
          225 | 
              plan tests => 4;  | 
        
        
          | 209 | 
           | 
          226 | 
           | 
        
          
            
              | 210 | 
                  my $biblio = MARC::Record->new();  | 
              227 | 
                  my $biblio = $builder->build_sample_biblio(  | 
            
            
              | 211 | 
                  $biblio->leader('00266nam a22001097a 4500'); | 
              228 | 
                      { | 
            
            
              | 212 | 
                  $biblio->append_fields(  | 
              229 | 
                          title => 'The 13 Clocks',  | 
            
            
              | 213 | 
                      MARC::Field->new( '100', ' ', ' ', a => 'Thurber, James' ),  | 
              230 | 
                          author => 'Thurber, James',  | 
            
            
              | 214 | 
                      MARC::Field->new( '245', ' ', ' ', a => "The 13 Clocks" ),  | 
              231 | 
                      }  | 
            
        
          | 215 | 
              );  | 
          232 | 
              );  | 
        
          
            
              | 216 | 
                  my ( $biblionumber, $biblioitemnumber ) = AddBiblio( $biblio, '' );  | 
              233 | 
                  my $biblionumber = $biblio->biblionumber;  | 
            
        
          | 217 | 
              my $branch_a = $builder->build({source => 'Branch',}); | 
          234 | 
              my $branch_a = $builder->build({source => 'Branch',}); | 
        
        
          | 218 | 
              my $branch_b = $builder->build({source => 'Branch',}); | 
          235 | 
              my $branch_b = $builder->build({source => 'Branch',}); | 
        
        
          | 219 | 
              my $item_branch_a = $builder->build_sample_item(  | 
          236 | 
              my $item_branch_a = $builder->build_sample_item(  | 
        
  
    | 
      
            Lines 236-242
          subtest '_get_biblio_for_export' => sub {
      
      
        Link Here
      
     | 
  
        
          | 236 | 
                      only_export_items_for_branches => undef  | 
          253 | 
                      only_export_items_for_branches => undef  | 
        
        
          | 237 | 
                  }  | 
          254 | 
                  }  | 
        
        
          | 238 | 
              );  | 
          255 | 
              );  | 
        
          
            
              | 239 | 
                  my @items = $record->field('952'); | 
              256 | 
                  my @items = $record->field($item_field_tag);  | 
            
        
          | 240 | 
              is( scalar @items, 2, "We should retrieve all items if we don't pass specific branches and request items" );  | 
          257 | 
              is( scalar @items, 2, "We should retrieve all items if we don't pass specific branches and request items" );  | 
        
        
          | 241 | 
           | 
          258 | 
           | 
        
        
          | 242 | 
              $record = Koha::Exporter::Record::_get_biblio_for_export(  | 
          259 | 
              $record = Koha::Exporter::Record::_get_biblio_for_export(  | 
        
  
    | 
      
            Lines 246-255
          subtest '_get_biblio_for_export' => sub {
      
      
        Link Here
      
     | 
  
        
          | 246 | 
                      only_export_items_for_branches => [ $branch_b->{branchcode} ] | 
          263 | 
                      only_export_items_for_branches => [ $branch_b->{branchcode} ] | 
        
        
          | 247 | 
                  }  | 
          264 | 
                  }  | 
        
        
          | 248 | 
              );  | 
          265 | 
              );  | 
        
          
            
              | 249 | 
                  @items = $record->field('952'); | 
              266 | 
                  @items = $record->field($item_field_tag);  | 
            
        
          | 250 | 
              is( scalar @items, 1, "We should retrieve only item for branch_b item if we request items and pass branch" );  | 
          267 | 
              is( scalar @items, 1, "We should retrieve only item for branch_b item if we request items and pass branch" );  | 
        
        
          | 251 | 
              is(  | 
          268 | 
              is(  | 
        
          
            
              | 252 | 
                      $items[0]->subfield('a'), | 
              269 | 
                      $items[0]->subfield($homebranch_subfield_code),  | 
            
        
          | 253 | 
                  $branch_b->{branchcode}, | 
          270 | 
                  $branch_b->{branchcode}, | 
        
        
          | 254 | 
                  "And the homebranch for that item should be branch_b branchcode"  | 
          271 | 
                  "And the homebranch for that item should be branch_b branchcode"  | 
        
        
          | 255 | 
              );  | 
          272 | 
              );  | 
        
  
    | 
      
            Lines 261-267
          subtest '_get_biblio_for_export' => sub {
      
      
        Link Here
      
     | 
  
        
          | 261 | 
                      only_export_items_for_branches => [ $branch_b->{branchcode} ] | 
          278 | 
                      only_export_items_for_branches => [ $branch_b->{branchcode} ] | 
        
        
          | 262 | 
                  }  | 
          279 | 
                  }  | 
        
        
          | 263 | 
              );  | 
          280 | 
              );  | 
        
          
            
              | 264 | 
                  @items = $record->field('952'); | 
              281 | 
                  @items = $record->field($item_field_tag);  | 
            
        
          | 265 | 
              is( scalar @items, 0, "We should not have any items if we don't request items and pass a branch");  | 
          282 | 
              is( scalar @items, 0, "We should not have any items if we don't request items and pass a branch");  | 
        
        
          | 266 | 
           | 
          283 | 
           | 
        
        
          | 267 | 
          };  | 
          284 | 
          };  | 
        
  
    | 
      
            Lines 269-285
          subtest '_get_biblio_for_export' => sub {
      
      
        Link Here
      
     | 
  
        
          | 269 | 
          subtest '_get_record_for_export MARC field conditions' => sub { | 
          286 | 
          subtest '_get_record_for_export MARC field conditions' => sub { | 
        
        
          | 270 | 
              plan tests => 11;  | 
          287 | 
              plan tests => 11;  | 
        
        
          | 271 | 
           | 
          288 | 
           | 
        
          
            
              | 272 | 
                  my $biblio = MARC::Record->new();  | 
              289 | 
                  my $biblio = $builder->build_sample_biblio(  | 
            
            
              | 273 | 
                  $biblio->leader('00266nam a22001097a 4500'); | 
              290 | 
                      { | 
            
            
              | 274 | 
                  $biblio->append_fields(  | 
              291 | 
                          title => 'The 13 Clocks',  | 
            
            
              | 275 | 
                      MARC::Field->new( '100', ' ', ' ', a => 'Thurber, James' ),  | 
              292 | 
                          author => 'Thurber, James',  | 
            
            
              | 276 | 
                      MARC::Field->new( '245', ' ', ' ', a => 'The 13 Clocks' ),  | 
              293 | 
                      }  | 
            
            
               | 
               | 
              294 | 
                  );  | 
            
            
              | 295 | 
                  my $record = $biblio->metadata->record;  | 
            
            
              | 296 | 
                  $record->append_fields(  | 
            
        
          | 277 | 
                  MARC::Field->new( '080', ' ', ' ', a => '12345' ),  | 
          297 | 
                  MARC::Field->new( '080', ' ', ' ', a => '12345' ),  | 
        
        
          | 278 | 
                  MARC::Field->new( '035', ' ', ' ', a => '(TEST)123' ),  | 
          298 | 
                  MARC::Field->new( '035', ' ', ' ', a => '(TEST)123' ),  | 
        
        
          | 279 | 
                  MARC::Field->new( '035', ' ', ' ', a => '(TEST)1234' ),  | 
          299 | 
                  MARC::Field->new( '035', ' ', ' ', a => '(TEST)1234' ),  | 
        
        
          | 280 | 
              );  | 
          300 | 
              );  | 
        
          
            
              | 281 | 
                  my ( $biblionumber ) = AddBiblio( $biblio, '' );  | 
              301 | 
                  $biblio->metadata->metadata($record->as_xml)->store;  | 
            
            
              | 282 | 
                  my $record;  | 
              302 | 
                  my $biblionumber = $biblio->biblionumber;  | 
            
        
          | 283 | 
           | 
          303 | 
           | 
        
        
          | 284 | 
              $record = Koha::Exporter::Record::_get_record_for_export(  | 
          304 | 
              $record = Koha::Exporter::Record::_get_record_for_export(  | 
        
        
          | 285 | 
                  { | 
          305 | 
                  { |