utils.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. (function (root, factory) {
  2. define("test_utils", [
  3. 'jquery',
  4. 'mock'
  5. ],
  6. function($, mock) {
  7. return factory($, mock);
  8. });
  9. }(this, function ($, mock) {
  10. var utils = {};
  11. utils.closeAllChatBoxes = function () {
  12. var i, chatbox;
  13. for (i=converse.chatboxes.models.length-1; i>-1; i--) {
  14. chatbox = converse.chatboxes.models[i];
  15. converse.chatboxviews.get(chatbox.get('id')).close();
  16. }
  17. return this;
  18. };
  19. utils.removeAllChatBoxes = function () {
  20. var i, chatbox, num_chatboxes = converse.chatboxes.models.length;
  21. for (i=num_chatboxes-1; i>-1; i--) {
  22. chatbox = converse.chatboxes.models[i];
  23. converse.chatboxviews.get(chatbox.get('id')).close();
  24. converse.chatboxviews.get(chatbox.get('id')).$el.remove();
  25. }
  26. converse.chatboxviews.get('controlbox').close();
  27. converse.chatboxviews.get('controlbox').$el.remove();
  28. return this;
  29. };
  30. utils.initConverse = function () {
  31. converse._initialize();
  32. converse.onConnected();
  33. };
  34. utils.initRoster = function () {
  35. converse.roster.browserStorage._clear();
  36. converse.initRoster();
  37. };
  38. utils.openControlBox = function () {
  39. var toggle = $(".toggle-controlbox");
  40. if (!$("#controlbox").is(':visible')) {
  41. if (!toggle.is(':visible')) {
  42. toggle.show(toggle.click);
  43. } else {
  44. toggle.click();
  45. }
  46. }
  47. return this;
  48. };
  49. utils.closeControlBox = function () {
  50. if ($("#controlbox").is(':visible')) {
  51. $("#controlbox").find(".close-chatbox-button").click();
  52. }
  53. return this;
  54. };
  55. utils.removeControlBox = function () {
  56. converse.controlboxtoggle.show();
  57. $('#controlbox').remove();
  58. };
  59. utils.openContactsPanel = function () {
  60. var cbview = converse.chatboxviews.get('controlbox');
  61. var $tabs = cbview.$el.find('#controlbox-tabs');
  62. $tabs.find('li').first().find('a').click();
  63. };
  64. utils.openRoomsPanel = function () {
  65. var cbview = converse.chatboxviews.get('controlbox');
  66. var $tabs = cbview.$el.find('#controlbox-tabs');
  67. $tabs.find('li').last().find('a').click();
  68. };
  69. utils.openChatBoxes = function (amount) {
  70. var i = 0, jid, views = [];
  71. for (i; i<amount; i++) {
  72. jid = mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@localhost';
  73. views[i] = converse.roster.get(jid).trigger("open");
  74. }
  75. return views;
  76. };
  77. utils.openChatBoxFor = function (jid) {
  78. return converse.roster.get(jid).trigger("open");
  79. };
  80. utils.openChatRoom = function (room, server, nick) {
  81. // Open a new chatroom
  82. this.openControlBox();
  83. this.openRoomsPanel();
  84. var roomspanel = converse.chatboxviews.get('controlbox').roomspanel;
  85. roomspanel.$el.find('input.new-chatroom-name').val(room);
  86. roomspanel.$el.find('input.new-chatroom-nick').val(nick);
  87. roomspanel.$el.find('input.new-chatroom-server').val(server);
  88. roomspanel.$el.find('form').submit();
  89. this.closeControlBox();
  90. };
  91. utils.removeRosterContacts = function () {
  92. var model;
  93. while (converse.rosterview.model.length) {
  94. model = converse.rosterview.model.pop();
  95. converse.rosterview.model.remove(model);
  96. }
  97. };
  98. utils.clearBrowserStorage = function () {
  99. window.localStorage.clear();
  100. window.sessionStorage.clear();
  101. return this;
  102. };
  103. utils.clearChatBoxMessages = function (jid) {
  104. var view = converse.chatboxviews.get(jid);
  105. view.$el.find('.chat-content').empty();
  106. view.model.messages.reset();
  107. view.model.messages.browserStorage._clear();
  108. };
  109. utils.createContacts = function (type, length) {
  110. /* Create current (as opposed to requesting or pending) contacts
  111. * for the user's roster.
  112. *
  113. * These contacts are not grouped. See below.
  114. */
  115. var names;
  116. if (type === 'requesting') {
  117. names = mock.req_names;
  118. subscription = 'none';
  119. requesting = true;
  120. ask = null;
  121. } else if (type === 'pending') {
  122. names = mock.pend_names;
  123. subscription = 'none';
  124. requesting = false;
  125. ask = 'subscribe';
  126. } else if (type === 'current') {
  127. names = mock.cur_names;
  128. subscription = 'both';
  129. requesting = false;
  130. ask = null;
  131. } else if (type === 'all') {
  132. this.createContacts('current').createContacts('requesting').createContacts('pending');
  133. return this;
  134. } else {
  135. throw "Need to specify the type of contact to create";
  136. }
  137. if (typeof length === 'undefined') {
  138. length = names.length;
  139. }
  140. for (i=0; i<length; i++) {
  141. converse.roster.create({
  142. ask: ask,
  143. fullname: names[i],
  144. jid: names[i].replace(/ /g,'.').toLowerCase() + '@localhost',
  145. requesting: requesting,
  146. subscription: subscription
  147. });
  148. }
  149. return this;
  150. };
  151. utils.createGroupedContacts = function () {
  152. /* Create grouped contacts
  153. */
  154. var i=0, j=0;
  155. _.each(_.keys(mock.groups), $.proxy(function (name) {
  156. j = i;
  157. for (i=j; i<j+mock.groups[name]; i++) {
  158. converse.roster.create({
  159. jid: mock.cur_names[i].replace(/ /g,'.').toLowerCase() + '@localhost',
  160. subscription: 'both',
  161. ask: null,
  162. groups: name === 'ungrouped'? [] : [name],
  163. fullname: mock.cur_names[i]
  164. });
  165. }
  166. }, converse));
  167. };
  168. utils.sendMessage = function (chatboxview, message) {
  169. chatboxview.$el.find('.chat-textarea').val(message);
  170. chatboxview.$el.find('textarea.chat-textarea').trigger($.Event('keypress', {keyCode: 13}));
  171. };
  172. return utils;
  173. }));