diaspora/spec/javascripts/app/views/notifications_view_spec.js
Steffen van Bergerem 700df9af23 Fix jasmine tests
Fix notifications jasmine tests
2015-06-04 18:05:44 +02:00

106 lines
3.9 KiB
JavaScript

describe("app.views.Notifications", function(){
beforeEach(function() {
spec.loadFixture("notifications");
this.view = new app.views.Notifications({el: '#notifications_container'});
});
context('mark read', function() {
beforeEach(function() {
this.unreadN = $('.stream_element.unread').first();
this.guid = this.unreadN.data("guid");
});
it('calls "setRead"', function() {
spyOn(this.view, "setRead");
this.unreadN.find('.unread-toggle').trigger('click');
expect(this.view.setRead).toHaveBeenCalledWith(this.guid);
});
});
context('mark unread', function() {
beforeEach(function() {
this.readN = $('.stream_element.read').first();
this.guid = this.readN.data("guid");
});
it('calls "setUnread"', function() {
spyOn(this.view, "setUnread");
this.readN.find('.unread-toggle').trigger('click');
expect(this.view.setUnread).toHaveBeenCalledWith(this.guid);
});
});
context('updateView', function() {
beforeEach(function() {
this.readN = $('.stream_element.read').first();
this.guid = this.readN.data('guid');
this.type = this.readN.data('type');
});
it('changes the "all notifications" count', function() {
var badge = $(".list-group > a:eq(0) .badge");
var count = parseInt(badge.text());
this.view.updateView(this.guid, this.type, true);
expect(parseInt(badge.text())).toBe(count + 1);
this.view.updateView(this.guid, this.type, false);
expect(parseInt(badge.text())).toBe(count);
});
it('changes the notification type count', function() {
var badge = $(".list-group > a[data-type=" + this.type + "] .badge");
var count = parseInt(badge.text());
this.view.updateView(this.guid, this.type, true);
expect(parseInt(badge.text())).toBe(count + 1);
this.view.updateView(this.guid, this.type, false);
expect(parseInt(badge.text())).toBe(count);
});
it('toggles the unread class and changes the title', function() {
this.view.updateView(this.readN.data('guid'), this.readN.data('type'), true);
expect(this.readN.hasClass('unread')).toBeTruthy();
expect(this.readN.hasClass('read')).toBeFalsy();
expect(this.readN.find('.unread-toggle .entypo').data('original-title')).toBe(Diaspora.I18n.t('notifications.mark_read'));
this.view.updateView(this.readN.data('guid'), this.readN.data('type'), false);
expect(this.readN.hasClass('read')).toBeTruthy();
expect(this.readN.hasClass('unread')).toBeFalsy();
expect(this.readN.find('.unread-toggle .entypo').data('original-title')).toBe(Diaspora.I18n.t('notifications.mark_unread'));
});
context("with a header", function() {
beforeEach(function() {
loginAs({name: "alice", avatar : {small : "http://avatar.com/photo.jpg"}, notifications_count : 2});
this.header = new app.views.Header();
$("header").prepend(this.header.el);
this.header.render();
});
it("changes the header notifications count", function() {
var badge = $("#notification_badge .badge_count");
var count = parseInt(badge.text(), 10);
this.view.updateView(this.guid, this.type, true);
expect(parseInt(badge.text(), 10)).toBe(count + 1);
this.view.updateView(this.guid, this.type, false);
expect(parseInt(badge.text(), 10)).toBe(count);
});
context("markAllRead", function() {
it("calls setRead for each unread notification", function(){
spyOn(this.view, "setRead");
this.view.markAllRead();
expect(this.view.setRead).toHaveBeenCalledWith(this.view.$('.stream_element.unread').eq(0).data('guid'));
this.view.markAllRead();
expect(this.view.setRead).toHaveBeenCalledWith(this.view.$('.stream_element.unread').eq(1).data('guid'));
});
});
});
});
});