Enable hooking parameters into req/res construction. Useful if you are dynamically...
[catagits/Catalyst-Runtime.git] / t / plugin_new_method_backcompat.t
CommitLineData
3d041c32 1# Test that plugins with their own new method don't break applications.
2
6a8f85af 3# 5.70 creates all of the request/response structure itself in prepare,
3d041c32 4# and as the new method in our plugin just blesses our args, that works nicely.
5
6a8f85af 6# In 5.80, we rely on the new method to appropriately initialise data
3d041c32 7# structures, and therefore we need to inline a new method on MyApp to ensure
8# that plugins don't get it wrong for us.
9
10# Also tests method modifiers and etc in MyApp.pm still work as expected.
ae15d9da 11use Test::More;
6e5505d4 12use Test::Exception;
bca6bdad 13use Moose::Util qw/find_meta/;
3d041c32 14use FindBin;
edb20ed3 15use lib "$FindBin::Bin/lib";
3d041c32 16
6a8f85af 17use Catalyst::Test qw/TestAppPluginWithConstructor/;
38e43e65 18TestAppPluginWithConstructor->_make_immutable_if_needed;
bca6bdad 19ok find_meta('TestAppPluginWithConstructor')->is_immutable,
20 'Am immutable after use';
21
22ok request('/foo')->is_success, 'Can get /foo';
6a8f85af 23is $TestAppPluginWithConstructor::MODIFIER_FIRED, 1, 'Before modifier was fired correctly.';
6e5505d4 24
81ef9afd 25my $warning;
38e43e65 26eval "use TestAppBadlyImmutable";
27local $SIG{__WARN__} = sub { $warning .= $_[0] };
28
29TestAppBadlyImmutable->_make_immutable_if_needed;
30
81ef9afd 31like $warning, qr/\QYou made your application class (TestAppBadlyImmutable) immutable/,
32 'An application class that is already immutable but does not inline the constructor warns at ->setup';
6e5505d4 33
ae15d9da 34done_testing;
35