mobile-enhancements 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -31,17 +31,17 @@ In your config/routes.rb file:
31
31
 
32
32
  ```ruby
33
33
  YourApp::Application.routes.draw do
34
- # this can be accessed via mobile or desktop versions
34
+ # accessible via /items and /mobile/items
35
35
  mobile_optional do
36
36
  resource :items
37
37
  end
38
38
 
39
- # this cannot be access via desktop
39
+ # only accessible via /mobile/barcode_scanner
40
40
  mobile_only do
41
41
  get :barcode_scanner, to: "scans#new"
42
42
  end
43
43
 
44
- # normal routes are desktop-only
44
+ # only accessible via /guides (normal routing)
45
45
  resource :guides
46
46
  end
47
47
  ```
@@ -1,6 +1,7 @@
1
1
  require "forwardable"
2
2
  require "mobile_enhancements"
3
3
  require "mobile_enhancements/request_helper"
4
+ require "mobile_enhancements/url_helper"
4
5
 
5
6
  module MobileEnhancements
6
7
  module HelperDelegation
@@ -11,6 +12,8 @@ module MobileEnhancements
11
12
  if base.respond_to?(:helper_method)
12
13
  base.helper_method *RequestHelper.delegated_methods
13
14
  end
15
+ # include the UrlHelper
16
+ base.send(:include, UrlHelper)
14
17
  end
15
18
 
16
19
  private
@@ -19,7 +19,10 @@ module MobileEnhancements
19
19
  # setup the format calculation
20
20
  ActionController::Base.class_eval do
21
21
  before_filter do |controller|
22
- controller.request.format = controller.determine_format
22
+ if controller.mobile_request?
23
+ controller.request.format = controller.determine_format
24
+ controller.params["mobile"] = MobileEnhancements.configuration.mobile_path_prefix
25
+ end
23
26
  end
24
27
  end
25
28
  end
@@ -0,0 +1,18 @@
1
+ module MobileEnhancements
2
+ module UrlHelper
3
+ def url_for(*args)
4
+ # ignore our direct calls for desktop/mobile URLs
5
+ if args.size == 1 && args.first.frozen?
6
+ super
7
+ # if it's from a mobile
8
+ elsif mobile_request?
9
+ # mobilify the url
10
+ mobile_url(super)
11
+ # if it's a desktop request
12
+ else
13
+ # process as normal
14
+ super
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module MobileEnhancements
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -9,6 +9,30 @@ describe TestController do
9
9
  expect(@response.body).to eq "two, #{MobileEnhancements.configuration.mobile_format}"
10
10
  end
11
11
  end
12
+
13
+ describe "GET /#{MobileEnhancements.configuration.mobile_path_prefix}/path_checking" do
14
+ before { get :path_checking, mobile: MobileEnhancements.configuration.mobile_path_prefix }
15
+
16
+ it "should render a mobile URL" do
17
+ expect(@response.body).to eq "http://test.host/#{MobileEnhancements.configuration.mobile_path_prefix}/two"
18
+ end
19
+ end
20
+
21
+ describe "GET /#{MobileEnhancements.configuration.mobile_path_prefix}/redirect_checking" do
22
+ before { get :redirect_checking, mobile: MobileEnhancements.configuration.mobile_path_prefix }
23
+
24
+ it "should redirect to a mobile URL" do
25
+ expect(@response.headers["Location"]).to eq "http://test.host/#{MobileEnhancements.configuration.mobile_path_prefix}/two"
26
+ end
27
+ end
28
+
29
+ describe "GET /#{MobileEnhancements.configuration.mobile_path_prefix}/fixed_redirect_checking" do
30
+ before { get :fixed_redirect_checking, mobile: MobileEnhancements.configuration.mobile_path_prefix }
31
+
32
+ it "should redirect to a mobile URL" do
33
+ expect(@response.headers["Location"]).to eq "http://test.host/#{MobileEnhancements.configuration.mobile_path_prefix}/two"
34
+ end
35
+ end
12
36
  end
13
37
 
14
38
  context "via the desktop UI" do
@@ -19,5 +43,29 @@ describe TestController do
19
43
  expect(@response.body).to eq "two, html"
20
44
  end
21
45
  end
46
+
47
+ describe "GET /path_checking" do
48
+ before { get :path_checking }
49
+
50
+ it "should render a desktop URL" do
51
+ expect(@response.body).to eq "http://test.host/two"
52
+ end
53
+ end
54
+
55
+ describe "GET /redirect_checking" do
56
+ before { get :redirect_checking }
57
+
58
+ it "should redirect to a desktop URL" do
59
+ expect(@response.headers["Location"]).to eq "http://test.host/two"
60
+ end
61
+ end
62
+
63
+ describe "GET /fixed_redirect_checking" do
64
+ before { get :fixed_redirect_checking }
65
+
66
+ it "should redirect to a mobile URL" do
67
+ expect(@response.headers["Location"]).to eq "http://test.host/#{MobileEnhancements.configuration.mobile_path_prefix}/two"
68
+ end
69
+ end
22
70
  end
23
71
  end
@@ -5,4 +5,16 @@ class TestController < ActionController::Base
5
5
  alias_method :two, :one
6
6
  alias_method :three, :one
7
7
  alias_method :four, :one
8
+
9
+ def path_checking
10
+ render text: optional_mobile_url
11
+ end
12
+
13
+ def redirect_checking
14
+ redirect_to(optional_mobile_url)
15
+ end
16
+
17
+ def fixed_redirect_checking
18
+ redirect_to(mobile_url(optional_mobile_url))
19
+ end
8
20
  end
@@ -2,7 +2,10 @@ Rails.application.routes.draw do
2
2
  get "one", to: "test#one"
3
3
 
4
4
  mobile_optional do
5
- get "two", to: "test#two"
5
+ get "two", to: "test#two", as: :optional_mobile
6
+ get "five", to: "test#path_checking"
7
+ get "six", to: "test#redirect_checking"
8
+ get "seven", to: "test#fixed_redirect_checking"
6
9
  end
7
10
 
8
11
  mobile_only do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobile-enhancements
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -145,6 +145,7 @@ files:
145
145
  - lib/mobile_enhancements/railtie.rb
146
146
  - lib/mobile_enhancements/request_helper.rb
147
147
  - lib/mobile_enhancements/route_helpers.rb
148
+ - lib/mobile_enhancements/url_helper.rb
148
149
  - lib/mobile_enhancements/version.rb
149
150
  - mobile-enhancements.gemspec
150
151
  - spec/controllers/test_controller_spec.rb