Skip to content

Commit

Permalink
Unit testcases fix
Browse files Browse the repository at this point in the history
* Added json format responder for not_found cases in application controller

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* test view rendering spec fix

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* replaced paperclip with kt-paperclip

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* changed cache_store to memory_store from null_store for test env

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* Fix issue: Psych::DisallowedClass: Tried to load unspecified class: Time

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* explicitly specified the template name for render to fix: ActionView::MissingTemplate

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* Specified template and format for render in specs

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* Added sprockets-rails in fieri.gemspec

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* upgraded kt-paperclip version to 7 and rails patch version upgrade to 7.0.2.2

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* lint errors fix

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* passing template_path in it_behave_like for shared example

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* removed unnecessary whitelisting of Time, Symbol in Psych; Changed delayed mailer implementaion: sending simple objects instead of compless objects in params of methods invoked in an async manner

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* Added back Time and Symbol in Psych whitelist

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* fixed mailer signature

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* removed complex atrributes and replaced with simple attributes

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* replaced complex parameter to primitive datatype parameter for delayed mailer

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* rolled back argument change for CollaboratorMailer

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* Gemfile cleanup

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>

* using variable for template_path instead of string literal

Signed-off-by: Rajesh Paul <rajesh.paul@progress.com>
  • Loading branch information
RajeshPaul38 committed May 19, 2022
1 parent 1f2145f commit 54d3f07
Show file tree
Hide file tree
Showing 27 changed files with 130 additions and 93 deletions.
2 changes: 1 addition & 1 deletion src/supermarket/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ gem "kaminari"
gem "mixlib-authentication", "~> 3.0"
gem "nokogiri"
gem "octokit", "~> 4.22", require: false # 4.16+ fixes deprecations in auth
gem "paperclip"
gem "pg"
gem "pg_search"
gem "premailer-rails", group: [:development, :production]
Expand Down Expand Up @@ -55,6 +54,7 @@ gem "tzinfo-data", "~> 1.2022"
gem "listen"

gem "cookstyle", "~> 7.32.1"
gem "kt-paperclip"
gem "net-smtp", require: false

group :doc do
Expand Down
18 changes: 8 additions & 10 deletions src/supermarket/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ PATH
octokit (~> 4.16)
rails (~> 7.0.1)
sidekiq (>= 6.4, < 7.0)
sprockets-rails

GEM
remote: https://rubygems.org/
Expand Down Expand Up @@ -369,6 +370,12 @@ GEM
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
kgio (2.11.4)
kt-paperclip (7.1.1)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
marcel (~> 1.0.1)
mime-types
terrapin (~> 0.6.0)
launchy (2.5.0)
addressable (~> 2.7)
letter_opener (1.8.1)
Expand Down Expand Up @@ -419,9 +426,6 @@ GEM
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2022.0105)
mimemagic (0.3.10)
nokogiri (~> 1)
rake
mini_mime (1.1.2)
minitest (5.15.0)
mixlib-archive (1.1.7)
Expand Down Expand Up @@ -502,12 +506,6 @@ GEM
omniauth-rails_csrf_protection (1.0.1)
actionpack (>= 4.2)
omniauth (~> 2.0)
paperclip (6.1.0)
activemodel (>= 4.2.0)
activesupport (>= 4.2.0)
mime-types
mimemagic (~> 0.3.0)
terrapin (~> 0.6.0)
parallel (1.22.1)
parser (3.1.2.0)
ast (~> 2.4.1)
Expand Down Expand Up @@ -840,6 +838,7 @@ DEPENDENCIES
html_truncator
jbuilder
kaminari
kt-paperclip
launchy
letter_opener_web (~> 2.0)
license_finder
Expand All @@ -853,7 +852,6 @@ DEPENDENCIES
omniauth-github (~> 2.0.0)
omniauth-oauth2 (~> 1.7.2)
omniauth-rails_csrf_protection
paperclip
pg
pg_search
poltergeist
Expand Down
9 changes: 8 additions & 1 deletion src/supermarket/app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,14 @@ def not_found!(error = nil)
options[:notice] = error.message
end

render "exceptions/404.html.erb", options
respond_to do |format|
format.html do
render "exceptions/404", **options
end
format.json do
render json: {}, **options
end
end
end

def after_sign_in_path_for(_resource)
Expand Down
5 changes: 2 additions & 3 deletions src/supermarket/app/controllers/cookbooks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ def update

if cookbook_urls_params.key?(:up_for_adoption)
if cookbook_urls_params[:up_for_adoption] == "true"
AdoptionMailer.delay.follower_email(@cookbook)
AdoptionMailer.delay.follower_email(@cookbook.id, @cookbook.class.name)

