Catalyst-Plugin-CurrentComponents

 view release on metacpan or  search on metacpan

t/basic.t  view on Meta::CPAN


  use base 'Catalyst::Controller';

  sub current_view { return 'CurrentView' }

  sub base : Path('') Args(0) {
    my ($self, $c) = @_;
    $c->res->body(ref $c->view);
  }

  package MyApp::Controller::CurrentViewInstance;
  $INC{'MyApp/Controller/CurrentViewInstance.pm'} = __FILE__;

  use base 'Catalyst::Controller';

  sub current_view_instance { return pop->view('CurrentView') }

  sub base : Path('') Args(0) {
    my ($self, $c) = @_;
    $c->res->body(ref $c->view);
  }

  package MyApp::Controller::Methods;
  $INC{'MyApp/Controller/Methods.pm'} = __FILE__;

  use base 'Catalyst::Controller';

  sub current_model_action : Local Args(0) {
    my ($self, $c) = @_;
    $c->current_model('CurrentModel');
    $c->res->body(ref $c->model);
  }

  sub current_view_action : Local Args(0) {
    my ($self, $c) = @_;
    $c->current_model('CurrentView');
    $c->res->body(ref $c->view);
  }

  sub current_model_instance_action : Local Args(0) {
    my ($self, $c) = @_;
    $c->current_model_instance( $c->model('CurrentModel') );
    $c->res->body(ref $c->model);
  }

  sub current_view_instance_action : Local Args(0) {
    my ($self, $c) = @_;
    $c->current_view_instance( $c->view('CurrentView') );
    $c->res->body(ref $c->view);
  }

  sub set_model_by_return :Chained(/) CaptureArgs(0) {
    my ($self, $c) = @_;
    return $c->model('CurrentModel2');
  }

    sub midpoint :Chained('set_model_by_return') PathPart('') CaptureArgs(0) {
      my ($self, $c) = @_;
    }

      sub endpoint :Chained('midpoint') PathPart('') Args(0) {
        my ($self, $c) = @_;
        $c->res->body(ref $c->model);
      }

  sub set_view_by_return :Chained(/) CaptureArgs(0) {
    my ($self, $c) = @_;
    return $c->model('CurrentView');
  }

    sub midpoint2 :Chained('set_view_by_return') PathPart('') CaptureArgs(0) {
      my ($self, $c) = @_;
    }

      sub endpoint2 :Chained('midpoint2') PathPart('') Args(0) {
        my ($self, $c) = @_;
        $c->res->body(ref $c->view);
      }

  package MyApp;
  use Catalyst 'CurrentComponents';

  MyApp->config(
    default_model=>'CurrentModel',
    'Plugin::CurrentComponents' => {
      model_instance_from_return => 1,
      model_instance_from_state => 1,
      view_instance_from_return => 1,
    },
  );
  
  MyApp->setup;
}

use Catalyst::Test 'MyApp';

{
  my $res = request "/currentmodel";
  is $res->content, 'MyApp::Model::CurrentModel';
}

{
  my $res = request "/currentmodelinstance";
  is $res->content, 'MyApp::Model::CurrentModel';
}

{
  my $res = request "/currentview";
  is $res->content, 'MyApp::View::CurrentView';
}

{
  my $res = request "/currentviewinstance";
  is $res->content, 'MyApp::View::CurrentView';
}

{
  my $res = request "/methods/current_model_action";
  is $res->content, 'MyApp::Model::CurrentModel';
}

{
  my $res = request "/methods/current_model_instance_action";
  is $res->content, 'MyApp::Model::CurrentModel';
}

{
  my $res = request "/methods/current_view_action";
  is $res->content, 'MyApp::View::CurrentView';
}

{
  my $res = request "/methods/current_view_instance_action";
  is $res->content, 'MyApp::View::CurrentView';
}



( run in 0.459 second using v1.01-cache-2.11-cpan-e1769b4cff6 )