View | Details | Raw Unified | Return to bug 39190
Collapse All | Expand All

(-)a/t/db_dependent/TestBuilder.t (-15 / +63 lines)
Lines 491-513 subtest 'build_object() tests' => sub { Link Here
491
            $module =~ s|^.*/(Koha.*)\.pm$|$1|;
491
            $module =~ s|^.*/(Koha.*)\.pm$|$1|;
492
            $module =~ s|/|::|g;
492
            $module =~ s|/|::|g;
493
            next if $module eq 'Koha::Objects';
493
            next if $module eq 'Koha::Objects';
494
494
            eval "require $module";
495
            eval "require $module";
495
            my $object = $builder->build_object( { class => $module } );
496
            is( ref($object), $module->object_class, "Testing $module" );
497
496
498
            if ( !grep { $module eq $_ } qw( Koha::Old::Patrons Koha::Statistics ) )
497
            # Check if this is a polymorphic class
499
            {    # FIXME deletedborrowers and statistics do not have a PK
498
            my $is_polymorphic = $module->can('_polymorphic_field') && $module->can('_polymorphic_map');
500
                eval { $object->get_from_storage };
499
501
                is( $@, '', "Module $module should have koha_object[s]_class method if needed" );
500
            if ($is_polymorphic) {
501
502
                # Test each concrete implementation
503
                my $polymorphic_field = $module->_polymorphic_field();
504
                my $polymorphic_map   = $module->_polymorphic_map();
505
506
                foreach my $type_value ( keys %$polymorphic_map ) {
507
                    my $expected_class = $polymorphic_map->{$type_value};
508
509
                    # Create an object of this type
510
                    my $object = $builder->build_object(
511
                        {
512
                            class => $module,
513
                            value => { $polymorphic_field => $type_value }
514
                        }
515
                    );
516
517
                    is(
518
                        ref($object), $expected_class,
519
                        "Testing polymorphic $module with $polymorphic_field=$type_value"
520
                    );
521
522
                    # Do the storage test
523
                    if ( !grep { $module eq $_ } qw(Koha::Old::Patrons Koha::Statistics) ) {
524
                        eval { $object->get_from_storage };
525
                        is(
526
                            $@, '',
527
                            "Module $module with $polymorphic_field=$type_value should have koha_object[s]_class method if needed"
528
                        );
529
                    }
530
531
                    # Test class loading
532
                    my $object_class = Koha::Object::_get_object_class( $object->_result->result_class );
533
                    eval "require $object_class";
534
                    is( $@, '', "Module $object_class should be defined" );
535
536
                    my $objects_class = Koha::Objects::_get_objects_class( $object->_result->result_class );
537
                    eval "require $objects_class";
538
                    is( $@, '', "Module $objects_class should be defined" );
539
                }
540
            } else {
541
542
                # Regular class
543
                my $object = $builder->build_object( { class => $module } );
544
                is( ref($object), $module->object_class, "Testing $module" );
545
546
                if ( !grep { $module eq $_ } qw( Koha::Old::Patrons Koha::Statistics ) )
547
                {    # FIXME deletedborrowers and statistics do not have a PK
548
                    eval { $object->get_from_storage };
549
                    is( $@, '', "Module $module should have koha_object[s]_class method if needed" );
550
                }
551
552
                # Testing koha_object_class and koha_objects_class
553
                my $object_class = Koha::Object::_get_object_class( $object->_result->result_class );
554
                eval "require $object_class";
555
                is( $@, '', "Module $object_class should be defined" );
556
                my $objects_class = Koha::Objects::_get_objects_class( $object->_result->result_class );
557
                eval "require $objects_class";
558
                is( $@, '', "Module $objects_class should be defined" );
502
            }
559
            }
503
504
            # Testing koha_object_class and koha_objects_class
505
            my $object_class = Koha::Object::_get_object_class( $object->_result->result_class );
506
            eval "require $object_class";
507
            is( $@, '', "Module $object_class should be defined" );
508
            my $objects_class = Koha::Objects::_get_objects_class( $object->_result->result_class );
509
            eval "require $objects_class";
510
            is( $@, '', "Module $objects_class should be defined" );
511
        }
560
        }
512
    };
561
    };
513
562
514
- 

Return to bug 39190