* Rubocop: re-activate Style/RegexpLiteral and fix violations * Add 10 seconds default timeout to DB statements
68 lines
2.1 KiB
Ruby
68 lines
2.1 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe "Videos", type: :request do
|
|
let(:unauthorized_user) { create(:user) }
|
|
let(:authorized_user) { create(:user, created_at: 1.month.ago) }
|
|
|
|
describe "GET /videos" do
|
|
it "shows video page" do
|
|
get "/videos"
|
|
expect(response.body).to include "#{community_name} on Video"
|
|
end
|
|
|
|
it "shows articles with video" do
|
|
not_video_article = create(:article)
|
|
video_article = create(:article)
|
|
video_article.update_columns(video: "video", video_thumbnail_url: "video", title: "this video")
|
|
get "/videos"
|
|
expect(response.body).to include video_article.title
|
|
expect(response.body).not_to include not_video_article.title
|
|
end
|
|
end
|
|
|
|
describe "GET /videos/new" do
|
|
context "when not authorized" do
|
|
it "redirects non-logged in users" do
|
|
expect { get "/videos/new" }.to raise_error(Pundit::NotAuthorizedError)
|
|
end
|
|
|
|
it "redirects logged in users" do
|
|
sign_in unauthorized_user
|
|
expect { get "/videos/new" }.to raise_error(Pundit::NotAuthorizedError)
|
|
end
|
|
end
|
|
|
|
context "when authorized" do
|
|
it "allows authorized users" do
|
|
sign_in authorized_user
|
|
get "/videos/new"
|
|
expect(response.body).to include "Upload Video File"
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "POST /videos" do
|
|
context "when not authorized" do
|
|
it "redirects non-logged in users" do
|
|
expect { post "/videos" }.to raise_error(Pundit::NotAuthorizedError)
|
|
end
|
|
|
|
it "redirects logged in users" do
|
|
sign_in unauthorized_user
|
|
expect { post "/videos" }.to raise_error(Pundit::NotAuthorizedError)
|
|
end
|
|
end
|
|
|
|
context "when authorized" do
|
|
before do
|
|
sign_in authorized_user
|
|
end
|
|
|
|
it "redirects to the article's edit page for the logged in user" do
|
|
stub_request(:get, %r{dw71fyauz7yz9\.cloudfront\.net/}).to_return(status: 200, body: "", headers: {})
|
|
post "/videos", params: { article: { video: "https://www.something.com/something.mp4" } }
|
|
expect(response.status).to eq(302)
|
|
end
|
|
end
|
|
end
|
|
end
|