Files
nairobi/spec/features/notifications_spec.rb
2018-03-28 09:19:58 +02:00

132 lines
3.5 KiB
Ruby

require 'rails_helper'
feature "Notifications" do
let(:user) { create :user }
background do
login_as(user)
visit root_path
end
scenario "View all" do
read1 = create(:notification, :read, user: user)
read2 = create(:notification, :read, user: user)
unread = create(:notification, user: user)
click_notifications_icon
click_link "Read"
expect(page).to have_css(".notification", count: 2)
expect(page).to have_content(read1.notifiable_title)
expect(page).to have_content(read2.notifiable_title)
expect(page).to_not have_content(unread.notifiable_title)
end
scenario "View unread" do
unread1 = create(:notification, user: user)
unread2 = create(:notification, user: user)
read = create(:notification, :read, user: user)
click_notifications_icon
click_link "Unread"
expect(page).to have_css(".notification", count: 2)
expect(page).to have_content(unread1.notifiable_title)
expect(page).to have_content(unread2.notifiable_title)
expect(page).to_not have_content(read.notifiable_title)
end
scenario "View single notification" do
proposal = create(:proposal)
notification = create(:notification, user: user, notifiable: proposal)
click_notifications_icon
first(".notification a").click
expect(page).to have_current_path(proposal_path(proposal))
visit notifications_path
expect(page).to have_css ".notification", count: 0
visit read_notifications_path
expect(page).to have_css ".notification", count: 1
end
scenario "Mark as read", :js do
notification1 = create(:notification, user: user)
notification2 = create(:notification, user: user)
click_notifications_icon
within("#notification_#{notification1.id}") do
click_link "Mark as read"
end
expect(page).to have_css(".notification", count: 1)
expect(page).to have_content(notification2.notifiable_title)
expect(page).to_not have_content(notification1.notifiable_title)
end
scenario "Mark all as read" do
notification1 = create(:notification, user: user)
notification2 = create(:notification, user: user)
click_notifications_icon
expect(page).to have_css(".notification", count: 2)
click_link "Mark all as read"
expect(page).to have_css(".notification", count: 0)
end
scenario "Mark as unread", :js do
notification1 = create(:notification, :read, user: user)
notification2 = create(:notification, user: user)
click_notifications_icon
click_link "Read"
expect(page).to have_css(".notification", count: 1)
within("#notification_#{notification1.id}") do
click_link "Mark as unread"
end
expect(page).to have_css(".notification", count: 0)
visit notifications_path
expect(page).to have_css(".notification", count: 2)
expect(page).to have_content(notification1.notifiable_title)
expect(page).to have_content(notification2.notifiable_title)
end
scenario "Bell" do
create(:notification, user: user)
visit root_path
within("#notifications") do
expect(page).to have_css(".icon-circle")
end
click_notifications_icon
first(".notification a").click
within("#notifications") do
expect(page).to_not have_css(".icon-circle")
end
end
scenario "No notifications" do
click_notifications_icon
expect(page).to have_content "You don't have new notifications."
end
scenario "User not logged in" do
logout
visit root_path
expect(page).to_not have_css("#notifications")
end
end