package tests::UIReportConfigListWidgetTest;
use strict;
use base qw/ Lire::Test::TestCase /;
use Lire::Config::TypeSpec;
use Lire::Test::CursesUIDriver;
use Lire::UI::ReportConfigListWidget;
use Lire::ReportConfig;
use Curses::UI;
sub set_up {
my $self = $_[0];
$self->SUPER::set_up();
$self->{'driver'} = new Lire::Test::CursesUIDriver();
$self->{'driver'}->setup_curses_ui();
$self->{'ui'} = new Curses::UI();
$self->{'driver'}->set_curses_ui( $self->{'ui'} );
$self->{'window'} = $self->{'ui'}->add( 'window', 'Window' );
$self->{'_old_templates'} = \%Lire::ReportConfig::TEMPLATES;
my $spec = new Lire::Config::ListSpec( 'name' => 'reports' );
$spec->add( new Lire::Config::ReportSpec( 'name' => 'report' ) );
$self->{'ftp_default'} =
new Lire::Config::ReportSpec( 'name' => 'ftp_default' )->instance();
$self->{'www_default'} =
new Lire::Config::ReportSpec( 'name' => 'www_default' )->instance();
*Lire::ReportConfig::TEMPLATES =
{ 'ftp_default' => $self->{'ftp_default'},
'www_default' => $self->{'www_default'},
};
$self->{'ftp_default'}->get( 'id' )->set( 'ftp_default' );
$self->{'www_default'}->get( 'id' )->set( 'www_default' );
$self->{'cfg'}{'lr_templates_path'} = [];
$self->{'reports'} = $spec->instance();
return;
}
sub tear_down {
my $self = $_[0];
$self->SUPER::tear_down();
*Lire::ReportConfig::TEMPLATES = $self->{'_old_templates'};
$self->{'driver'}->teardown_curses_ui();
return;
}
sub test_update_type_popupmenu {
my $self = $_[0];
my $widget = $self->{'window'}->add( 'list_widget',
'Lire::UI::ReportConfigListWidget',
'value' => $self->{'reports'} );
$self->assert_isa( 'Lire::UI::ReportConfigListWidget', $widget );
$self->assert_deep_equals( [ 'ftp_default', 'www_default' ],
$widget->getobj( 'type_widget' )->{'-values'} );
$self->assert_deep_equals( {},
$widget->getobj( 'type_widget' )->{'-labels'} );
}
sub test_new_value {
my $self = $_[0];
my $widget = $self->{'window'}->add( 'list_widget',
'Lire::UI::ReportConfigListWidget',
'value' => $self->{'reports'} );
my $popup = $widget->getobj( 'type_widget' );
$self->assert_null( $widget->new_value(), 'new_value() != undef' );
$popup->{'-selected'} = 0;
my $value = $widget->new_value();
$self->assert_isa( 'Lire::Config::Object', $value );
$self->assert_str_not_equals( $self->{'ftp_default'}, $value );
$self->assert_str_equals( 'ftp_default', $value->get( 'id' )->get() );
$self->assert_str_equals( $self->{'reports'}->spec()->get( 'report' ),
$value->spec() );
$popup->{'-selected'} = 1;
$value = $widget->new_value();
$self->assert_str_equals( 'www_default', $value->get( 'id' )->get() );
}
1;
syntax highlighted by Code2HTML, v. 0.9.1