require 'rails_helper' feature 'Stats' do background do admin = create(:administrator) login_as(admin.user) visit root_path end context 'Summary' do scenario 'General' do create(:debate) 2.times { create(:proposal) } 3.times { create(:comment, commentable: Debate.first) } 4.times { create(:visit) } visit admin_stats_path expect(page).to have_content "Debates 1" expect(page).to have_content "Proposals 2" expect(page).to have_content "Comments 3" expect(page).to have_content "Visits 4" end scenario 'Votes' do debate = create(:debate) create(:vote, votable: debate) proposal = create(:proposal) 2.times { create(:vote, votable: proposal) } comment = create(:comment) 3.times { create(:vote, votable: comment) } visit admin_stats_path expect(page).to have_content "Debate votes 1" expect(page).to have_content "Proposal votes 2" expect(page).to have_content "Comment votes 3" expect(page).to have_content "Total votes 6" end scenario 'Users' do 1.times { create(:user, :level_three) } 2.times { create(:user, :level_two) } 3.times { create(:user) } visit admin_stats_path expect(page).to have_content "Level three users 1" expect(page).to have_content "Level two users 2" expect(page).to have_content "Verified users 3" expect(page).to have_content "Unverified users 4" expect(page).to have_content "Total users 7" end end scenario 'Level 2 user' do create(:geozone) visit account_path click_link 'Verify my account' verify_residence confirm_phone visit admin_stats_path expect(page).to have_content "Level 2 User (1)" end context "Proposal notifications" do scenario "Summary stats" do proposal = create(:proposal) create(:proposal_notification, proposal: proposal) create(:proposal_notification, proposal: proposal) create(:proposal_notification) visit admin_stats_path click_link "Proposal notifications" within("#proposal_notifications_count") do expect(page).to have_content "3" end within("#proposals_with_notifications_count") do expect(page).to have_content "2" end end scenario "Index" do 3.times { create(:proposal_notification) } visit admin_stats_path click_link "Proposal notifications" expect(page).to have_css(".proposal_notification", count: 3) ProposalNotification.all.each do |proposal_notification| expect(page).to have_content proposal_notification.title expect(page).to have_content proposal_notification.body end end end context "Direct messages" do scenario "Summary stats" do sender = create(:user, :level_two) create(:direct_message, sender: sender) create(:direct_message, sender: sender) create(:direct_message) visit admin_stats_path click_link "Direct messages" within("#direct_messages_count") do expect(page).to have_content "3" end within("#users_who_have_sent_message_count") do expect(page).to have_content "2" end end end end