diaspora/spec/javascripts/mobile/mobile_conversations_spec.js

59 lines
2.7 KiB
JavaScript

describe("Diaspora.Mobile.Conversations", function() {
beforeEach(function() {
spec.loadFixture("conversations_new_mobile");
Diaspora.Page = "ConversationsNew";
});
afterEach(function() {
$(document).off("ajax:success", Diaspora.Mobile.Conversations.conversationCreateSuccess);
$(document).off("ajax:error", Diaspora.Mobile.Conversations.conversationCreateError);
});
describe("conversationCreateSuccess", function() {
it("is called when there was a successful ajax request for the conversation form", function() {
spyOn(Diaspora.Mobile.Conversations, "conversationCreateSuccess");
Diaspora.Mobile.Conversations.initialize();
$("#flash-messages").trigger("ajax:success", [{id: 23}]);
expect(Diaspora.Mobile.Conversations.conversationCreateSuccess).not.toHaveBeenCalled();
$("#new-conversation").trigger("ajax:error", [{responseText: "error"}]);
expect(Diaspora.Mobile.Conversations.conversationCreateSuccess).not.toHaveBeenCalled();
$("#new-conversation").trigger("ajax:success", [{id: 23}]);
expect(Diaspora.Mobile.Conversations.conversationCreateSuccess).toHaveBeenCalled();
});
it("redirects to the new conversation", function() {
spyOn(Diaspora.Mobile, "changeLocation");
Diaspora.Mobile.Conversations.initialize();
$("#new-conversation").trigger("ajax:success", [{id: 23}]);
expect(Diaspora.Mobile.changeLocation).toHaveBeenCalledWith(Routes.conversation(23));
});
});
describe("conversationCreateError", function() {
it("is called when an ajax request failed for the conversation form", function() {
spyOn(Diaspora.Mobile.Conversations, "conversationCreateError");
Diaspora.Mobile.Conversations.initialize();
$("#flash-messages").trigger("ajax:error", [{responseText: "error"}]);
expect(Diaspora.Mobile.Conversations.conversationCreateError).not.toHaveBeenCalled();
$("#new-conversation").trigger("ajax:success", [{id: 23}]);
expect(Diaspora.Mobile.Conversations.conversationCreateError).not.toHaveBeenCalled();
$("#new-conversation").trigger("ajax:error", [{responseText: "error"}]);
expect(Diaspora.Mobile.Conversations.conversationCreateError).toHaveBeenCalled();
});
it("shows a flash message", function() {
spyOn(Diaspora.Mobile.Alert, "handleAjaxError").and.callThrough();
Diaspora.Mobile.Conversations.initialize();
var response = {status: 422, responseText: "Oh noez! Something went wrong!"};
$("#new-conversation").trigger("ajax:error", response);
expect(Diaspora.Mobile.Alert.handleAjaxError).toHaveBeenCalledWith(response);
expect($("#flash-messages")).toHaveText("Oh noez! Something went wrong!");
});
});
});