Skip to content

Commit 74dabba

Browse files
committed
Added spec to test duplicacy of spreadsheets #5
Test case to check duplicacy of spreadsheet was added and the spreadsheet_controller was modified accordingly
1 parent c372427 commit 74dabba

File tree

5 files changed

+96
-12
lines changed

5 files changed

+96
-12
lines changed

app/controllers/spreadsheets_controller.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def edit
2828
token = spreadsheet_params['token']
2929
spreadsheet = Spreadsheet.where(access_token: token)[0]
3030

31-
if spreadsheet.add_spreadsheet_credentials(spreadsheet_params)
31+
if spreadsheet && spreadsheet.add_spreadsheet_credentials(spreadsheet_params)
3232
spreadsheet.save
3333
else
3434
@error = 'Already Present'
@@ -65,6 +65,6 @@ def failure
6565
#################################
6666

6767
def spreadsheet_params
68-
params.permit(:title, :id, :token)
68+
params.permit(:id, :title, :token)
6969
end
7070
end

app/models/spreadsheet.rb

+8-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,14 @@ def add_tokens(tokens = {})
1616
end
1717

1818
def add_spreadsheet_credentials(credentials = {})
19-
self['spreadsheet_id'] = credentials['id']
20-
self['spreadsheet_title'] = credentials['title']
19+
if Spreadsheet.where('spreadsheet_id' => credentials['id']).to_a[0]
20+
return false
21+
else
22+
self['spreadsheet_id'] = credentials['id']
23+
self['spreadsheet_title'] = credentials['title']
24+
end
25+
26+
true
2127
end
2228

2329
def access_token

spec/controllers/spreadsheets_controller_spec.rb

+28-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
require 'vcr'
44

55
RSpec.describe SpreadsheetsController, :type => :controller do
6-
76
context 'GET User Permission' do
87
context 'User accepts' do
98
it 'redirects to new ' do
@@ -65,15 +64,41 @@
6564
context 'Get Edit' do
6665
let(:sheet) { FactoryGirl.create(:spreadsheet)}
6766
it 'renders index page after executing' do
68-
get :edit, title: 'namecollection', id: sheet['spreadsheet_id'], token: sheet['access_token']
67+
68+
get :edit, id: sheet['spreadsheet_id'], title: sheet['spreadsheet_title'], token: sheet['access_token']
6969

7070
expect(response).to render_template(:index)
7171
end
7272

7373
it 'adds spreadsheet\'s credentials' do
74-
get :edit, title: 'namecollection', id: sheet['spreadsheet_id'], token: sheet['access_token']
74+
sheet
75+
Spreadsheet.delete_all
76+
spreadsheet = Spreadsheet.new
77+
spreadsheet.add_tokens({
78+
'token' => sheet[:access_token],
79+
'refresh_token' => sheet[:refresh_token],
80+
'expires_at' => sheet[:expires_at]
81+
})
82+
spreadsheet.save
83+
get :edit, id: sheet['spreadsheet_id'], title: sheet['spreadsheet_title'], token: sheet['access_token']
7584
expect(assigns(:error)).to be(nil)
7685
end
86+
87+
it 'does not add duplicate spreadsheet' do
88+
sheet
89+
spreadsheet = Spreadsheet.new
90+
spreadsheet.add_tokens({
91+
'token' => '0ya29.QgC-kYKwAzcdh8AAABnuwXicpaXRvO_YSlv4V9J556542KazsYWEia63TlRyA',
92+
'refresh_token' => sheet[:refresh_token],
93+
'expires_at' => sheet[:expires_at]
94+
})
95+
spreadsheet.save
96+
97+
get :edit, title: sheet['spreadsheet_title'], id: sheet['spreadsheet_id'], token: '0ya29.QgC-kYKwAzcdh8AAABnuwXicpaXRvO_YSlv4V9J556542KazsYWEia63TlRyA'
98+
99+
expect(assigns(:error)).not_to be(nil)
100+
end
101+
77102
end
78103

79104
context 'Post Update' do

spec/factories/spreadsheets.rb

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
FactoryGirl.define do
44
factory :spreadsheet do |s|
5-
s.spreadsheet_id {'1g2JX-w0XtcWD7yZo-K3cSHs7PhycCwhaYYmwajsLIwE'}
6-
s.spreadsheet_title {'namecollection'}
7-
s.access_token {'ya29.QgC-5kYKwAzcdh8AAABnuwXicpaXRvO_YSlv4V9J556542KazsYWEia63TlRyA'}
8-
s.refresh_token {'1/DlAqfSUji69F3YuVAHSoWxWE0grR8aYSkb2OocVCNBw'}
9-
s.expires_at {Time.now - 3600}
5+
s.spreadsheet_id {'1g2JX-w0XtcWD7yZo-K3cSHs7PhycCwhaYYmwajsLIwE'}
6+
s.spreadsheet_title {'namecollection'}
7+
s.sequence(:access_token) {|n| "#{n}ya29.QgC-kYKwAzcdh8AAABnuwXicpaXRvO_YSlv4V9J556542KazsYWEia63TlRyA"}
8+
s.refresh_token {'1/DlAqfSUji69F3YuVAHSoWxWE0grR8aYSkb2OocVCNBw'}
9+
s.expires_at {Time.now - 3600}
1010
end
1111
end

spec/vcr/controllers/api-update-with-data.yml

+53
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)