Skip to content

Commit cc029c8

Browse files
committed
Fine tuning of additional features
1 parent 25eee20 commit cc029c8

14 files changed

+81
-49
lines changed

app/controllers/spreadsheets_controller.rb

+2-3
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,8 @@ def edit
4242
def update
4343
spreadsheet = Spreadsheet.find(params['id'])
4444
@worksheet = worksheets(spreadsheet)
45-
User.add_users_from_worksheet(@worksheet)
46-
47-
redirect_to users_path
45+
@fails = User.add_users_from_worksheet(@worksheet, 2)
46+
#redirect_to users_path(fails: User.add_users_from_worksheet(@worksheet))
4847
end
4948

5049
def destroy

app/controllers/users_controller.rb

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ def show
88
end
99

1010
def new
11-
@user = User.new
11+
if params[:user]
12+
13+
else
14+
@user = User.new
15+
end
1216
end
1317

1418
def create

app/models/user.rb

+16-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class User
88
field :source, type: String
99

1010
validates :email_id, presence: true
11+
validates_format_of :email_id, with: /\A[a-z0-9]+([\w.+-]*[a-z0-9])*@([a-z]+[\w-]*\.)+[a-z]+\Z/i, on: :create
1112
validates :username, presence: true
1213
validates :is_subscribed, presence: true
1314
validates :joined_on, presence: true
@@ -17,11 +18,22 @@ class User
1718
belongs_to :newsletter, counter_cache: :users_count
1819

1920
def self.add_users_from_worksheet(worksheet, column = 1)
21+
fails = []
22+
2023
worksheet.rows.count.times do |i|
21-
User.create(email_id: worksheet[i + 1, column],
22-
is_subscribed: true,
23-
joined_on: Date.today,
24-
source: 'Google Spreadsheet')
24+
user = User.new(
25+
email_id: worksheet[i + 1, column],
26+
username: worksheet[i + 1, column],
27+
is_subscribed: true,
28+
joined_on: Date.today,
29+
source: 'Google Spreadsheet')
30+
31+
if user.save
32+
else
33+
fails << worksheet[i + 1, column]
34+
end
2535
end
36+
fails.delete_at(0)
37+
fails
2638
end
2739
end

app/views/layouts/application.html.haml

+11-7
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,16 @@
1616
%li.active
1717
%a{href: "#{home_index_path}"}
1818
%h4 Home
19-
%li
20-
%a{href: "#{newsletters_path}"}
21-
%h4 Newsletters
22-
%li
23-
%a{href: "#{new_newsletter_path}"}
24-
%h4 Add Newsletter
19+
%li.dropdown
20+
%a.dropdown-toggle{"data-toggle" => "dropdown"}
21+
%h4
22+
Newsletters
23+
%span.caret
24+
%ul.dropdown-menu{role: "menu", "aria-labelledby" => "dropdownMenu" }
25+
%li
26+
%a{role: "menuitem", tabindex: "1", href: "#{newsletters_path}"} Show Newsletters
27+
%li
28+
%a{role: "menuitem", tabindex: "2", href: "#{new_newsletter_path}"} Add Newsletter
2529
%li
2630
%a{href: "#{users_path}"}
2731
%h4 Show Users
@@ -30,7 +34,7 @@
3034
%h4
3135
Add Users
3236
%span.caret
33-
%ul.dropdown-menu{role: "menu", "aria-labelledby" => "dropdownMenu1" }
37+
%ul.dropdown-menu{role: "menu", "aria-labelledby" => "dropdownMenu" }
3438
%li
3539
%a{role: "menuitem", tabindex: "-1", href: "#{new_user_path}"}Add Manually
3640
%li
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
%table.table.table-striped
2+
%tr
3+
%td{colspan: 3}
4+
%center
5+
%strong REPORT
6+
%br
7+
Following Email Ids were not added to database as they didn't satisfy our validations criteria.
8+
%table.table.table-striped
9+
%tr
10+
%td It should start with
11+
%td An alphabet or a number
12+
%tr
13+
%td It can contain
14+
%td '_'
15+
%tr
16+
%td These Characters are not allowed
17+
%td '.' '+' '-'
18+
%tr
19+
%td It should end with
20+
%td An alphabet or a number
21+
22+
%tr
23+
%td
24+
%strong #
25+
%td
26+
%strong User Email Id
27+
- index = 0
28+
- @fails.each do |user|
29+
%tr
30+
%td
31+
=index
32+
-index = index + 1
33+
%td
34+
= user
35+
%tr

