mobile-enhancements 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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