describe 'users/show.html.erb', type: :view do
let(:join_date) { 5.days.ago }
let(:ability) { double(current_user: current_user) }
let(:user) { stub_model(User, user_key: 'cam156', created_at: join_date) }
let(:presenter) { Sufia::UserProfilePresenter.new(user, ability) }
let(:current_user) { stub_model(User, user_key: 'mjg') }
before do
allow(view).to receive(:signed_in?).and_return(true)
allow(view).to receive(:current_user).and_return(current_user)
allow(view).to receive(:can?).and_return(true)
assign(:user, user)
assign(:presenter, presenter)
end
it "draws 3 tabs" do
render
page = Capybara::Node::Simple.new(rendered)
expect(page).to have_selector("ul#myTab.nav.nav-tabs > li > a[href='#contributions']")
expect(page).to have_selector("ul#myTab.nav.nav-tabs > li > a[href='#activity_log']")
expect(page).to have_selector(".tab-content > div#contributions.tab-pane")
expect(page).to have_selector(".tab-content > div#activity_log.tab-pane")
end
it "has the vitals" do
render
expect(rendered).to match(/Joined on #{join_date.strftime("%b %d, %Y")}/)
end
context "with trophy" do
let(:trophy_presenter) { Sufia::TrophyPresenter.new(solr_document) }
let(:solr_document) { SolrDocument.new(id: 'abc123', has_model_ssim: 'GenericWork') }
before do
allow(view).to receive(:search_session).and_return({})
allow(view).to receive(:blacklight_config).and_return(CatalogController.blacklight_config)
allow(view).to receive(:current_search_session).and_return(nil)
allow(presenter).to receive(:trophies).and_return([trophy_presenter])
end
it "has trophy" do
render
page = Capybara::Node::Simple.new(rendered)
expect(page).to have_selector(".tab-content > div#contributions.tab-pane")
expect(page).to have_selector("#trophyrow_#{solr_document.id}")
end
end
end