jam-cloud/web/spec/features/feed_spec.rb

233 lines
6.4 KiB
Ruby

require 'spec_helper'
describe "Feed", :js => true, :type => :feature, :capybara_feature => true do
let (:user) { FactoryGirl.create(:user) }
before(:each) do
MusicSession.delete_all
Recording.delete_all
IcecastMount.delete_all
end
describe "regressions" do
describe "mount" do
it "should render when has mount" do
# regression for VRFS-1987
ams = FactoryGirl.create(:active_music_session)
FactoryGirl.create(:icecast_mount, music_session_id: ams.id)
fast_signin user, "/client#/feed"
find('#feedScreen')
find(".feed-entry.music-session-history-entry[data-music-session='#{ams.id}']")
end
end
end
describe "sessions" do
before(:each) do
create_session(creator: user)
formal_leave_by(user)
end
# it "should render avatar" do
# it " and link to profile" do
# end
# it " and render artist hover bubble" do
# end
# end
# it "should render description" do
# it " and link to session landing" do
# end
# it " and render session hover bubble" do
# end
# end
# it "should render artist name" do
# it " and link to profile" do
# end
# it " and render artist hover bubble"
# end
it "should render stats" do
visit "/client#/feed"
# initial stats
find('span.plays').should have_content('0')
find('span.comments').should have_content('0')
find('span.likes').should have_content('0')
# Comments
find('a.btn-comment').trigger(:click)
comment = 'this sounds great'
fill_in "txtComment", with: comment
find('#btn-add-comment').trigger(:click)
find('div.comment-text', text: comment)
find('#dialog-close-button', '[layout-id="comment-dialog"]').trigger(:click)
find('span.comments').should have_content('1')
# Likes
find('a.btn-like').trigger(:click)
find('span.likes').should have_content('1')
end
it "should render details" do
visit "/client#/feed"
find('.feed-details a.details').trigger(:click)
# confirm user avatar exists
find("a.avatar-tiny[user-id=\"#{user.id}\"][hoveraction=\"musician\"] img")
# confirm user name exists
find("a.musician-name[user-id=\"#{user.id}\"][hoveraction=\"musician\"]", text: user.name)
# confirm instrument icons exist
find("img[instrument-id=\"electric guitar\"]")
# confirm hover bubbles show
find("a.avatar-tiny[user-id=\"#{user.id}\"][hoveraction=\"musician\"]").hover_intent
# confirm navigate to user profile page
find(".avatar-tiny[user-id=\"#{user.id}\"][hoveraction=\"musician\"]").trigger(:click)
find("#user-profile h2[id=username]", text: user.name)
end
# it "should render play widget" do
# end
it "should allow switch from fan_access=true to fan_access=false" do
ams = FactoryGirl.create(:active_music_session)
FactoryGirl.create(:icecast_mount, music_session_id: ams.id)
ms = ams.music_session
ms.fan_access = false
ms.save!
fast_signin user, "/client#/feed"
find('#feedScreen')
find(".feed-entry.music-session-history-entry[data-music-session='#{ams.id}']")
end
end
describe "recordings" do
before(:each) do
start_recording_with(user)
stop_recording
claim_recording("my recording", "my recording description")
formal_leave_by(user)
MusicSession.delete_all
end
# it "should render avatar" do
# it " and link to profile" do
# end
# it " and render artist hover bubble" do
# end
# end
# it "should render description" do
# it " and link to recording landing" do
# end
# it " and render recording hover bubble" do
# end
# end
# it "should render artist name" do
# it " and link to profile" do
# end
# it " and render artist hover bubble"
# end
it "should render stats" do
visit "/client#/feed"
# initial stats
find('span.plays').should have_content('0')
find('span.comments').should have_content('0')
find('span.likes').should have_content('0')
# ensure Share icon exists
find('a.btn-share')
# Comments
find('a.btn-comment').trigger(:click)
comment = 'this sounds great'
fill_in "txtComment", with: comment
find('#btn-add-comment').trigger(:click)
find('div.comment-text', text: comment)
find('#dialog-close-button', '[layout-id="comment-dialog"]').trigger(:click)
find('span.comments').should have_content('1')
# Likes
find('a.btn-like').trigger(:click)
find('span.likes').should have_content('1')
end
it "should render details" do
visit "/client#/feed"
find('.feed-details a.details').trigger(:click)
# confirm user avatar exists
find("a.avatar-tiny[user-id=\"#{user.id}\"][hoveraction=\"musician\"] img")
# confirm user name exists
find("a.musician-name[user-id=\"#{user.id}\"][hoveraction=\"musician\"]", text: user.name)
# confirm instrument icons exist
find("img[instrument-id=\"electric guitar\"]")
# confirm hover bubbles show
find("a.avatar-tiny[user-id=\"#{user.id}\"][hoveraction=\"musician\"]").hover_intent
# confirm navigate to user profile page
find(".avatar-tiny[user-id=\"#{user.id}\"][hoveraction=\"musician\"]").trigger(:click)
find("#user-profile h2[id=username]", text: user.name)
end
end
describe "session participants behavior (VRFS-2193)" do
let(:creator) { FactoryGirl.create(:user) }
let(:finder_1) { FactoryGirl.create(:user) }
let(:finder_2) { FactoryGirl.create(:user) }
specify "after session ends all participants are shown in Feed" do
creator, description = create_join_session creator, finder_1
# feed shows user, finder_1
formal_leave_by(finder_1)
# feed shows user
join_session(finder_2, description: description)
# feed shows user, finder_2
formal_leave_by(finder_2)
formal_leave_by(creator)
in_client(creator) { verify_feed_shows_users creator, finder_1, finder_2 }
end
specify "during session only current participants are shown in Feed" do
creator, description = create_join_session creator, finder_1
formal_leave_by(finder_1)
join_session(finder_2, description: description)
in_client(finder_1) { verify_feed_shows_users finder_2, creator }
end
end
end