Skip to content
Extraits de code Groupes Projets
Valider bd24d6be rédigé par jaideng123's avatar jaideng123
Parcourir les fichiers

Added cucumber test for notifications dropdown

parent 2b6ac926
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
self.ajaxLoader.show(); self.ajaxLoader.show();
self.badge.addClass("active"); self.badge.addClass("active");
self.dropdown.css("display", "block"); self.dropdown.css("display", "block");
$('.notifications').addClass("loading");
self.getNotifications(); self.getNotifications();
}; };
...@@ -92,12 +93,14 @@ ...@@ -92,12 +93,14 @@
$('.notifications').perfectScrollbar(); $('.notifications').perfectScrollbar();
self.ajaxLoader.hide(); self.ajaxLoader.hide();
isLoading = false; isLoading = false;
$('.notifications').removeClass("loading");
//Infinite Scrolling //Infinite Scrolling
$('.notifications').scroll(function(e) { $('.notifications').scroll(function(e) {
var bottom = $('.notifications').prop('scrollHeight') - $('.notifications').height(); var bottom = $('.notifications').prop('scrollHeight') - $('.notifications').height();
var currentPosition = $('.notifications').scrollTop(); var currentPosition = $('.notifications').scrollTop();
isLoading = ($('.loading').length == 1);
if (currentPosition + 50 >= bottom && notificationsLoaded <= self.notifications.length && !isLoading) { if (currentPosition + 50 >= bottom && notificationsLoaded <= self.notifications.length && !isLoading) {
isLoading = true; $('.notifications').addClass("loading");
++currentPage; ++currentPage;
self.getMoreNotifications(); self.getMoreNotifications();
} }
......
...@@ -97,3 +97,24 @@ Feature: Notifications ...@@ -97,3 +97,24 @@ Feature: Notifications
And I active the first hovercard after loading the notifications page And I active the first hovercard after loading the notifications page
When I press the aspect dropdown When I press the aspect dropdown
Then the aspect dropdown should be visible 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
\ No newline at end of file
...@@ -184,15 +184,36 @@ end ...@@ -184,15 +184,36 @@ end
And /^I scroll down$/ do And /^I scroll down$/ do
page.execute_script("window.scrollBy(0,3000000)") page.execute_script("window.scrollBy(0,3000000)")
end end
And /^I scroll down on the notifications dropdown$/ do
page.execute_script("$('.notifications').scrollTop(350)")
end
Then /^I should have scrolled down$/ do Then /^I should have scrolled down$/ do
page.evaluate_script("window.pageYOffset").should > 0 page.evaluate_script("window.pageYOffset").should > 0
end 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 Then /^the notification dropdown should be visible$/ do
find(:css, "#notification_dropdown").should be_visible find(:css, "#notification_dropdown").should be_visible
end 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 When /^I resize my window to 800x600$/ do
page.execute_script <<-JS page.execute_script <<-JS
window.resizeTo(800,600); window.resizeTo(800,600);
......
...@@ -5,6 +5,15 @@ And /^Alice has a post mentioning Bob$/ do ...@@ -5,6 +5,15 @@ And /^Alice has a post mentioning Bob$/ do
alice.post(:status_message, :text => "@{Bob Jones; #{bob.person.diaspora_handle}}", :to => aspect) alice.post(:status_message, :text => "@{Bob Jones; #{bob.person.diaspora_handle}}", :to => aspect)
end 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 And /^I mention Alice in the publisher$/ do
alice = User.find_by_email 'alice@alice.alice' alice = User.find_by_email 'alice@alice.alice'
write_in_publisher("@{Alice Smith ; #{alice.person.diaspora_handle}}") write_in_publisher("@{Alice Smith ; #{alice.person.diaspora_handle}}")
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter