PageRenderTime 53ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/component-tests/uploader/js/UploaderCompatibilityTests.js

http://github.com/fluid-project/infusion
JavaScript | 215 lines | 161 code | 31 blank | 23 comment | 1 complexity | 2d8f485dba4ebe3d3f05130806f9bc27 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, MIT
  1. /*
  2. Copyright The Infusion copyright holders
  3. See the AUTHORS.md file at the top-level directory of this distribution and at
  4. https://github.com/fluid-project/infusion/raw/main/AUTHORS.md.
  5. Licensed under the Educational Community License (ECL), Version 2.0 or the New
  6. BSD license. You may not use this file except in compliance with one these
  7. Licenses.
  8. You may obtain a copy of the ECL 2.0 License and BSD License at
  9. https://github.com/fluid-project/infusion/raw/main/Infusion-LICENSE.txt
  10. */
  11. /* global jqUnit */
  12. (function ($) {
  13. "use strict";
  14. $(function () {
  15. fluid.registerNamespace("fluid.tests.uploader");
  16. // Choose html5 configuration for all tests since it will cause resolution of multiFileUpload
  17. fluid.tests.uploader.commonTags = {
  18. "fluid.browser.supportsBinaryXHR": true,
  19. "fluid.browser.supportsFormData": true
  20. };
  21. fluid.contextAware.makeChecks(fluid.tests.uploader.commonTags);
  22. fluid.contextAware.forgetChecks("fluid.uploader.requiredApi");
  23. fluid.setLogging(true);
  24. jqUnit.module("Uploader Compatibility Tests");
  25. /****************************************
  26. * Infusion 1.2-1.3 Compatibility Tests *
  27. ****************************************/
  28. fluid.tests.uploader.oldOptions = {
  29. uploadManager: {
  30. type: "fluid.swfUploadManager",
  31. options: {
  32. uploadURL: "include/lib/upload.php"
  33. }
  34. },
  35. listeners: {
  36. onFileSuccess: [fluid.identity]
  37. }
  38. };
  39. fluid.tests.uploader.modernOptions = {
  40. queueSettings: {
  41. uploadURL: "include/lib/upload.php"
  42. },
  43. listeners: {
  44. onFileSuccess: [fluid.identity]
  45. }
  46. };
  47. fluid.defaults("fluid.tests.uploader.parentWrapper", {
  48. gradeNames: ["fluid.component"],
  49. components: {
  50. uploader: {
  51. type: "fluid.uploader",
  52. container: ".flc-uploader",
  53. options: "{parentWrapper}.options.uploaderOptions"
  54. }
  55. }
  56. });
  57. fluid.tests.uploader.noIoC = function (options, rules) {
  58. var transRec = (fluid.isArrayable(rules) ? fluid.transformMany : fluid.transformOne) (rules);
  59. return fluid.uploader(".flc-uploader", $.extend(true, options, transRec));
  60. };
  61. fluid.tests.uploader.ioc = function (options) {
  62. var parent = fluid.tests.uploader.parentWrapper({uploaderOptions: options});
  63. return parent.uploader;
  64. };
  65. fluid.tests.uploader.uploaderConfigs = [{label: "no IoC", uploader: fluid.tests.uploader.noIoC}, {label: "ioc", uploader: fluid.tests.uploader.ioc}];
  66. fluid.tests.uploader.testTransformation = function (spec, source, target) {
  67. for (var sourcePath in spec) {
  68. var targetPath = spec[sourcePath];
  69. var sourceItem = fluid.get(source, sourcePath);
  70. var targetItem = fluid.get(target, targetPath);
  71. jqUnit.assertDeepEq(sourcePath + " should have been transformed to " + targetPath, sourceItem, targetItem);
  72. }
  73. };
  74. fluid.tests.uploader.checkUploaderOptions = function (uploader) {
  75. fluid.tests.uploader.testTransformation({
  76. // Queue Settings
  77. "uploadManager.options.uploadURL": "queueSettings.uploadURL",
  78. // Listeners: move as is.
  79. "listeners.onFileSuccess": "listeners.onFileSuccess"
  80. }, fluid.tests.uploader.oldOptions, uploader.options);
  81. // Ensure that one of the options we don't override is still set correctly.
  82. fluid.tests.uploader.testTransformation({
  83. "components.fileQueueView.type": "components.fileQueueView.type"
  84. }, fluid.defaults("fluid.uploader.multiFileUploader"), uploader.options);
  85. };
  86. fluid.tests.uploader.testUploaderConfigs = function (options) {
  87. fluid.each(fluid.tests.uploader.uploaderConfigs, function (uploaderConfig) {
  88. fluid.each(options.optionsTypes, function (optionsType) {
  89. jqUnit.test(options.message + " " + uploaderConfig.label + " - " + optionsType.label, function () {
  90. fluid.contextAware.makeChecks(options.tags);
  91. fluid.constructSingle([], {
  92. type: options.distributor,
  93. singleRootType: "fluid.uploader.compatibility.distributor"
  94. });
  95. var uploader = uploaderConfig.uploader(fluid.copy(optionsType.options), options.rules);
  96. options.checkFn(uploader);
  97. fluid.contextAware.forgetChecks(Object.keys(options.tags));
  98. fluid.destroySingle([], "fluid.uploader.compatibility.distributor");
  99. });
  100. });
  101. });
  102. };
  103. fluid.tests.uploader.testUploaderConfigs({
  104. rules: fluid.compat.fluid_1_2.uploader.optionsRules,
  105. tags: {"fluid.uploader.requiredApi": {
  106. value: "fluid_1_2"
  107. }},
  108. distributor: "fluid.uploader.compatibility.distributor.1_3",
  109. optionsTypes: [
  110. {
  111. label: "old options",
  112. options: fluid.tests.uploader.oldOptions
  113. },
  114. {
  115. label: "modern options",
  116. options: fluid.tests.uploader.modernOptions
  117. }
  118. ],
  119. checkFn: fluid.tests.uploader.checkUploaderOptions,
  120. message: "Uploader 1.2->1.3 options backwards compatibility;"
  121. });
  122. /****************************************
  123. * Infusion 1.3-1.4 Compatibility Tests *
  124. ****************************************/
  125. fluid.tests.uploader.oldImageTypes = "*.jpg;*.png";
  126. fluid.tests.uploader.modernImageTypes = ["image/jpeg", "image/png"];
  127. fluid.tests.uploader.checkUploaderFileTypes = function (uploader) {
  128. jqUnit.assertDeepEq("File types should be an array of MIME types.",
  129. fluid.tests.uploader.modernImageTypes, uploader.options.queueSettings.fileTypes);
  130. };
  131. fluid.tests.uploader.testUploaderConfigs({
  132. rules: fluid.compat.fluid_1_3.uploader.optionsRules,
  133. tags: {"fluid.uploader.requiredApi": {
  134. value: "fluid_1_3"
  135. }},
  136. distributor: "fluid.uploader.compatibility.distributor.1_4",
  137. optionsTypes: [
  138. {
  139. label: "1.3-era options",
  140. options: {
  141. queueSettings: {
  142. fileTypes: fluid.tests.uploader.oldImageTypes
  143. }
  144. }
  145. },
  146. {
  147. label: "modern 1.4 options",
  148. options: {
  149. queueSettings: {
  150. fileTypes: fluid.tests.uploader.modernImageTypes
  151. }
  152. }
  153. }
  154. ],
  155. checkFn: fluid.tests.uploader.checkUploaderFileTypes,
  156. message: "Uploader 1.3->1.4 options backwards compatibility;"
  157. });
  158. fluid.tests.uploader.rules1_2To1_4 = [
  159. fluid.compat.fluid_1_2.uploader.optionsRules,
  160. fluid.compat.fluid_1_3.uploader.optionsRules
  161. ];
  162. fluid.tests.uploader.testUploaderConfigs({
  163. rules: fluid.tests.uploader.rules1_2To1_4,
  164. tags: {"fluid.uploader.requiredApi": {
  165. value: "fluid_1_2"
  166. }},
  167. distributor: "fluid.uploader.compatibility.distributor.1_4",
  168. optionsTypes: [{
  169. label: "1.2-era options",
  170. options: {
  171. uploadManager: {
  172. options: {
  173. fileTypes: fluid.tests.uploader.oldImageTypes
  174. }
  175. }
  176. }
  177. }],
  178. checkFn: fluid.tests.uploader.checkUploaderFileTypes,
  179. message: "Uploader 1.2->1.4 options backwards compatibility;"
  180. });
  181. });
  182. })(jQuery);