if Feature.active?(:fieri) && ENV["FIERI_URL"].present?
FieriNotifyWorker.perform_async(
Expand Down Expand Up @@ -231,8 +231,7 @@ def undeprecate
# interested in adopting their cookbook.
#
def adoption
AdoptionMailer.delay.interest_email(@cookbook, current_user)

AdoptionMailer.delay.interest_email(@cookbook.id, @cookbook.class.name, current_user.id)
redirect_to(
cookbook_path(@cookbook),
notice: t(
Expand Down
2 changes: 1 addition & 1 deletion src/supermarket/app/controllers/tools_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ def directory
# interested in adopting their tool.
#
def adoption
AdoptionMailer.delay.interest_email(@tool, current_user)
AdoptionMailer.delay.interest_email(@tool.id, @tool.class.name, current_user.id)

redirect_to(
@tool,
Expand Down
21 changes: 13 additions & 8 deletions src/supermarket/app/mailers/adoption_mailer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,25 @@ class AdoptionMailer < ApplicationMailer
# @param cookbook_or_tool [Cookbook,Tool]
# @param user [User] the interested user
#
def interest_email(cookbook_or_tool, user)
@name = cookbook_or_tool.name
def interest_email(cookbook_or_tool_id, resource_class_name, user_id)
resource_class = resource_class_name.constantize
resource = resource_class.find_by(id: cookbook_or_tool_id)
user = User.find(user_id)
@name = resource.name
@email = user.email
@adopting_username = user.username
@to = cookbook_or_tool.owner.email
@thing = cookbook_or_tool.class.name.downcase
@to = resource.owner.email
@thing = resource_class_name.downcase

mail(to: @to, subject: "Interest in adopting your #{@name} #{@thing}")
end

def follower_email(cookbook_or_tool)
@name = cookbook_or_tool.name
@thing = cookbook_or_tool.class.name.downcase
@emails = cookbook_or_tool.followers.pluck(:email)
def follower_email(cookbook_or_tool_id, resource_class_name)
resource_class = resource_class_name.constantize
resource = resource_class.find_by(id: cookbook_or_tool_id)
@name = resource.name
@thing = resource.class.name.downcase
@emails = resource.followers.pluck(:email)

@emails.each do |email|
mail(to: email, subject: "#{@name} #{@thing} up for adoption")
Expand Down
12 changes: 6 additions & 6 deletions src/supermarket/app/mailers/cookbook_mailer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ def cookbook_deprecated_email(cookbook, replacement_cookbook, user)
#
# @param transfer_request [OwnershipTransferRequest]
#
def transfer_ownership_email(transfer_request)
@transfer_request = transfer_request
@sender = transfer_request.sender.name
@cookbook = transfer_request.cookbook.name
@add_owner_as_collaborator = if transfer_request.add_owner_as_collaborator == true
def transfer_ownership_email(transfer_request_id)
@transfer_request = OwnershipTransferRequest.find(transfer_request_id)
@sender = @transfer_request.sender.name
@cookbook = @transfer_request.cookbook.name
@add_owner_as_collaborator = if @transfer_request.add_owner_as_collaborator == true
" and add themselves as a collaborator"
end

Expand All @@ -82,6 +82,6 @@ def transfer_ownership_email(transfer_request)
you#{@add_owner_as_collaborator}.
}.squish

mail(to: transfer_request.recipient.email, subject: subject)
mail(to: @transfer_request.recipient.email, subject: subject)
end
end
2 changes: 1 addition & 1 deletion src/supermarket/app/models/cookbook.rb
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ def transfer_ownership(initiator, recipient, add_owner_as_collaborator = false)
add_owner_as_collaborator: add_owner_as_collaborator,
cookbook: self
)
CookbookMailer.delay.transfer_ownership_email(transfer_request)
CookbookMailer.delay.transfer_ownership_email(transfer_request.id)
"cookbook.ownership_transfer.email_sent"
end
end
Expand Down
2 changes: 1 addition & 1 deletion src/supermarket/config/environments/test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
config.cache_store = :null_store
config.cache_store = :memory_store

# Raise exceptions instead of rendering exception templates.
config.action_dispatch.show_exceptions = false
Expand Down
14 changes: 14 additions & 0 deletions src/supermarket/config/initializers/psych_initializer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Psych::ClassLoader::ALLOWED_PSYCH_CLASSES = [ Symbol, Time ].freeze

module Psych
class ClassLoader
ALLOWED_PSYCH_CLASSES = [].freeze unless defined? ALLOWED_PSYCH_CLASSES
class Restricted < ClassLoader
def initialize(classes, symbols)
@classes = classes + Psych::ClassLoader::ALLOWED_PSYCH_CLASSES.map(&:to_s)
@symbols = symbols
super()
end
end
end
end
8 changes: 8 additions & 0 deletions src/supermarket/engines/fieri/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ PATH
octokit (~> 4.16)
rails (~> 7.0.1)
sidekiq (>= 6.4, < 7.0)
sprockets-rails

GEM
remote: https://rubygems.org/
Expand Down Expand Up @@ -248,6 +249,13 @@ GEM
connection_pool (>= 2.2.2)
rack (~> 2.0)
redis (>= 4.2.0)
sprockets (4.0.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.4.2)
actionpack (>= 5.2)
activesupport (>= 5.2)
sprockets (>= 3.0.0)
sqlite3 (1.4.2)
strscan (3.0.3)
thor (1.2.1)
Expand Down
1 change: 1 addition & 0 deletions src/supermarket/engines/fieri/fieri.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ Gem::Specification.new do |s|
s.add_dependency "rails", "~> 7.0.1"
s.add_dependency "sidekiq", ">= 6.4", "< 7.0"
s.add_dependency "net-smtp"
s.add_dependency "sprockets-rails"
end
5 changes: 1 addition & 4 deletions src/supermarket/spec/mailers/adoption_mailer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
let(:user) { create(:user) }

subject do
AdoptionMailer.interest_email(cookbook, user)
AdoptionMailer.interest_email(cookbook.id, cookbook.class.name, user.id)
end

context "in the to address" do
Expand All @@ -32,9 +32,6 @@
end

it "includes the username of the adopting user" do
# Making the username different from the email
allow(user).to receive(:username).and_return("someone")

expect(subject.text_part.to_s).to include(user.username)
expect(subject.html_part.to_s).to include(user.username)
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
shared_examples "community stats" do
# shared_examples "community stats" do
shared_examples_for "community stats" do |template|
it "displays cookbooks and chefs as singular if there is only 1" do
assign(:cookbook_count, 1)
assign(:user_count, 1)
render
render template: template
expect(rendered).to match(%r{1 Cookbook</span>})
expect(rendered).to match(%r{1 Chef</span>})
end

it "displays cookbooks and chefs as plural if there is more than 1" do
assign(:cookbook_count, 2)
assign(:user_count, 2)
render
render template: template
expect(rendered).to match(%r{2 Cookbooks</span>})
expect(rendered).to match(%r{2 Chefs</span>})
end

it "delimits numbers correctly if there are more than 999" do
assign(:cookbook_count, 1000)
assign(:user_count, 1000)
render
render template: template
expect(rendered).to match(%r{1,000 Cookbooks</span>})
expect(rendered).to match(%r{1,000 Chefs</span>})
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
require "spec_helper"
describe "cookbook_mailer/cookbook_deprecated_email.html.erb" do
let(:template_path) { "cookbook_mailer/cookbook_deprecated_email" }
context "renders mailer page" do
let!(:current_user) { create(:user, first_name: "test_user") }
let!(:system_email) { create(:system_email, name: "Cookbook deprecated") }
Expand All @@ -20,12 +21,12 @@
end

it "has cookbook name rendered" do
render
render template: template_path
expect(rendered).to have_selector("p", text: cookbook.name)
end

it "has cookbook deprecation reason rendered" do
render
render template: template_path
expect(rendered).to have_selector("p", text: cookbook.cookbook_deprecation_reason)
end
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
require "spec_helper"

describe "cookbooks/directory.html.erb" do
let(:template_path) { "cookbooks/directory" }

before do
assign(:featured_cookbooks, [])
assign(:recently_updated_cookbooks, [])
Expand All @@ -9,15 +11,15 @@
end

it "has Test Kitchen text correct" do
render
render template: template_path
test_kitchen_text = "Test Kitchen documentation"
expect(rendered).to have_selector("a[href]", text: test_kitchen_text)
end

it "has workstation link pointing to correct url" do
render
render template: template_path
expect(rendered).to have_link("Chef Workstation", href: "https://www.chef.io/downloads/tools/workstation")
end

it_behaves_like "community stats"
it_behaves_like "community stats", "cookbooks/directory"
end
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
require "spec_helper"

describe "cookbooks/index.atom.builder" do
let(:template_path) { "cookbooks/index" }
let(:render_formats) { [:atom] }
let!(:test_cookbook_5_0) do
create(
:cookbook_version,
Expand Down Expand Up @@ -34,7 +36,7 @@
describe "some cookbooks" do
before do
assign(:cookbooks, [test_cookbook, test_cookbook2])
render
render template: template_path, formats: render_formats
end

it "displays the feed title" do
Expand Down Expand Up @@ -64,7 +66,7 @@
describe "no cookbooks" do
before do
assign(:cookbooks, [])
render
render template: template_path, formats: render_formats
end

it "still works if @cookbooks is empty" do
Expand Down
5 changes: 3 additions & 2 deletions src/supermarket/spec/views/cookbooks/index.html.erb_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
require "spec_helper"

describe "cookbooks/index.html.erb" do
let(:template_path) { "cookbooks/index" }
let!(:current_user) { create(:user, first_name: "test_user") }

let(:cookbook_version) {
Expand Down Expand Up @@ -49,12 +50,12 @@
end

it "has span cookbooks text" do
render
render template: template_path
expect(rendered).to have_selector("span", text: "2 Cookbooks")
end

it "has RSS text correct" do
render
render template: template_path
expect(rendered).to have_selector("a[href]", text: "RSS")
end
end
Loading

0 comments on commit 54d3f07

Please sign in to comment.