Skip to content

Commit

Permalink
Added cucumber test for notifications dropdown
Browse files Browse the repository at this point in the history
  • Loading branch information
jaideng123 committed Oct 6, 2014
1 parent 2b6ac92 commit bd24d6b
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 1 deletion.
5 changes: 4 additions & 1 deletion app/assets/javascripts/widgets/notifications-badge.js
Expand Up @@ -46,6 +46,7 @@
self.ajaxLoader.show();
self.badge.addClass("active");
self.dropdown.css("display", "block");
$('.notifications').addClass("loading");
self.getNotifications();

};
Expand Down Expand Up @@ -92,12 +93,14 @@
$('.notifications').perfectScrollbar();
self.ajaxLoader.hide();
isLoading = false;
$('.notifications').removeClass("loading");
//Infinite Scrolling
$('.notifications').scroll(function(e) {
var bottom = $('.notifications').prop('scrollHeight') - $('.notifications').height();
var currentPosition = $('.notifications').scrollTop();
isLoading = ($('.loading').length == 1);
if (currentPosition + 50 >= bottom && notificationsLoaded <= self.notifications.length && !isLoading) {
isLoading = true;
$('.notifications').addClass("loading");
++currentPage;
self.getMoreNotifications();
}
Expand Down
21 changes: 21 additions & 0 deletions features/desktop/notifications.feature
Expand Up @@ -97,3 +97,24 @@ Feature: Notifications
And I active the first hovercard after loading the notifications page
When I press the aspect dropdown
Then the aspect dropdown should be visible

Scenario: scrollbar shows up when >5 notifications
Given a user with email "bob@bob.bob" is connected with "alice@alice.alice"
And Alice has 6 posts mentioning Bob
When I sign in as "bob@bob.bob"
And I follow "Notifications" in the header
Then the notification dropdown should be visible
Then the notification dropdown scrollbar should be visible

Scenario: dropdown will load more elements when bottom is reached
Given a user with email "bob@bob.bob" is connected with "alice@alice.alice"
And Alice has 20 posts mentioning Bob
When I sign in as "bob@bob.bob"
And I follow "Notifications" in the header
Then the notification dropdown should be visible
Then the notification dropdown scrollbar should be visible
Then there should be 10 notifications loaded
When I scroll down on the notifications dropdown
Then I should have scrolled down on the notification dropdown
And I wait for notifications to load
Then there should be 15 notifications loaded
21 changes: 21 additions & 0 deletions features/step_definitions/custom_web_steps.rb
Expand Up @@ -184,15 +184,36 @@ def take_screenshots_with_login
And /^I scroll down$/ do
page.execute_script("window.scrollBy(0,3000000)")
end
And /^I scroll down on the notifications dropdown$/ do
page.execute_script("$('.notifications').scrollTop(350)")
end

Then /^I should have scrolled down$/ do
page.evaluate_script("window.pageYOffset").should > 0
end

Then /^I should have scrolled down on the notification dropdown$/ do
page.evaluate_script("$('.notifications').scrollTop()").should > 0
end


Then /^the notification dropdown should be visible$/ do
find(:css, "#notification_dropdown").should be_visible
end

Then /^the notification dropdown scrollbar should be visible$/ do
find(:css, ".ps-active-y").should be_visible
end

Then /^there should be (\d+) notifications loaded$/ do |n|
result = page.evaluate_script("$('.notification_element').length")
result.should == n.to_i
end

And "I wait for notifications to load" do
page.should_not have_selector(".loading")
end

When /^I resize my window to 800x600$/ do
page.execute_script <<-JS
window.resizeTo(800,600);
Expand Down
9 changes: 9 additions & 0 deletions features/step_definitions/mention_steps.rb
Expand Up @@ -5,6 +5,15 @@
alice.post(:status_message, :text => "@{Bob Jones; #{bob.person.diaspora_handle}}", :to => aspect)
end

And /^Alice has (\d+) posts mentioning Bob$/ do |n|
n.to_i.times do
alice = User.find_by_email 'alice@alice.alice'
bob = User.find_by_email 'bob@bob.bob'
aspect = alice.aspects.where(:name => "Besties").first
alice.post(:status_message, :text => "@{Bob Jones; #{bob.person.diaspora_handle}}", :to => aspect)
end
end

And /^I mention Alice in the publisher$/ do
alice = User.find_by_email 'alice@alice.alice'
write_in_publisher("@{Alice Smith ; #{alice.person.diaspora_handle}}")
Expand Down

0 comments on commit bd24d6b

Please sign in to comment.