Skip to content

Commit

Permalink
Merge pull request #1590 from bgeuken/rspec_messages
Browse files Browse the repository at this point in the history
[api][webui] Migrate Webui::MessagesTest test to rspec
  • Loading branch information
mdeniz committed Mar 2, 2016
2 parents be775d6 + 416f68b commit 651e5a2
Show file tree
Hide file tree
Showing 7 changed files with 183 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/api/app/controllers/webui/main_controller.rb
Expand Up @@ -87,7 +87,7 @@ def add_news_dialog
end

def add_news
if params[:message].nil? or params[:severity].empty?
if params[:message].nil? or params[:severity].blank?
flash[:error] = 'Please provide a message and severity'
redirect_to(:action => 'index') and return
end
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 22 additions & 7 deletions src/api/spec/controllers/webui/feeds_controller_spec.rb
Expand Up @@ -4,44 +4,59 @@
let!(:project) { create(:project) }
let!(:commit) { create(:project_log_entry, project: project) }
let!(:old_commit) { create(:project_log_entry, project: project, datetime: 'Tue, 09 Feb 2015') }
let(:admin_user) { create(:admin_user) }

describe "GET commits" do
it "assigns @commits" do
get(:commits, { project: project, format: 'atom' })
get(:commits, { project: project, format: 'atom' })
expect(assigns(:commits)).to eq([commit])
end

it "assigns @project" do
get(:commits, { project: project, format: 'atom' })
get(:commits, { project: project, format: 'atom' })
expect(assigns(:project)).to eq(project)
end

it "fails if project is not existent" do
expect do
get(:commits, { project: 'DoesNotExist', format: 'atom' })
get(:commits, { project: 'DoesNotExist', format: 'atom' })
end.to raise_error ActiveRecord::RecordNotFound
end

it "renders the rss template" do
get(:commits, { project: project, format: 'atom' })
get(:commits, { project: project, format: 'atom' })
expect(response).to render_template("webui/feeds/commits")
end

it "honors time parameters" do
get(:commits, { project: project, format: 'atom', starting_at: "2015-02-09", ending_at: "2015-02-10" })
get(:commits, { project: project, format: 'atom', starting_at: "2015-02-09", ending_at: "2015-02-10" })
expect(assigns(:commits)).to eq([old_commit])
end

it "honors sourceaccess flag" do
create(:sourceaccess_flag, project: project)

get(:commits, { project: project, format: 'atom' })
get(:commits, { project: project, format: 'atom' })
expect(response).to have_http_status(:forbidden)
end
end

describe "GET news" do
skip
before do
(1..5).each do |n|
create(:status_message, message: "message #{n}", user: admin_user)
# Make sure created_at timestamps differ
Timecop.travel(1.second)
end

get(:news, { project: project, format: 'rss' })
end

it "provides a rss feed" do
expect(response).to have_http_status(:success)
expect(assigns(:news).map(&:message)).to match_array(["message 1", "message 2", "message 3", "message 4", "message 5"])
expect(response).to render_template("webui/feeds/news")
end
end

describe "GET latest_updates" do
Expand Down
73 changes: 73 additions & 0 deletions src/api/spec/controllers/webui/main_controller_spec.rb
@@ -0,0 +1,73 @@
require 'rails_helper'

RSpec.describe Webui::MainController do
let(:user) { create(:confirmed_user) }
let(:admin_user) { create(:admin_user) }

describe "POST add_news" do
it "create a status message" do
login(admin_user)

post :add_news, message: "Some message", severity: "Green"
expect(response).to redirect_to(root_path)
message = StatusMessage.where(user: admin_user, message: "Some message", severity: "Green")
expect(message).to exist
end

context "non-admin users" do
before do
login(user)

post :add_news, message: "Some message", severity: "Green"
end

it "does not create a status message" do
expect(response).to redirect_to(root_path)
message = StatusMessage.where(user: admin_user, message: "Some message", severity: "Green")
expect(message).not_to exist
end
end

context "empty message" do
before do
login(admin_user)
post :add_news, severity: "Green"
end

it { expect(flash[:error]).to eq("Please provide a message and severity") }
end

context "empty severity" do
before do
login(admin_user)
post :add_news, message: "Some message"
end

it { expect(flash[:error]).to eq("Please provide a message and severity") }
end
end

describe "POST delete_message" do
let(:message) { message = create(:status_message, user: admin_user) }

it "marks a message as deleted" do
login(admin_user)

post :delete_message, message_id: message.id
expect(response).to redirect_to(root_path)
expect(message.reload.deleted_at).to be_a_kind_of(ActiveSupport::TimeWithZone)
end

context "non-admin users" do
before do
login(user)
post :delete_message, message_id: message.id
end

it "can't delete messages" do
expect(response).to redirect_to(root_path)
expect(message.reload.deleted_at).to be nil
end
end
end
end
7 changes: 7 additions & 0 deletions src/api/spec/factories/status_message.rb
@@ -0,0 +1,7 @@
FactoryGirl.define do
factory :status_message do
message Faker::Lorem.paragraph
severity "Green"
user
end
end
24 changes: 24 additions & 0 deletions src/api/spec/features/webui/main_page_spec.rb
@@ -0,0 +1,24 @@
require "browser_helper"

RSpec.feature "OBS main page", :type => :feature, :js => true do
let(:admin_user) { create(:admin_user) }
let(:user) { create(:confirmed_user) }

describe "#index" do
it "shows the latest four status messages" do
(1..5).each do |n|
create(:status_message, message: "message #{n}", user: admin_user)
# Make sure created_at timestamps differ
Timecop.travel(1.second)
end

visit root_path

expect(page).not_to have_content("message 1")
expect(page).to have_content("message 2")
expect(page).to have_content("message 3")
expect(page).to have_content("message 4")
expect(page).to have_content("message 5")
end
end
end
3 changes: 3 additions & 0 deletions src/api/test/functional/webui/messages_test.rb
@@ -1,6 +1,9 @@
require_relative '../../test_helper'

class Webui::MessagesTest < Webui::IntegrationTest
# spec/controllers/webui/feeds_controller_spec.rb
# spec/controllers/webui/main_controller_spec.rb
# spec/features/webui/main_page_spec.rb
def test_add_and_remove_message
use_js

Expand Down

0 comments on commit 651e5a2

Please sign in to comment.