conversation_search_view_test.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. describe('ConversationSearchView', function() {
  2. it('should match partial numbers', function() {
  3. var $el = $('<div><div class="new-contact contact hide"></div></div>');
  4. var view = new Whisper.ConversationSearchView({el: $el, input: $('<input>')}).render();
  5. var maybe_numbers = [
  6. "+1 415",
  7. "+1415",
  8. "+1415",
  9. "415",
  10. "(415)",
  11. " (415",
  12. "(415) 123 4567",
  13. "+1 (415) 123 4567",
  14. " +1 (415) 123 4567",
  15. "1 (415) 123 4567",
  16. "1 415-123-4567",
  17. "415-123-4567"
  18. ];
  19. maybe_numbers.forEach(function(n) {
  20. assert.ok(view.maybeNumber(n), n);
  21. });
  22. });
  23. describe('Searching for left groups', function() {
  24. var convo = new Whisper.ConversationCollection().add({
  25. id: 'a-left-group',
  26. name: 'i left this group',
  27. members: [],
  28. type: 'group',
  29. left: true
  30. });
  31. before(function(done) {
  32. convo.save().then(done);
  33. });
  34. describe('with no messages', function() {
  35. var input = $('<input>');
  36. var view = new Whisper.ConversationSearchView({ input: input }).render();
  37. before(function(done) {
  38. view.$input.val('left');
  39. view.filterContacts();
  40. view.typeahead_view.collection.on('reset', function() {
  41. done();
  42. });
  43. });
  44. it('should not surface left groups with no messages', function() {
  45. assert.isUndefined(view.typeahead_view.collection.get(convo.id), 'got left group');
  46. });
  47. });
  48. describe('with messages', function() {
  49. var input = $('<input>');
  50. var view = new Whisper.ConversationSearchView({ input: input }).render();
  51. before(function(done) {
  52. convo.save({lastMessage: 'asdf'}).then(function() {
  53. view.$input.val('left');
  54. view.filterContacts();
  55. view.typeahead_view.collection.on('reset', function() {
  56. done();
  57. });
  58. });
  59. });
  60. it('should surface left groups with messages', function() {
  61. assert.isDefined(view.typeahead_view.collection.get(convo.id), 'got left group');
  62. });
  63. });
  64. });
  65. describe('Showing all contacts', function() {
  66. var input = $('<input>');
  67. var view = new Whisper.ConversationSearchView({ input: input }).render();
  68. view.showAllContacts = true;
  69. var convo = new Whisper.ConversationCollection().add({
  70. id: 'a-left-group',
  71. name: 'i left this group',
  72. members: [],
  73. type: 'group',
  74. left: true
  75. });
  76. before(function(done) {
  77. convo.save().then(done);
  78. });
  79. describe('with no messages', function() {
  80. before(function(done) {
  81. view.resetTypeahead();
  82. view.typeahead_view.collection.on('reset', function() {
  83. done();
  84. });
  85. });
  86. it('should not surface left groups with no messages', function() {
  87. assert.isUndefined(view.typeahead_view.collection.get(convo.id), 'got left group');
  88. });
  89. });
  90. describe('with messages', function() {
  91. before(function(done) {
  92. convo.save({lastMessage: 'asdf'}).then(function() {
  93. view.typeahead_view.collection.on('reset', function() {
  94. done();
  95. });
  96. view.resetTypeahead();
  97. });
  98. });
  99. it('should surface left groups with messages', function() {
  100. assert.isDefined(view.typeahead_view.collection.get(convo.id), 'got left group');
  101. });
  102. });
  103. });
  104. });