acts_as_api 0.3.10 → 0.3.11

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/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ === 0.3.11 2011-11-06
2
+
3
+ * Added :postfix, :prefix options for template rendering
4
+
5
+ === 0.3.10 2011-10-03
6
+
7
+ * Fixed Mongoid problems, when no ActiveRecord is available (Ticket #36)
8
+
1
9
  === 0.3.9 2011-09-24
2
10
 
3
11
  * Spec suite now running on Rails 3.1
data/acts_as_api.gemspec CHANGED
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # encoding: UTF-8
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
3
  require "acts_as_api/version"
4
4
 
@@ -8,7 +8,16 @@ module ActsAsApi
8
8
  # to simply generate API outputs.
9
9
  #
10
10
  # The default Rails serializers are used to serialize the data.
11
- def render_for_api(api_template, render_options)
11
+ def render_for_api(api_template_or_options, render_options)
12
+ if api_template_or_options.is_a?(Hash)
13
+ api_template = []
14
+ api_template << api_template_or_options.delete(:prefix)
15
+ api_template << api_template_or_options.delete(:template)
16
+ api_template << api_template_or_options.delete(:postfix)
17
+ api_template = api_template.reject(&:blank?).join('_')
18
+ else
19
+ api_template = api_template_or_options
20
+ end
12
21
 
13
22
  # extract the api format and model
14
23
  api_format_options = {}
@@ -82,4 +91,4 @@ module ActsAsApi
82
91
 
83
92
  end
84
93
 
85
- end
94
+ end
@@ -1,3 +1,3 @@
1
1
  module ActsAsApi
2
- VERSION = "0.3.10"
2
+ VERSION = "0.3.11"
3
3
  end
@@ -14,7 +14,6 @@ describe RespondWithUsersController do
14
14
 
15
15
  # see spec/support/controller_examples.rb
16
16
  it_behaves_like "a controller with ActsAsApi responses"
17
-
18
17
  end
19
18
 
20
19
  context "using mongoid", :orm => :mongoid do
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongoid, :orm => "mongoid" do
3
+ describe "Mongoid", :orm => "mongoid" do
4
4
 
5
5
  before(:each) do
6
6
  setup_mongoid_models
@@ -26,4 +26,4 @@ describe Mongoid, :orm => "mongoid" do
26
26
  it_supports "defining a model callback"
27
27
  end
28
28
 
29
- end
29
+ end
@@ -38,6 +38,12 @@ class RespondWithUsersController < ApplicationController
38
38
  respond_with @user
39
39
  end
40
40
 
41
+ def show_prefix_postfix
42
+ @user = @user_model.find(params[:id])
43
+ # :root => :user is only used here because we need it for the node name of the MongoUser model
44
+ respond_with @user, :api_template => {:template => params[:api_template], :prefix => params[:api_prefix], :postfix => params[:api_postfix]}, :root => :user
45
+ end
46
+
41
47
  def create
42
48
  @user = @user_model.new(params[:user])
43
49
 
@@ -56,4 +56,14 @@ class UsersController < ApplicationController
56
56
  end
57
57
  end
58
58
 
59
- end
59
+ def show_prefix_postfix
60
+ @user = @user_model.find(params[:id])
61
+ template = {:template => params[:api_template], :prefix => params[:api_prefix], :postfix => params[:api_postfix]}
62
+ respond_to do |format|
63
+ # :root => :user is only used here because we need it for the node name of the MongoUser model
64
+ format.xml { render_for_api template, :xml => @user, :root => :user }
65
+ format.json { render_for_api template, :json => @user, :root => :user }
66
+ end
67
+ end
68
+
69
+ end
@@ -119,6 +119,25 @@ class MongoUser
119
119
  t.add :last_name, :unless => lambda{|u| nil }
120
120
  end
121
121
 
122
+ api_accessible :with_prefix_name_only do |t|
123
+ t.add lambda{|model| 'true' }, :as => :prefix
124
+ t.add :first_name
125
+ t.add :last_name
126
+ end
127
+
128
+ api_accessible :name_only_with_postfix do |t|
129
+ t.add :first_name
130
+ t.add :last_name
131
+ t.add lambda{|model| 'true' }, :as => :postfix
132
+ end
133
+
134
+ api_accessible :with_prefix_name_only_with_postfix do |t|
135
+ t.add lambda{|model| 'true' }, :as => :prefix
136
+ t.add :first_name
137
+ t.add :last_name
138
+ t.add lambda{|model| 'true' }, :as => :postfix
139
+ end
140
+
122
141
  def before_api_response(api_response)
123
142
  @before_api_response_called = true
124
143
  end
@@ -111,6 +111,25 @@ class User < ActiveRecord::Base
111
111
  t.add :first_name
112
112
  t.add :last_name, :unless => lambda{|u| nil }
113
113
  end
114
+
115
+ api_accessible :with_prefix_name_only do |t|
116
+ t.add lambda{|model| 'true' }, :as => :prefix
117
+ t.add :first_name
118
+ t.add :last_name
119
+ end
120
+
121
+ api_accessible :name_only_with_postfix do |t|
122
+ t.add :first_name
123
+ t.add :last_name
124
+ t.add lambda{|model| 'true' }, :as => :postfix
125
+ end
126
+
127
+ api_accessible :with_prefix_name_only_with_postfix do |t|
128
+ t.add lambda{|model| 'true' }, :as => :prefix
129
+ t.add :first_name
130
+ t.add :last_name
131
+ t.add lambda{|model| 'true' }, :as => :postfix
132
+ end
114
133
 
115
134
  def before_api_response(api_response)
116
135
  @before_api_response_called = true
@@ -122,6 +122,25 @@ class VanillaUser
122
122
  t.add :last_name, :unless => lambda{|u| nil }
123
123
  end
124
124
 
125
+ api_accessible :with_prefix_name_only do |t|
126
+ t.add lambda{|model| 'true' }, :as => :prefix
127
+ t.add :first_name
128
+ t.add :last_name
129
+ end
130
+
131
+ api_accessible :name_only_with_postfix do |t|
132
+ t.add :first_name
133
+ t.add :last_name
134
+ t.add lambda{|model| 'true' }, :as => :postfix
135
+ end
136
+
137
+ api_accessible :with_prefix_name_only_with_postfix do |t|
138
+ t.add lambda{|model| 'true' }, :as => :prefix
139
+ t.add :first_name
140
+ t.add :last_name
141
+ t.add lambda{|model| 'true' }, :as => :postfix
142
+ end
143
+
125
144
  def before_api_response(api_response)
126
145
  @before_api_response_called = true
127
146
  end
@@ -8,6 +8,7 @@ RailsApp::Application.routes.draw do
8
8
  member do
9
9
  get 'show_meta'
10
10
  get 'show_default'
11
+ get 'show_prefix_postfix'
11
12
  end
12
13
  end
13
14
 
@@ -19,6 +20,7 @@ RailsApp::Application.routes.draw do
19
20
  member do
20
21
  get 'show_meta'
21
22
  get 'show_default'
23
+ get 'show_prefix_postfix'
22
24
  end
23
25
  end
24
26
 
@@ -385,4 +385,80 @@ shared_examples_for "a controller with ActsAsApi responses" do
385
385
  end
386
386
  end
387
387
 
388
- end
388
+
389
+ describe 'api prefix' do
390
+
391
+ describe 'get single user' do
392
+
393
+ before(:each) do
394
+ get :show_prefix_postfix, :format => 'xml', :api_template => :name_only, :api_prefix => :with_prefix, :id => @luke.id, :orm => @orm_for_testing
395
+ end
396
+
397
+ it "should have a root node named user" do
398
+ response_body.should have_selector("user")
399
+ end
400
+
401
+ it "should contain the specified attributes" do
402
+ response_body.should have_selector("user > prefix")
403
+ response_body.should have_selector("user > first-name")
404
+ response_body.should have_selector("user > last-name")
405
+ end
406
+
407
+ it "should not contain the specified attributes" do
408
+ response_body.should_not have_selector("user > postfix")
409
+ end
410
+
411
+ end
412
+
413
+ end
414
+
415
+ describe 'api postfix' do
416
+
417
+ describe 'get single user' do
418
+
419
+ before(:each) do
420
+ get :show_prefix_postfix, :format => 'xml', :api_template => :name_only, :api_postfix => :with_postfix, :id => @luke.id, :orm => @orm_for_testing
421
+ end
422
+
423
+ it "should have a root node named user" do
424
+ response_body.should have_selector("user")
425
+ end
426
+
427
+ it "should contain the specified attributes" do
428
+ response_body.should have_selector("user > first-name")
429
+ response_body.should have_selector("user > last-name")
430
+ response_body.should have_selector("user > postfix")
431
+ end
432
+
433
+ it "should not contain the specified attributes" do
434
+ response_body.should_not have_selector("user > prefix")
435
+ end
436
+
437
+ end
438
+
439
+ end
440
+
441
+ describe 'api prefix and api postfix' do
442
+
443
+ describe 'get single user' do
444
+
445
+ before(:each) do
446
+ get :show_prefix_postfix, :format => 'xml', :api_template => :name_only, :api_prefix => :with_prefix, :api_postfix => :with_postfix, :id => @luke.id, :orm => @orm_for_testing
447
+ end
448
+
449
+ it "should have a root node named user" do
450
+ response_body.should have_selector("user")
451
+ end
452
+
453
+ it "should contain the specified attributes" do
454
+ response_body.should have_selector("user > prefix")
455
+ response_body.should have_selector("user > first-name")
456
+ response_body.should have_selector("user > last-name")
457
+ response_body.should have_selector("user > postfix")
458
+ end
459
+
460
+ end
461
+
462
+ end
463
+
464
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.10
4
+ version: 0.3.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-03 00:00:00.000000000 +02:00
12
+ date: 2011-11-06 00:00:00.000000000 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
17
- requirement: &2257419040 !ruby/object:Gem::Requirement
17
+ requirement: &2198135880 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 3.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2257419040
25
+ version_requirements: *2198135880
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activesupport
28
- requirement: &2257418540 !ruby/object:Gem::Requirement
28
+ requirement: &2198135380 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 3.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2257418540
36
+ version_requirements: *2198135380
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rack
39
- requirement: &2257417900 !ruby/object:Gem::Requirement
39
+ requirement: &2198134840 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 1.1.0
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2257417900
47
+ version_requirements: *2198134840
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rails
50
- requirement: &2257417280 !ruby/object:Gem::Requirement
50
+ requirement: &2198134240 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 3.1.0
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2257417280
58
+ version_requirements: *2198134240
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: mongoid
61
- requirement: &2257416660 !ruby/object:Gem::Requirement
61
+ requirement: &2198133600 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: 2.0.1
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *2257416660
69
+ version_requirements: *2198133600
70
70
  description: acts_as_api enriches the models and controllers of your app in a rails-like
71
71
  way so you can easily determine how your XML/JSON API responses should look like.
72
72
  email: