hi
i’m testing some lib i’ve made for detecting mobile user agent, I
confused
how to test the lib i’ve made.
the test code is
describe "Check if mobile browser" do
it "should know if it's from blackberry" do
blackberry_ua = "BlackBerry8330/4.3.0 Profile/MIDP-2.0
Configuration/CLDC-1.1 VendorID/105"
request.env["HTTP_USER_AGENT"] = blackberry_ua
is_mobile?.should == true
end
end
the error is, request variable always nil
the question : how i mock the request.env ?
–
Best Regards
Suprie
http://suprie.in.ruangkopi.com
“Mendapat upah karena menyenangkan orang lain yang tidak punya
persangkutan
dengan kata hati sendiri, kan itu dalam seni namanya pelacuran?”
On Wed, Feb 25, 2009 at 1:57 AM, Suprie Leonhart
[email protected] wrote:
blackberry_ua = "BlackBerry8330/4.3.0 Profile/MIDP-2.0
the question : how i mock the request.env ?
Since you’re trying to test existing code, can you please post that
code?
On Wed, Feb 25, 2009 at 4:19 PM, David C.
[email protected]wrote:
the error is, request variable always nil
the question : how i mock the request.env ?
Since you’re trying to test existing code, can you please post that code?
module Mobile
def load_mobile_agent_file
ma = File.read(RAILS_ROOT+"/config/mobile.yml")
yaml = YAML.load(ma)
return yaml
end
def mobile_user_agent?
if request.env["HTTP_USER_AGENT"]
user_agent = request.env["HTTP_USER_AGENT"]
mua = load_mobile_agent_file
mua["mobile_agent"].each do |key, value|
unless(user_agent.match(Regexp.new(Regexp.escape(key))).nil?)
return true
end
end
return false
end
end
end
–
Best Regards
Suprie
http://suprie.in.ruangkopi.com
“Mendapat upah karena menyenangkan orang lain yang tidak punya
persangkutan
dengan kata hati sendiri, kan itu dalam seni namanya pelacuran?”
On 25/02/2009, at 4:51 AM, Suprie Leonhart wrote:
module Mobile
mua[“mobile_agent”].each do |key, value|
–
Best Regards
Suprie
http://suprie.in.ruangkopi.com
Hi Suprie. AFAIK, RSpec populates the “request” object in your specs
after a controller action is called. Since your “should know if it’s
from blackberry” example doesn’t call a controller action, the
“request” object is nil.
-Nick
On Wed, Feb 25, 2009 at 10:45 PM, David C.
[email protected]wrote:
Configuration/CLDC-1.1 VendorID/105"
user_agent = request.env["HTTP_USER_AGENT"]
[/code]
Thanks - so I’m wondering where is_mobile? came from. Also, are you
trying to do this in a controller spec or a helper spec? Where is the
spec file located?
i’ve refactoring the is_mobile? to mobile_content? i’m trying to spec a
lib, so i put it on spec/lib
–
Best Regards
Suprie
http://suprie.in.ruangkopi.com
“Mendapat upah karena menyenangkan orang lain yang tidak punya
persangkutan
dengan kata hati sendiri, kan itu dalam seni namanya pelacuran?”
On Wed, Feb 25, 2009 at 3:51 AM, Suprie Leonhart
[email protected] wrote:
confused
is_mobile?.should == true
[code]
module Mobile
def load_mobile_agent_file
ma = File.read(RAILS_ROOT+“/config/mobile.yml”)
yaml = YAML.load(ma)
return yaml
end
Off topic, but this could be a one liner with no temporary variables,
and load_file will take care of opening and reading the file for you:
def load_mobile_agent_file
YAML.load_file(RAILS_ROOT+“/config/mobile.yml”)
end
return false
end
end
end
[/code]
Thanks - so I’m wondering where is_mobile? came from. Also, are you
trying to do this in a controller spec or a helper spec? Where is the
spec file located?
On Thu, Feb 26, 2009 at 4:39 AM, Nick H. [email protected]
wrote:
Hi Suprie. AFAIK, RSpec populates the “request” object in your specs after
a controller action is called. Since your “should know if it’s from
blackberry” example doesn’t call a controller action, the “request” object
is nil.
-Nick
so i should put the test on controller spec then ?
–
Best Regards
Suprie
http://suprie.in.ruangkopi.com
“Mendapat upah karena menyenangkan orang lain yang tidak punya
persangkutan
dengan kata hati sendiri, kan itu dalam seni namanya pelacuran?”
On Thu, Feb 26, 2009 at 12:08 PM, Nick H. [email protected]
wrote:
specs for that action, and make sure to cover the case(s) when
#mobile_content? is called.
thanks a lot for the advice.
–
Best Regards
Suprie
http://suprie.in.ruangkopi.com
“Mendapat upah karena menyenangkan orang lain yang tidak punya
persangkutan
dengan kata hati sendiri, kan itu dalam seni namanya pelacuran?”
On 25/02/2009, at 9:49 PM, Suprie Leonhart wrote:
–
Best Regards
Suprie
Ultimately, you should be speccing your application’s behaviour rather
than specific methods. If a controller action calls #mobile_content? ,
then write specs for that action, and make sure to cover the case(s)
when #mobile_content? is called.
-Nick