Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #9937: making_cookies_return_an_array_if_you_gave_it_an_array.diff

File making_cookies_return_an_array_if_you_gave_it_an_array.diff, 1.7 kB (added by queso, 1 year ago)
  • actionpack/test/controller/cookie_test.rb

    old new  
    1818      cookies["user_name"] = { "value" => "david", "expires" => Time.local(2005, 10, 10) } 
    1919      cookies["login"]     = "XJ-122" 
    2020    end 
    21  
     21     
    2222    def access_frozen_cookies 
    2323      cookies["will"] = "work" 
    2424    end 
     
    9292    assert_equal nil, jar["something_else"] 
    9393  end 
    9494 
     95  def test_cookiejar_accessor_with_array_value 
     96    a = %w{1 2 3} 
     97    @request.cookies["pages"] = CGI::Cookie.new("name" => "pages", "value" => a, "expires" => Time.local(2025, 10, 10)) 
     98    @controller.request = @request 
     99    jar = ActionController::CookieJar.new(@controller) 
     100    assert_equal a, jar["pages"] 
     101  end 
     102   
    95103  def test_delete_cookie_with_path 
    96104    get :delete_cookie_with_path 
    97105    assert_equal "/beaten", @response.headers["cookie"].first.path 
  • actionpack/lib/action_controller/cookies.rb

    old new  
    4444    # Returns the value of the cookie by +name+ -- or nil if no such cookie exists. You set new cookies using cookies[]= 
    4545    # (for simple name/value cookies without options). 
    4646    def [](name) 
    47       @cookies[name.to_s].value.first if @cookies[name.to_s] && @cookies[name.to_s].respond_to?(:value) 
     47      cookie = @cookies[name.to_s] 
     48      if cookie && cookie.respond_to?(:value) 
     49        cookie.size > 1 ? cookie.value : cookie.value.to_s 
     50      end  
    4851    end 
    4952 
    5053    def []=(name, options)