Skip to content

Commit 4d24c0f

Browse files
authored
fix: add support count deactivate on relationships resources (#552)
1 parent 27d756c commit 4d24c0f

File tree

7 files changed

+67
-10
lines changed

7 files changed

+67
-10
lines changed

app/controllers/forest_liana/application_controller.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ def internal_server_error
9090
head :internal_server_error
9191
end
9292

93+
def deactivate_count_response
94+
render serializer: nil, json: { meta: { count: 'deactivated '} }
95+
end
96+
9397
private
9498

9599
def force_utf8_encoding(json)

app/controllers/forest_liana/associations_controller.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
module ForestLiana
22
class AssociationsController < ForestLiana::ApplicationController
33
if Rails::VERSION::MAJOR < 4
4-
before_filter :find_resource
5-
before_filter :find_association
4+
before_filter :find_resource, except: :count
5+
before_filter :find_association, except: :count
66
else
7-
before_action :find_resource
8-
before_action :find_association
7+
before_action :find_resource, except: :count
8+
before_action :find_association, except: :count
99
end
1010

1111
def index
@@ -25,6 +25,8 @@ def index
2525
end
2626

2727
def count
28+
find_resource
29+
find_association
2830
begin
2931
getter = HasManyGetter.new(@resource, @association, params, forest_user)
3032
getter.count

app/controllers/forest_liana/resources_controller.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@ class ResourcesController < ForestLiana::ApplicationController
1313
before_action :find_resource, except: :count
1414
end
1515

16-
def deactivate_count_response
17-
render serializer: nil, json: { meta: { count: 'deactivated '} }
18-
end
19-
2016
def index
2117
begin
2218
if request.format == 'csv'

spec/dummy/app/models/owner.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
class Owner < ActiveRecord::Base
2+
has_many :trees
23
end

spec/dummy/config/routes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
namespace :forest do
33
post '/actions/test' => 'islands#test'
44
get '/Owner/count' , to: 'owners#count'
5+
get '/Owner/:id/relationships/trees/count' , to: 'owner_trees#count'
56
end
67

78
mount ForestLiana::Engine => "/forest"
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Forest::OwnerTreesController < ForestLiana::AssociationsController
2+
def count
3+
if (params[:search])
4+
deactivate_count_response
5+
else
6+
params[:collection] = 'Owner'
7+
params[:association_name] = 'trees'
8+
super
9+
end
10+
end
11+
end

spec/requests/count_spec.rb

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
describe 'Requesting Owner', :type => :request do
44
before(:each) do
55
1.upto(10) do |i|
6-
Owner.create(name: "Owner #{i}")
6+
owner = Owner.create(name: "Owner #{i}")
7+
Tree.create(name: "Tree #{i}", owner_id: owner.id)
78
end
89
end
910

@@ -52,13 +53,33 @@
5253

5354
it 'should equal to 10' do
5455
get '/forest/Owner/count', params: params, headers: headers
56+
expect(response.body).to eq('{"count":10}')
57+
end
58+
end
59+
60+
describe 'count on relationships' do
61+
params = {
62+
fields: { 'Tree' => 'id,name,owner' },
63+
page: { 'number' => '1', 'size' => '10' },
64+
searchExtended: '0',
65+
sort: '-id',
66+
timezone: 'Europe/Paris'
67+
}
68+
69+
it 'should respond 200' do
70+
get '/forest/Owner/1/relationships/trees/count', params: params, headers: headers
5571
expect(response.status).to eq(200)
5672
end
73+
74+
it 'should equal to 1' do
75+
get '/forest/Owner/1/relationships/trees/count', params: params, headers: headers
76+
expect(response.body).to eq('{"count":1}')
77+
end
5778
end
5879

5980
describe 'deactivate_count_response' do
6081
params = {
61-
fields: { 'Product' => 'id,name' },
82+
fields: { 'Owner' => 'id,name' },
6283
page: { 'number' => '1', 'size' => '10' },
6384
search: 'foo',
6485
searchExtended: '0',
@@ -76,4 +97,25 @@
7697
expect(response.body).to eq('{"meta":{"count":"deactivated "}}')
7798
end
7899
end
100+
101+
describe 'deactivate_count_response' do
102+
params = {
103+
fields: { 'Tree' => 'id,name,owner' },
104+
page: { 'number' => '1', 'size' => '10' },
105+
search: 'foo',
106+
searchExtended: '0',
107+
sort: '-id',
108+
timezone: 'Europe/Paris'
109+
}
110+
111+
it 'should respond 200' do
112+
get '/forest/Owner/1/relationships/trees/count', params: params, headers: headers
113+
expect(response.status).to eq(200)
114+
end
115+
116+
it 'should equal to deactivated response' do
117+
get '/forest/Owner/1/relationships/trees/count', params: params, headers: headers
118+
expect(response.body).to eq('{"meta":{"count":"deactivated "}}')
119+
end
120+
end
79121
end

0 commit comments

Comments
 (0)