From 8542ea33f699e8c09346588821649d3e041c6e64 Mon Sep 17 00:00:00 2001 From: nalabjp Date: Sun, 12 Nov 2017 18:12:20 +0900 Subject: [PATCH 1/9] Define mock helpers for Scrivito --- spec/rails_helper.rb | 2 ++ spec/support/scrivito_mock_helper.rb | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 spec/support/scrivito_mock_helper.rb diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 438342967..9a5ecbc5c 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -54,4 +54,6 @@ config.filter_rails_from_backtrace! # arbitrary gems may also be filtered via: # config.filter_gems_from_backtrace("gem name") + + config.include ScrivitoMockHelpers end diff --git a/spec/support/scrivito_mock_helper.rb b/spec/support/scrivito_mock_helper.rb new file mode 100644 index 000000000..cfb9f0f98 --- /dev/null +++ b/spec/support/scrivito_mock_helper.rb @@ -0,0 +1,21 @@ +module ScrivitoMockHelpers + def mock_obj(klass, attributes={}) + obj = klass.new + + attributes.each do |name, value| + allow(obj).to receive(name) { value } + end + + obj + end + + def mock_widget(klass, attributes={}) + widget = klass.new + + attributes.each do |name, value| + allow(widget).to receive(name) { value } + end + + widget + end +end From dfecdf39adb1526db4fe334708e48928981a4bcd Mon Sep 17 00:00:00 2001 From: nalabjp Date: Mon, 13 Nov 2017 01:34:54 +0900 Subject: [PATCH 2/9] Use mock --- spec/controllers/blog_post_page_controller_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/controllers/blog_post_page_controller_spec.rb b/spec/controllers/blog_post_page_controller_spec.rb index 01a2db71b..0f4c573e6 100644 --- a/spec/controllers/blog_post_page_controller_spec.rb +++ b/spec/controllers/blog_post_page_controller_spec.rb @@ -5,7 +5,7 @@ describe "GET Blog Post Page" do it "normal blog post" do - obj = Obj.find_by_permalink!("news/2016/12/12/new-backend") + obj = mock_obj(BlogPostPage, permalink: 'news/2016/12/12/new-backend', last_changed: Time.current) request.for_scrivito_obj(obj) get :index expect(assigns(:sts_posts)).to eq nil @@ -15,7 +15,7 @@ end it "sotechsha post" do - obj = Obj.find_by_permalink!("sotechsha/0") + obj = mock_obj(BlogPostPage, permalink: 'sotechsha/0', last_changed: Time.current) request.for_scrivito_obj(obj) get :index sts_posts = BlogPostPage.where(:_permalink, :starts_with, 'sotechsha/').order(created: :asc) From 7c44241af3b2cf53b8540e3568846959e7d0bdd5 Mon Sep 17 00:00:00 2001 From: nalabjp Date: Mon, 13 Nov 2017 01:35:18 +0900 Subject: [PATCH 3/9] Use mock --- spec/controllers/docs_controller_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/controllers/docs_controller_spec.rb b/spec/controllers/docs_controller_spec.rb index d7421514c..7961d862f 100644 --- a/spec/controllers/docs_controller_spec.rb +++ b/spec/controllers/docs_controller_spec.rb @@ -17,6 +17,8 @@ end it 'when invalid filename' do + obj = mock_obj(PlainPage) + allow(Obj).to receive(:root) { obj } get :show, params: { id: '../not_found' } expect(response).to redirect_to controller.scrivito_path(Obj.root) expect(response.status).to eq 302 From 1383c2edebbb1c97da46aa06ad55906a21d3d3b1 Mon Sep 17 00:00:00 2001 From: nalabjp Date: Mon, 13 Nov 2017 01:35:40 +0900 Subject: [PATCH 4/9] Use mock --- spec/controllers/sessions_controller_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/controllers/sessions_controller_spec.rb b/spec/controllers/sessions_controller_spec.rb index 7f083909d..0baef01c3 100644 --- a/spec/controllers/sessions_controller_spec.rb +++ b/spec/controllers/sessions_controller_spec.rb @@ -1,6 +1,11 @@ require 'rails_helper' RSpec.describe SessionsController, type: :controller do + before(:each) do + obj = mock_obj(PlainPage) + allow(Obj).to receive(:root) { obj } + end + describe "GET #create" do it "param match" do get :create, params: { email: ENV['SCRIVITO_EMAIL'], From ae4e383fcea9bbc054ad85a16004390a49cd306f Mon Sep 17 00:00:00 2001 From: nalabjp Date: Mon, 13 Nov 2017 01:35:56 +0900 Subject: [PATCH 5/9] Use dummy environment variables --- spec/controllers/sessions_controller_spec.rb | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/spec/controllers/sessions_controller_spec.rb b/spec/controllers/sessions_controller_spec.rb index 0baef01c3..ec17ad7d6 100644 --- a/spec/controllers/sessions_controller_spec.rb +++ b/spec/controllers/sessions_controller_spec.rb @@ -6,6 +6,27 @@ allow(Obj).to receive(:root) { obj } end + around(:each) do |example| + begin + @old_email = ENV['SCRIVITO_EMAIL'] if ENV.key?('SCRIVITO_EMAIL') + @old_password = ENV['SCRIVITO_PASSWORD'] if ENV.key?('SCRIVITO_PASSWORD') + ENV['SCRIVITO_EMAIL'] = 'dummy@example.com' + ENV['SCRIVITO_PASSWORD'] = 'dummy_password' + example.run + ensure + if @old_email + ENV['SCRIVITO_EMAIL'] = @old_email + else + ENV.delete('SCRIVITO_EMAIL') + end + if @old_password + ENV['SCRIVITO_PASSWORD'] = @old_password + else + ENV.delete('SCRIVITO_PASSWORD') + end + end + end + describe "GET #create" do it "param match" do get :create, params: { email: ENV['SCRIVITO_EMAIL'], From beff8fa0ac2ebdc583fce6b2dc471273a005cc48 Mon Sep 17 00:00:00 2001 From: nalabjp Date: Mon, 13 Nov 2017 01:36:20 +0900 Subject: [PATCH 6/9] Use mock --- spec/controllers/sotechsha_overview_page_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/sotechsha_overview_page_controller_spec.rb b/spec/controllers/sotechsha_overview_page_controller_spec.rb index 91436f82c..be600e1a8 100644 --- a/spec/controllers/sotechsha_overview_page_controller_spec.rb +++ b/spec/controllers/sotechsha_overview_page_controller_spec.rb @@ -5,7 +5,7 @@ describe "GET #index" do it "set @sts_post" do - obj = Obj.find_by_permalink!("sotechsha") + obj = mock_obj(PlainPage, permalink: 'sotechsha', last_changed: Time.current) request.for_scrivito_obj(obj) get :index sts_posts = BlogPostPage.where(:_permalink, :starts_with, 'sotechsha/').order(created: :asc) From 1376a20919e04671f207e656b204a0f1f43a5f69 Mon Sep 17 00:00:00 2001 From: nalabjp Date: Mon, 13 Nov 2017 01:36:34 +0900 Subject: [PATCH 7/9] Use mock --- spec/requests/news_pages_spec.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/requests/news_pages_spec.rb b/spec/requests/news_pages_spec.rb index 233a54bbd..dde29be28 100644 --- a/spec/requests/news_pages_spec.rb +++ b/spec/requests/news_pages_spec.rb @@ -3,6 +3,8 @@ RSpec.describe "NewsPages", type: :request do describe "GET /news/2016/12/12/new-backend" do it "Blog post should be rendered" do + obj = mock_obj(Obj, permalink: "/news/2016/12/12/new-backend") + allow(Scrivito::BasicObj).to receive(:find_by_permalink).with("news/2016/12/12/new-backend") { obj } get '/news/2016/12/12/new-backend' expect(response).to have_http_status(200) end From d15c158089222c8ff3dc2a35171703bae9674fa7 Mon Sep 17 00:00:00 2001 From: nalabjp Date: Mon, 13 Nov 2017 01:36:44 +0900 Subject: [PATCH 8/9] Use mock --- spec/requests/sotechshas_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/requests/sotechshas_spec.rb b/spec/requests/sotechshas_spec.rb index 04b3e58b3..2f2fc83e0 100644 --- a/spec/requests/sotechshas_spec.rb +++ b/spec/requests/sotechshas_spec.rb @@ -5,6 +5,8 @@ describe "Quizzes should be permalink" do it "Quizzes should be permalink" do (0..6).each do |num| + obj = mock_obj(Obj, permalink: "/sotechsha/#{num}") + allow(Scrivito::BasicObj).to receive(:find_by_permalink).with("sotechsha/#{num}") { obj } get "/sotechsha/#{num}" expect(response).to have_http_status(200) end @@ -13,6 +15,8 @@ describe "GET /sotechsha/gazou" do it "Gazoulink should be permalink" do + obj = mock_obj(Obj, permalink: "/sotechsha/gazou") + allow(Scrivito::BasicObj).to receive(:find_by_permalink).with("sotechsha/gazou") { obj } get "/sotechsha/gazou" expect(response).to have_http_status(200) end From ab18b452d8b949a67838facbe0461ddff61ad62f Mon Sep 17 00:00:00 2001 From: nalabjp Date: Sun, 19 Nov 2017 20:50:11 +0900 Subject: [PATCH 9/9] Pending feature spec --- spec/features/users_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/users_spec.rb b/spec/features/users_spec.rb index 8e5543559..2bf6002a5 100644 --- a/spec/features/users_spec.rb +++ b/spec/features/users_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' include Scrivito::ControllerHelper -RSpec.feature "Users", type: :feature do +RSpec.xfeature "Users", type: :feature do subject { page } describe "log in" do