tests_main.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. require.config({
  2. paths: {
  3. "jquery": "components/jquery/jquery",
  4. "locales": "locale/locales",
  5. "jquery.tinysort": "components/tinysort/src/jquery.tinysort",
  6. "underscore": "components/underscore/underscore",
  7. "backbone": "components/backbone/backbone",
  8. "backbone.localStorage": "components/backbone.localStorage/backbone.localStorage",
  9. "strophe": "components/strophe/strophe",
  10. "strophe.muc": "components/strophe.muc/index",
  11. "strophe.roster": "components/strophe.roster/index",
  12. "strophe.vcard": "components/strophe.vcard/index",
  13. "strophe.disco": "components/strophe.disco/index",
  14. "salsa20": "components/otr/build/dep/salsa20",
  15. "bigint": "src/bigint",
  16. "crypto.core": "components/otr/vendor/cryptojs/core",
  17. "crypto.enc-base64": "components/otr/vendor/cryptojs/enc-base64",
  18. "crypto.md5": "components/crypto-js/src/md5",
  19. "crypto.evpkdf": "components/crypto-js/src/evpkdf",
  20. "crypto.cipher-core": "components/otr/vendor/cryptojs/cipher-core",
  21. "crypto.aes": "components/otr/vendor/cryptojs/aes",
  22. "crypto.sha1": "components/otr/vendor/cryptojs/sha1",
  23. "crypto.sha256": "components/otr/vendor/cryptojs/sha256",
  24. "crypto.hmac": "components/otr/vendor/cryptojs/hmac",
  25. "crypto.pad-nopadding": "components/otr/vendor/cryptojs/pad-nopadding",
  26. "crypto.mode-ctr": "components/otr/vendor/cryptojs/mode-ctr",
  27. "crypto": "src/crypto",
  28. "eventemitter": "components/otr/build/dep/eventemitter",
  29. "otr": "components/otr/build/otr",
  30. "converse-dependencies": "src/deps-full",
  31. // Extra test dependencies
  32. "mock": "tests/mock",
  33. "utils": "tests/utils",
  34. "jasmine": "components/jasmine/lib/jasmine-core/jasmine",
  35. "jasmine-html": "components/jasmine/lib/jasmine-core/jasmine-html",
  36. "jasmine-console-reporter": "node_modules/jasmine-reporters/src/jasmine.console_reporter",
  37. "jasmine-junit-reporter": "node_modules/jasmine-reporters/src/jasmine.junit_reporter"
  38. },
  39. // define module dependencies for modules not using define
  40. shim: {
  41. 'backbone': {
  42. //These script dependencies should be loaded before loading
  43. //backbone.js
  44. deps: [
  45. 'underscore',
  46. 'jquery'
  47. ],
  48. //Once loaded, use the global 'Backbone' as the
  49. //module value.
  50. exports: 'Backbone'
  51. },
  52. 'jquery.tinysort': { deps: ['jquery'] },
  53. 'strophe': { deps: ['jquery'] },
  54. 'underscore': { exports: '_' },
  55. 'strophe.muc': { deps: ['strophe', 'jquery'] },
  56. 'strophe.roster': { deps: ['strophe'] },
  57. 'strophe.vcard': { deps: ['strophe'] },
  58. 'strophe.disco': { deps: ['strophe'] },
  59. // Extra test dependencies
  60. 'jasmine-html': {
  61. deps: ['jasmine'],
  62. exports: 'jasmine'
  63. },
  64. 'jasmine-console-reporter': {
  65. deps: ['jasmine-html'],
  66. exports: 'jasmine'
  67. },
  68. 'jasmine-junit-reporter': {
  69. deps: ['jasmine-html'],
  70. exports: 'jasmine'
  71. }
  72. }
  73. });
  74. // Polyfill 'bind' which is not available in phantomjs < 2.0
  75. if (!Function.prototype.bind) {
  76. Function.prototype.bind = function (oThis) {
  77. if (typeof this !== "function") {
  78. // closest thing possible to the ECMAScript 5 internal IsCallable function
  79. throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
  80. }
  81. var aArgs = Array.prototype.slice.call(arguments, 1),
  82. fToBind = this,
  83. fNOP = function () {},
  84. fBound = function () {
  85. return fToBind.apply(this instanceof fNOP && oThis ? this : oThis,
  86. aArgs.concat(Array.prototype.slice.call(arguments)));
  87. };
  88. fNOP.prototype = this.prototype;
  89. fBound.prototype = new fNOP();
  90. return fBound;
  91. };
  92. }
  93. require([
  94. "jquery",
  95. "converse",
  96. "mock",
  97. "jasmine-html"
  98. ], function($, converse, mock, jasmine) {
  99. // Set up converse.js
  100. window.localStorage.clear();
  101. converse.initialize({
  102. prebind: false,
  103. xhr_user_search: false,
  104. auto_subscribe: false,
  105. animate: false,
  106. show_call_button: true,
  107. connection: mock.mock_connection,
  108. testing: true
  109. }, function (converse) {
  110. window.converse = converse;
  111. require([
  112. "jasmine-console-reporter",
  113. "jasmine-junit-reporter",
  114. "spec/converse",
  115. "spec/controlbox",
  116. "spec/chatbox",
  117. "spec/chatroom"
  118. ], function () {
  119. // Make sure this callback is only called once.
  120. delete converse.callback;
  121. // Jasmine stuff
  122. var jasmineEnv = jasmine.getEnv();
  123. if (/PhantomJS/.test(navigator.userAgent)) {
  124. jasmineEnv.addReporter(new jasmine.TrivialReporter());
  125. jasmineEnv.addReporter(new jasmine.JUnitXmlReporter('./test-reports/'));
  126. jasmineEnv.addReporter(new jasmine.ConsoleReporter());
  127. jasmineEnv.updateInterval = 0;
  128. } else {
  129. var htmlReporter = new jasmine.HtmlReporter();
  130. jasmineEnv.addReporter(htmlReporter);
  131. jasmineEnv.addReporter(new jasmine.ConsoleReporter());
  132. jasmineEnv.specFilter = function(spec) {
  133. return htmlReporter.specFilter(spec);
  134. };
  135. jasmineEnv.updateInterval = 100;
  136. }
  137. jasmineEnv.execute();
  138. });
  139. });
  140. }
  141. );