| | 314 | |
|---|
| | 315 | class FragmentCachingTestController < ActionController::Base |
|---|
| | 316 | def some_action; end; |
|---|
| | 317 | end |
|---|
| | 318 | |
|---|
| | 319 | class FragmentCachingTest < Test::Unit::TestCase |
|---|
| | 320 | def setup |
|---|
| | 321 | ActionController::Base.perform_caching = true |
|---|
| | 322 | @store = ActionController::Caching::Fragments::UnthreadedMemoryStore.new |
|---|
| | 323 | ActionController::Base.fragment_cache_store = @store |
|---|
| | 324 | @controller = FragmentCachingTestController.new |
|---|
| | 325 | @params = {:controller => 'posts', :action => 'index'} |
|---|
| | 326 | @request = ActionController::TestRequest.new |
|---|
| | 327 | @response = ActionController::TestResponse.new |
|---|
| | 328 | @controller.params = @params |
|---|
| | 329 | @controller.request = @request |
|---|
| | 330 | @controller.response = @response |
|---|
| | 331 | @controller.send(:initialize_current_url) |
|---|
| | 332 | end |
|---|
| | 333 | |
|---|
| | 334 | def test_fragement_cache_key |
|---|
| | 335 | assert_equal 'dee zsombor', @controller.fragment_cache_key('dee zsombor') |
|---|
| | 336 | assert_equal( "test.host/fragment_caching_test/some_action", |
|---|
| | 337 | @controller.fragment_cache_key(:controller => 'fragment_caching_test',:action => 'some_action')) |
|---|
| | 338 | end |
|---|
| | 339 | |
|---|
| | 340 | def test_read_fragment__with_caching_enabled |
|---|
| | 341 | @store.write('name', 'value') |
|---|
| | 342 | assert_equal 'value', @controller.read_fragment('name') |
|---|
| | 343 | end |
|---|
| | 344 | |
|---|
| | 345 | def test_read_fragment__with_caching_disabled |
|---|
| | 346 | ActionController::Base.perform_caching = false |
|---|
| | 347 | @store.write('name', 'value') |
|---|
| | 348 | assert_nil @controller.read_fragment('name') |
|---|
| | 349 | end |
|---|
| | 350 | |
|---|
| | 351 | def test_write_fragment__with_caching_enabled |
|---|
| | 352 | assert_nil @store.read('name') |
|---|
| | 353 | assert_equal 'value', @controller.write_fragment('name', 'value') |
|---|
| | 354 | assert_equal 'value', @store.read('name') |
|---|
| | 355 | end |
|---|
| | 356 | |
|---|
| | 357 | def test_write_fragment__with_caching_disabled |
|---|
| | 358 | assert_nil @store.read('name') |
|---|
| | 359 | ActionController::Base.perform_caching = false |
|---|
| | 360 | assert_equal nil, @controller.write_fragment('name', 'value') |
|---|
| | 361 | assert_nil @store.read('name') |
|---|
| | 362 | end |
|---|
| | 363 | |
|---|
| | 364 | def test_expire_fragment__with_simple_key |
|---|
| | 365 | @store.write('name', 'value') |
|---|
| | 366 | @controller.expire_fragment 'name' |
|---|
| | 367 | assert_nil @store.read('name') |
|---|
| | 368 | end |
|---|
| | 369 | |
|---|
| | 370 | def test_expire_fragment__with__regexp |
|---|
| | 371 | @store.write('name', 'value') |
|---|
| | 372 | @store.write('another_name', 'another_value') |
|---|
| | 373 | @store.write('primalgrasp', 'will not expire ;-)') |
|---|
| | 374 | |
|---|
| | 375 | @controller.expire_fragment /name/ |
|---|
| | 376 | |
|---|
| | 377 | assert_nil @store.read('name') |
|---|
| | 378 | assert_nil @store.read('another_name') |
|---|
| | 379 | assert_equal 'will not expire ;-)', @store.read('primalgrasp') |
|---|
| | 380 | end |
|---|
| | 381 | |
|---|
| | 382 | def test_fragment_for__with_disabled_caching |
|---|
| | 383 | ActionController::Base.perform_caching = false |
|---|
| | 384 | |
|---|
| | 385 | @store.write('expensive', 'fragment content') |
|---|
| | 386 | fragment_computed = false |
|---|
| | 387 | |
|---|
| | 388 | buffer = 'generated till now -> ' |
|---|
| | 389 | @controller.fragment_for(Proc.new { fragment_computed = true }, 'expensive') { buffer } |
|---|
| | 390 | |
|---|
| | 391 | assert fragment_computed |
|---|
| | 392 | assert_equal 'generated till now -> ', buffer |
|---|
| | 393 | end |
|---|
| | 394 | |
|---|
| | 395 | |
|---|
| | 396 | def test_fragment_for |
|---|
| | 397 | @store.write('expensive', 'fragment content') |
|---|
| | 398 | fragment_computed = false |
|---|
| | 399 | |
|---|
| | 400 | buffer = 'generated till now -> ' |
|---|
| | 401 | @controller.fragment_for(Proc.new { fragment_computed = true }, 'expensive') { buffer} |
|---|
| | 402 | |
|---|
| | 403 | assert !fragment_computed |
|---|
| | 404 | assert_equal 'generated till now -> fragment content', buffer |
|---|
| | 405 | end |
|---|
| | 406 | |
|---|
| | 407 | def test_cache_erb_fragment |
|---|
| | 408 | @store.write('expensive', 'fragment content') |
|---|
| | 409 | _erbout = 'generated till now -> ' |
|---|
| | 410 | |
|---|
| | 411 | assert_equal( 'generated till now -> fragment content', |
|---|
| | 412 | @controller.cache_erb_fragment(Proc.new{ }, 'expensive')) |
|---|
| | 413 | end |
|---|
| | 414 | |
|---|
| | 415 | def test_cache_rxml_fragment |
|---|
| | 416 | @store.write('expensive', 'fragment content') |
|---|
| | 417 | xml = 'generated till now -> ' |
|---|
| | 418 | class << xml; def target!; to_s; end; end |
|---|
| | 419 | |
|---|
| | 420 | assert_equal( 'generated till now -> fragment content', |
|---|
| | 421 | @controller.cache_rxml_fragment(Proc.new{ }, 'expensive')) |
|---|
| | 422 | end |
|---|
| | 423 | |
|---|
| | 424 | def test_cache_rjs_fragment |
|---|
| | 425 | @store.write('expensive', 'fragment content') |
|---|
| | 426 | page = 'generated till now -> ' |
|---|
| | 427 | |
|---|
| | 428 | assert_equal( 'generated till now -> fragment content', |
|---|
| | 429 | @controller.cache_rjs_fragment(Proc.new{ }, 'expensive')) |
|---|
| | 430 | end |
|---|
| | 431 | |
|---|
| | 432 | def test_cache_rjs_fragment_debug_mode_does_not_interfere |
|---|
| | 433 | @store.write('expensive', 'fragment content') |
|---|
| | 434 | page = 'generated till now -> ' |
|---|
| | 435 | |
|---|
| | 436 | begin |
|---|
| | 437 | debug_mode, ActionView::Base.debug_rjs = ActionView::Base.debug_rjs, true |
|---|
| | 438 | assert_equal( 'generated till now -> fragment content', |
|---|
| | 439 | @controller.cache_rjs_fragment(Proc.new{ }, 'expensive')) |
|---|
| | 440 | assert ActionView::Base.debug_rjs |
|---|
| | 441 | ensure |
|---|
| | 442 | ActionView::Base.debug_rjs = debug_mode |
|---|
| | 443 | end |
|---|
| | 444 | end |
|---|
| | 445 | end |