From 65956477aaeb11410d32cd7314a9183847fd992e Mon Sep 17 00:00:00 2001 From: basnal Date: Tue, 15 Jul 2014 15:46:34 +0530 Subject: [PATCH] Fine tuning of additional features --- app/controllers/spreadsheets_controller.rb | 5 ++- app/controllers/users_controller.rb | 6 +++- app/models/user.rb | 20 ++++++++--- app/views/layouts/application.html.haml | 18 ++++++---- app/views/spreadsheets/update.html.haml | 35 +++++++++++++++++++ app/views/users/index.html.haml | 7 +++- config/routes.rb | 2 +- .../spreadsheets_controller_spec.rb | 27 +------------- spec/helpers/home_helper_spec.rb | 2 +- spec/helpers/newsletters_helper_spec.rb | 2 +- spec/helpers/spreadsheets_helper_spec.rb | 2 +- spec/helpers/users_helper_spec.rb | 1 - spec/mailers/user_mailer_spec.rb | 1 - spec/models/spreadsheet_spec.rb | 2 +- 14 files changed, 81 insertions(+), 49 deletions(-) create mode 100644 app/views/spreadsheets/update.html.haml diff --git a/app/controllers/spreadsheets_controller.rb b/app/controllers/spreadsheets_controller.rb index 0933f9a..be91168 100644 --- a/app/controllers/spreadsheets_controller.rb +++ b/app/controllers/spreadsheets_controller.rb @@ -42,9 +42,8 @@ def edit def update spreadsheet = Spreadsheet.find(params['id']) @worksheet = worksheets(spreadsheet) - User.add_users_from_worksheet(@worksheet) - - redirect_to users_path + @fails = User.add_users_from_worksheet(@worksheet, 2) + #redirect_to users_path(fails: User.add_users_from_worksheet(@worksheet)) end def destroy diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f8ac86e..6d63286 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -8,7 +8,11 @@ def show end def new - @user = User.new + if params[:user] + + else + @user = User.new + end end def create diff --git a/app/models/user.rb b/app/models/user.rb index 0c78b8a..27ce5a1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -8,6 +8,7 @@ class User field :source, type: String validates :email_id, presence: true + validates_format_of :email_id, with: /\A[a-z0-9]+([\w.+-]*[a-z0-9])*@([a-z]+[\w-]*\.)+[a-z]+\Z/i, on: :create validates :username, presence: true validates :is_subscribed, presence: true validates :joined_on, presence: true @@ -17,11 +18,22 @@ class User belongs_to :newsletter, counter_cache: :users_count def self.add_users_from_worksheet(worksheet, column = 1) + fails = [] + worksheet.rows.count.times do |i| - User.create(email_id: worksheet[i + 1, column], - is_subscribed: true, - joined_on: Date.today, - source: 'Google Spreadsheet') + user = User.new( + email_id: worksheet[i + 1, column], + username: worksheet[i + 1, column], + is_subscribed: true, + joined_on: Date.today, + source: 'Google Spreadsheet') + + if user.save + else + fails << worksheet[i + 1, column] + end end + fails.delete_at(0) + fails end end diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index d80fb37..246c731 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -16,12 +16,16 @@ %li.active %a{href: "#{home_index_path}"} %h4 Home - %li - %a{href: "#{newsletters_path}"} - %h4 Newsletters - %li - %a{href: "#{new_newsletter_path}"} - %h4 Add Newsletter + %li.dropdown + %a.dropdown-toggle{"data-toggle" => "dropdown"} + %h4 + Newsletters + %span.caret + %ul.dropdown-menu{role: "menu", "aria-labelledby" => "dropdownMenu" } + %li + %a{role: "menuitem", tabindex: "1", href: "#{newsletters_path}"} Show Newsletters + %li + %a{role: "menuitem", tabindex: "2", href: "#{new_newsletter_path}"} Add Newsletter %li %a{href: "#{users_path}"} %h4 Show Users @@ -30,7 +34,7 @@ %h4 Add Users %span.caret - %ul.dropdown-menu{role: "menu", "aria-labelledby" => "dropdownMenu1" } + %ul.dropdown-menu{role: "menu", "aria-labelledby" => "dropdownMenu" } %li %a{role: "menuitem", tabindex: "-1", href: "#{new_user_path}"}Add Manually %li diff --git a/app/views/spreadsheets/update.html.haml b/app/views/spreadsheets/update.html.haml new file mode 100644 index 0000000..51fdcc7 --- /dev/null +++ b/app/views/spreadsheets/update.html.haml @@ -0,0 +1,35 @@ +%table.table.table-striped + %tr + %td{colspan: 3} + %center + %strong REPORT + %br + Following Email Ids were not added to database as they didn't satisfy our validations criteria. + %table.table.table-striped + %tr + %td It should start with + %td An alphabet or a number + %tr + %td It can contain + %td '_' + %tr + %td These Characters are not allowed + %td '.' '+' '-' + %tr + %td It should end with + %td An alphabet or a number + + %tr + %td + %strong # + %td + %strong User Email Id + - index = 0 + - @fails.each do |user| + %tr + %td + =index + -index = index + 1 + %td + = user + %tr diff --git a/app/views/users/index.html.haml b/app/views/users/index.html.haml index f8d59e2..514e2f3 100644 --- a/app/views/users/index.html.haml +++ b/app/views/users/index.html.haml @@ -1,4 +1,9 @@ -%table.table.table-striped +%table.table.table-striped + %tr + %td{colspan: 3} + %center + %strong + User's Email Id - @users.each do |user| %tr %td diff --git a/config/routes.rb b/config/routes.rb index e43d9ea..a8696dd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,7 +6,7 @@ resources :newsletters resources :home resources :user_mailer - get '/auth/:provider/callback', to: 'spreadsheets#new' + get '/auth/:provider/callback', to: 'spreadsheets#new', as: 'google_spreadsheet' get '/auth/failure', to: 'spreadsheets#failure' resources :users, :newsletters, :home, :spreadsheets diff --git a/spec/controllers/spreadsheets_controller_spec.rb b/spec/controllers/spreadsheets_controller_spec.rb index 8eb42f8..7b549b9 100644 --- a/spec/controllers/spreadsheets_controller_spec.rb +++ b/spec/controllers/spreadsheets_controller_spec.rb @@ -3,31 +3,6 @@ require 'vcr' RSpec.describe SpreadsheetsController, :type => :controller do - context 'GET User Permission' do - context 'User accepts' do - it 'redirects to new ' do - VCR.use_cassette 'controllers/api-permissions-denied' do -=begin - data = { - name: 'google', - scope: 'userinfo.profile,userinfo.email,drive,https://spreadsheets.google.com/feeds', - prompt: 'consent', - access_type: 'offline', - redirect_uri: 'http://localhost:8080/auth/google/callback' - } - RestClient.get 'https://accounts.google.com/o/oauth2/auth', - name: 'google', - scope: 'userinfo.profile,userinfo.email,drive,https://spreadsheets.google.com/feeds', - prompt: 'consent', - access_type: 'offline', - redirect_uri: 'http://localhost:8080/auth/google/callback' -=end - end - - end - end - end - context 'GET Index' do it 'it renders the index template' do get :index @@ -130,7 +105,7 @@ it 'updates the spreadsheet' do VCR.use_cassette 'controllers/api-update-with-data', record: :new_episodes do post :update, id: sheet - expect(response).to redirect_to users_path + expect(response).to render_template(:update) end end end diff --git a/spec/helpers/home_helper_spec.rb b/spec/helpers/home_helper_spec.rb index 9367fcf..987e70a 100644 --- a/spec/helpers/home_helper_spec.rb +++ b/spec/helpers/home_helper_spec.rb @@ -11,5 +11,5 @@ # end # end RSpec.describe HomeHelper, :type => :helper do - pending "add some examples to (or delete) #{__FILE__}" + end diff --git a/spec/helpers/newsletters_helper_spec.rb b/spec/helpers/newsletters_helper_spec.rb index e69ca2a..7895cd2 100644 --- a/spec/helpers/newsletters_helper_spec.rb +++ b/spec/helpers/newsletters_helper_spec.rb @@ -11,5 +11,5 @@ # end # end RSpec.describe NewslettersHelper, :type => :helper do - pending "add some examples to (or delete) #{__FILE__}" + end diff --git a/spec/helpers/spreadsheets_helper_spec.rb b/spec/helpers/spreadsheets_helper_spec.rb index 35864e6..60a8935 100644 --- a/spec/helpers/spreadsheets_helper_spec.rb +++ b/spec/helpers/spreadsheets_helper_spec.rb @@ -11,5 +11,5 @@ # end # end RSpec.describe SpreadsheetsHelper, :type => :helper do - pending "add some examples to (or delete) #{__FILE__}" + end diff --git a/spec/helpers/users_helper_spec.rb b/spec/helpers/users_helper_spec.rb index 0971a2f..6f6408c 100644 --- a/spec/helpers/users_helper_spec.rb +++ b/spec/helpers/users_helper_spec.rb @@ -11,5 +11,4 @@ # end # end RSpec.describe UsersHelper, :type => :helper do - pending "add some examples to (or delete) #{__FILE__}" end diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb index af37340..2d666d3 100644 --- a/spec/mailers/user_mailer_spec.rb +++ b/spec/mailers/user_mailer_spec.rb @@ -1,7 +1,6 @@ require "rails_helper" RSpec.describe UserMailer, :type => :mailer do - pending "add some examples to (or delete) #{__FILE__}" before(:each) do ActionMailer::Base.delivery_method = :test diff --git a/spec/models/spreadsheet_spec.rb b/spec/models/spreadsheet_spec.rb index a4927c8..77670b2 100644 --- a/spec/models/spreadsheet_spec.rb +++ b/spec/models/spreadsheet_spec.rb @@ -1,5 +1,5 @@ require 'rails_helper' RSpec.describe Spreadsheet, :type => :model do - pending "add some examples to (or delete) #{__FILE__}" + end