72 lines
1.9 KiB
Ruby
72 lines
1.9 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe "Videos", type: :request do
|
|
let(:unauthorized_user) { create(:user) }
|
|
let(:authorized_user) { create(:user, :video_permission) }
|
|
|
|
describe "GET /videos" do
|
|
it "shows video page" do
|
|
get "/videos"
|
|
expect(response.body).to include "DEV 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
|
|
login_as unauthorized_user
|
|
expect { get "/videos/new" }.to raise_error(Pundit::NotAuthorizedError)
|
|
end
|
|
end
|
|
|
|
context "when authorized" do
|
|
it "allows authorized users" do
|
|
login_as 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
|
|
login_as unauthorized_user
|
|
expect { post "/videos" }.to raise_error(Pundit::NotAuthorizedError)
|
|
end
|
|
end
|
|
|
|
context "when authorized" do
|
|
before do
|
|
login_as authorized_user
|
|
end
|
|
|
|
valid_params = {
|
|
article: {
|
|
video: "something.mp4"
|
|
}
|
|
}
|
|
|
|
xit "creates an article for the logged in user" do
|
|
post "/videos", params: valid_params
|
|
end
|
|
end
|
|
end
|
|
end
|