app/views/users/index.html.haml

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
%table.table.table-striped
1+
%table.table.table-striped
2+
%tr
3+
%td{colspan: 3}
4+
%center
5+
%strong
6+
User's Email Id
27
- @users.each do |user|
38
%tr
49
%td

config/routes.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
resources :newsletters
77
resources :home
88
resources :user_mailer
9-
get '/auth/:provider/callback', to: 'spreadsheets#new'
9+
get '/auth/:provider/callback', to: 'spreadsheets#new', as: 'google_spreadsheet'
1010
get '/auth/failure', to: 'spreadsheets#failure'
1111
resources :users, :newsletters, :home, :spreadsheets
1212

spec/controllers/spreadsheets_controller_spec.rb

+1-26
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,6 @@
33
require 'vcr'
44

55
RSpec.describe SpreadsheetsController, :type => :controller do
6-
context 'GET User Permission' do
7-
context 'User accepts' do
8-
it 'redirects to new ' do
9-
VCR.use_cassette 'controllers/api-permissions-denied' do
10-
=begin
11-
data = {
12-
name: 'google',
13-
scope: 'userinfo.profile,userinfo.email,drive,https://spreadsheets.google.com/feeds',
14-
prompt: 'consent',
15-
access_type: 'offline',
16-
redirect_uri: 'http://localhost:8080/auth/google/callback'
17-
}
18-
RestClient.get 'https://accounts.google.com/o/oauth2/auth',
19-
name: 'google',
20-
scope: 'userinfo.profile,userinfo.email,drive,https://spreadsheets.google.com/feeds',
21-
prompt: 'consent',
22-
access_type: 'offline',
23-
redirect_uri: 'http://localhost:8080/auth/google/callback'
24-
=end
25-
end
26-
27-
end
28-
end
29-
end
30-
316
context 'GET Index' do
327
it 'it renders the index template' do
338
get :index
@@ -130,7 +105,7 @@
130105
it 'updates the spreadsheet' do
131106
VCR.use_cassette 'controllers/api-update-with-data', record: :new_episodes do
132107
post :update, id: sheet
133-
expect(response).to redirect_to users_path
108+
expect(response).to render_template(:update)
134109
end
135110
end
136111
end

spec/helpers/home_helper_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
# end
1212
# end
1313
RSpec.describe HomeHelper, :type => :helper do
14-
pending "add some examples to (or delete) #{__FILE__}"
14+
1515
end

spec/helpers/newsletters_helper_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
# end
1212
# end
1313
RSpec.describe NewslettersHelper, :type => :helper do
14-
pending "add some examples to (or delete) #{__FILE__}"
14+
1515
end

spec/helpers/spreadsheets_helper_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
# end
1212
# end
1313
RSpec.describe SpreadsheetsHelper, :type => :helper do
14-
pending "add some examples to (or delete) #{__FILE__}"
14+
1515
end

spec/helpers/users_helper_spec.rb

-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@
1111
# end
1212
# end
1313
RSpec.describe UsersHelper, :type => :helper do
14-
pending "add some examples to (or delete) #{__FILE__}"
1514
end

spec/mailers/user_mailer_spec.rb

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
require "rails_helper"
22

33
RSpec.describe UserMailer, :type => :mailer do
4-
pending "add some examples to (or delete) #{__FILE__}"
54

65
before(:each) do
76
ActionMailer::Base.delivery_method = :test

spec/models/spreadsheet_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
require 'rails_helper'
22

33
RSpec.describe Spreadsheet, :type => :model do
4-
pending "add some examples to (or delete) #{__FILE__}"
4+
55
end

0 commit comments

Comments
 (0)