jruby_activiti 1.2.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG +6 -0
  5. data/Jarfile +5 -0
  6. data/Jarfile.lock +52 -13
  7. data/README.md +21 -9
  8. data/java/build.md +3 -0
  9. data/java/mapping.md +20 -0
  10. data/java/pom.xml +30 -0
  11. data/java/src/main/java/jrubyactiviti/Modeler.java +95 -0
  12. data/java/src/main/java/jrubyactiviti/ProcessDiagram.java +491 -0
  13. data/java/src/main/java/jrubyactiviti/ProcessInstanceHighlights.java +237 -0
  14. data/java/src/main/java/jrubyactiviti/StencilsetResource.java +16 -0
  15. data/java/src/main/resources/stencilset.json +1339 -0
  16. data/jruby_activiti.gemspec +3 -2
  17. data/lib/generators/jruby_activiti/install_generator.rb +4 -0
  18. data/lib/jar/jrubyactiviti-2.0.jar +0 -0
  19. data/lib/jruby_activiti/version.rb +1 -1
  20. data/lib/jruby_activiti/web.rb +81 -0
  21. data/lib/jruby_activiti.rb +28 -20
  22. data/test/{base_test.rb → activiti_test.rb} +1 -3
  23. data/test/instance_hights_test.rb +18 -0
  24. data/test/modeler_test.rb +35 -0
  25. data/test/process_diagram_test.rb +33 -0
  26. data/test/resources/model_init_editor_source.json +1 -0
  27. data/test/resources/model_json_xml.json +278 -0
  28. data/test/resources/model_svg_xml.xml +66 -0
  29. data/test/stencilset_test.rb +7 -0
  30. data/test/test_helper.rb +2 -0
  31. data/web/public/diagram-viewer/images/bg.png +0 -0
  32. data/web/public/diagram-viewer/images/breadcrumbs.png +0 -0
  33. data/web/public/diagram-viewer/images/checker-bg.png +0 -0
  34. data/web/public/diagram-viewer/images/deployer/blue/message_catch.png +0 -0
  35. data/web/public/diagram-viewer/images/deployer/business_rule.png +0 -0
  36. data/web/public/diagram-viewer/images/deployer/error_catch.png +0 -0
  37. data/web/public/diagram-viewer/images/deployer/error_throw.png +0 -0
  38. data/web/public/diagram-viewer/images/deployer/manual.png +0 -0
  39. data/web/public/diagram-viewer/images/deployer/message_catch.png +0 -0
  40. data/web/public/diagram-viewer/images/deployer/message_throw.png +0 -0
  41. data/web/public/diagram-viewer/images/deployer/receive.png +0 -0
  42. data/web/public/diagram-viewer/images/deployer/script.png +0 -0
  43. data/web/public/diagram-viewer/images/deployer/send.png +0 -0
  44. data/web/public/diagram-viewer/images/deployer/service.png +0 -0
  45. data/web/public/diagram-viewer/images/deployer/signal_catch.png +0 -0
  46. data/web/public/diagram-viewer/images/deployer/signal_throw.png +0 -0
  47. data/web/public/diagram-viewer/images/deployer/timer.png +0 -0
  48. data/web/public/diagram-viewer/images/deployer/user.png +0 -0
  49. data/web/public/diagram-viewer/index.html +130 -0
  50. data/web/public/diagram-viewer/js/ActivitiRest.js +74 -0
  51. data/web/public/diagram-viewer/js/ActivityImpl.js +1 -0
  52. data/web/public/diagram-viewer/js/Color.js +603 -0
  53. data/web/public/diagram-viewer/js/LineBreakMeasurer.js +270 -0
  54. data/web/public/diagram-viewer/js/Polyline.js +387 -0
  55. data/web/public/diagram-viewer/js/ProcessDiagramCanvas.js +2172 -0
  56. data/web/public/diagram-viewer/js/ProcessDiagramGenerator.js +1087 -0
  57. data/web/public/diagram-viewer/js/jquery/jquery.asyncqueue.js +125 -0
  58. data/web/public/diagram-viewer/js/jquery/jquery.js +9266 -0
  59. data/web/public/diagram-viewer/js/jquery/jquery.progressbar.js +131 -0
  60. data/web/public/diagram-viewer/js/jstools.js +23 -0
  61. data/web/public/diagram-viewer/js/raphael.2.1.1.js +10 -0
  62. data/web/public/diagram-viewer/js/raphael.js +10 -0
  63. data/web/public/diagram-viewer/js/raphael_uncompressed.js +5815 -0
  64. data/web/public/diagram-viewer/js/textlayout.js +441 -0
  65. data/web/public/diagram-viewer/style.css +1 -0
  66. data/web/public/editor-app/app-cfg.js +25 -0
  67. data/web/public/editor-app/app.js +432 -0
  68. data/web/public/editor-app/configuration/properties/assignment-display-template.html +4 -0
  69. data/web/public/editor-app/configuration/properties/assignment-popup.html +44 -0
  70. data/web/public/editor-app/configuration/properties/assignment-write-template.html +4 -0
  71. data/web/public/editor-app/configuration/properties/boolean-property-template.html +4 -0
  72. data/web/public/editor-app/configuration/properties/condition-expression-display-template.html +2 -0
  73. data/web/public/editor-app/configuration/properties/condition-expression-popup.html +29 -0
  74. data/web/public/editor-app/configuration/properties/condition-expression-write-template.html +4 -0
  75. data/web/public/editor-app/configuration/properties/default-value-display-template.html +4 -0
  76. data/web/public/editor-app/configuration/properties/event-listeners-display-template.html +3 -0
  77. data/web/public/editor-app/configuration/properties/event-listeners-popup.html +115 -0
  78. data/web/public/editor-app/configuration/properties/event-listeners-write-template.html +4 -0
  79. data/web/public/editor-app/configuration/properties/execution-listeners-display-template.html +3 -0
  80. data/web/public/editor-app/configuration/properties/execution-listeners-popup.html +101 -0
  81. data/web/public/editor-app/configuration/properties/execution-listeners-write-template.html +4 -0
  82. data/web/public/editor-app/configuration/properties/feedback-popup.html +17 -0
  83. data/web/public/editor-app/configuration/properties/fields-display-template.html +3 -0
  84. data/web/public/editor-app/configuration/properties/fields-popup.html +61 -0
  85. data/web/public/editor-app/configuration/properties/fields-write-template.html +4 -0
  86. data/web/public/editor-app/configuration/properties/form-properties-display-template.html +3 -0
  87. data/web/public/editor-app/configuration/properties/form-properties-popup.html +93 -0
  88. data/web/public/editor-app/configuration/properties/form-properties-write-template.html +4 -0
  89. data/web/public/editor-app/configuration/properties/in-parameters-display-template.html +3 -0
  90. data/web/public/editor-app/configuration/properties/in-parameters-popup.html +53 -0
  91. data/web/public/editor-app/configuration/properties/in-parameters-write-template.html +4 -0
  92. data/web/public/editor-app/configuration/properties/message-definitions-display-template.html +2 -0
  93. data/web/public/editor-app/configuration/properties/message-definitions-popup.html +50 -0
  94. data/web/public/editor-app/configuration/properties/message-definitions-write-template.html +3 -0
  95. data/web/public/editor-app/configuration/properties/message-property-write-template.html +4 -0
  96. data/web/public/editor-app/configuration/properties/multiinstance-property-write-template.html +8 -0
  97. data/web/public/editor-app/configuration/properties/out-parameters-display-template.html +3 -0
  98. data/web/public/editor-app/configuration/properties/out-parameters-popup.html +53 -0
  99. data/web/public/editor-app/configuration/properties/out-parameters-write-template.html +4 -0
  100. data/web/public/editor-app/configuration/properties/sequenceflow-order-display-template.html +3 -0
  101. data/web/public/editor-app/configuration/properties/sequenceflow-order-popup.html +47 -0
  102. data/web/public/editor-app/configuration/properties/sequenceflow-order-write-template.html +4 -0
  103. data/web/public/editor-app/configuration/properties/signal-definitions-display-template.html +3 -0
  104. data/web/public/editor-app/configuration/properties/signal-definitions-popup.html +58 -0
  105. data/web/public/editor-app/configuration/properties/signal-definitions-write-template.html +4 -0
  106. data/web/public/editor-app/configuration/properties/signal-property-write-template.html +4 -0
  107. data/web/public/editor-app/configuration/properties/string-property-write-mode-template.html +8 -0
  108. data/web/public/editor-app/configuration/properties/subprocess-reference-display-template.html +3 -0
  109. data/web/public/editor-app/configuration/properties/subprocess-reference-popup.html +43 -0
  110. data/web/public/editor-app/configuration/properties/subprocess-reference-write-template.html +4 -0
  111. data/web/public/editor-app/configuration/properties/task-listeners-display-template.html +3 -0
  112. data/web/public/editor-app/configuration/properties/task-listeners-popup.html +102 -0
  113. data/web/public/editor-app/configuration/properties/task-listeners-write-template.html +4 -0
  114. data/web/public/editor-app/configuration/properties/text-popup.html +17 -0
  115. data/web/public/editor-app/configuration/properties/text-property-write-template.html +4 -0
  116. data/web/public/editor-app/configuration/properties-assignment-controller.js +150 -0
  117. data/web/public/editor-app/configuration/properties-condition-expression-controller.js +58 -0
  118. data/web/public/editor-app/configuration/properties-custom-controllers.js +18 -0
  119. data/web/public/editor-app/configuration/properties-default-controllers.js +115 -0
  120. data/web/public/editor-app/configuration/properties-event-listeners-controller.js +266 -0
  121. data/web/public/editor-app/configuration/properties-execution-listeners-controller.js +326 -0
  122. data/web/public/editor-app/configuration/properties-fields-controller.js +192 -0
  123. data/web/public/editor-app/configuration/properties-form-properties-controller.js +192 -0
  124. data/web/public/editor-app/configuration/properties-in-parameters-controller.js +158 -0
  125. data/web/public/editor-app/configuration/properties-message-definitions-controller.js +137 -0
  126. data/web/public/editor-app/configuration/properties-message-scope-controller.js +48 -0
  127. data/web/public/editor-app/configuration/properties-multiinstance-controller.js +34 -0
  128. data/web/public/editor-app/configuration/properties-out-parameters-controller.js +158 -0
  129. data/web/public/editor-app/configuration/properties-sequenceflow-order-controller.js +130 -0
  130. data/web/public/editor-app/configuration/properties-signal-definitions-controller.js +136 -0
  131. data/web/public/editor-app/configuration/properties-signal-scope-controller.js +47 -0
  132. data/web/public/editor-app/configuration/properties-task-listeners-controller.js +325 -0
  133. data/web/public/editor-app/configuration/properties.js +99 -0
  134. data/web/public/editor-app/configuration/toolbar-custom-actions.js +18 -0
  135. data/web/public/editor-app/configuration/toolbar-default-actions.js +429 -0
  136. data/web/public/editor-app/configuration/toolbar.js +175 -0
  137. data/web/public/editor-app/configuration/url-config.js +34 -0
  138. data/web/public/editor-app/css/style-common.css +1518 -0
  139. data/web/public/editor-app/css/style-editor.css +639 -0
  140. data/web/public/editor-app/css/style.css +471 -0
  141. data/web/public/editor-app/editor/css/editor.css +202 -0
  142. data/web/public/editor-app/editor/i18n/translation_de.js +383 -0
  143. data/web/public/editor-app/editor/i18n/translation_en_us.js +423 -0
  144. data/web/public/editor-app/editor/i18n/translation_signavio_de.js +106 -0
  145. data/web/public/editor-app/editor/i18n/translation_signavio_en_us.js +108 -0
  146. data/web/public/editor-app/editor/oryx.debug.js +24510 -0
  147. data/web/public/editor-app/editor/oryx.js +30 -0
  148. data/web/public/editor-app/editor-config.js +32 -0
  149. data/web/public/editor-app/editor-controller.js +65 -0
  150. data/web/public/editor-app/editor-utils.js +135 -0
  151. data/web/public/editor-app/editor.html +136 -0
  152. data/web/public/editor-app/eventbus.js +133 -0
  153. data/web/public/editor-app/fonts/activiti-admin-webfont.eot +0 -0
  154. data/web/public/editor-app/fonts/activiti-admin-webfont.svg +43 -0
  155. data/web/public/editor-app/fonts/activiti-admin-webfont.ttf +0 -0
  156. data/web/public/editor-app/fonts/activiti-admin-webfont.woff +0 -0
  157. data/web/public/editor-app/fonts/glyphicons-halflings-regular.eot +0 -0
  158. data/web/public/editor-app/fonts/glyphicons-halflings-regular.svg +229 -0
  159. data/web/public/editor-app/fonts/glyphicons-halflings-regular.ttf +0 -0
  160. data/web/public/editor-app/fonts/glyphicons-halflings-regular.woff +0 -0
  161. data/web/public/editor-app/header-controller.js +31 -0
  162. data/web/public/editor-app/i18n/en.json +286 -0
  163. data/web/public/editor-app/images/bpmn-error.png +0 -0
  164. data/web/public/editor-app/images/bpmn-warning.png +0 -0
  165. data/web/public/editor-app/images/datadefinition.png +0 -0
  166. data/web/public/editor-app/images/delete.png +0 -0
  167. data/web/public/editor-app/images/loading.gif +0 -0
  168. data/web/public/editor-app/images/logo-2x.png +0 -0
  169. data/web/public/editor-app/images/logo.png +0 -0
  170. data/web/public/editor-app/images/nw-handle-dark.gif +0 -0
  171. data/web/public/editor-app/images/se-handle-dark.gif +0 -0
  172. data/web/public/editor-app/images/shapemenu_highlight.png +0 -0
  173. data/web/public/editor-app/images/wrench.png +0 -0
  174. data/web/public/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js +8 -0
  175. data/web/public/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js.map +8 -0
  176. data/web/public/editor-app/libs/angular-dragdrop.min-1.0.3.js +9 -0
  177. data/web/public/editor-app/libs/angular-dragdrop_1.0.7/angular-dragdrop.min.js +29 -0
  178. data/web/public/editor-app/libs/angular-mocks_1.2.13/angular-mocks.js +2136 -0
  179. data/web/public/editor-app/libs/angular-resource_1.2.13/angular-resource.js +596 -0
  180. data/web/public/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js +13 -0
  181. data/web/public/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js.map +8 -0
  182. data/web/public/editor-app/libs/angular-route_1.2.13/angular-route.js +921 -0
  183. data/web/public/editor-app/libs/angular-route_1.2.13/angular-route.min.js +14 -0
  184. data/web/public/editor-app/libs/angular-route_1.2.13/angular-route.min.js.map +8 -0
  185. data/web/public/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.js +625 -0
  186. data/web/public/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js +14 -0
  187. data/web/public/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js.map +8 -0
  188. data/web/public/editor-app/libs/angular-scroll_0.5.7/angular-scroll.min.js +1 -0
  189. data/web/public/editor-app/libs/angular-strap_2.0.5/angular-strap.min.js +9 -0
  190. data/web/public/editor-app/libs/angular-strap_2.0.5/angular-strap.tpl.min.js +8 -0
  191. data/web/public/editor-app/libs/angular-translate-loader-static-files/.bower.json +19 -0
  192. data/web/public/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js +31 -0
  193. data/web/public/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js +6 -0
  194. data/web/public/editor-app/libs/angular-translate-storage-cookie/.bower.json +20 -0
  195. data/web/public/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js +19 -0
  196. data/web/public/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js +6 -0
  197. data/web/public/editor-app/libs/angular-translate_2.4.2/angular-translate.js +960 -0
  198. data/web/public/editor-app/libs/angular-translate_2.4.2/angular-translate.min.js +6 -0
  199. data/web/public/editor-app/libs/angular_1.2.13/angular-animate.min.js +27 -0
  200. data/web/public/editor-app/libs/angular_1.2.13/angular.min.js +204 -0
  201. data/web/public/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker-bs3.css +267 -0
  202. data/web/public/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker.js +1026 -0
  203. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css +347 -0
  204. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css.map +1 -0
  205. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.min.css +7 -0
  206. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css +5785 -0
  207. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css.map +1 -0
  208. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap.min.css +7 -0
  209. data/web/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot +0 -0
  210. data/web/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.svg +229 -0
  211. data/web/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf +0 -0
  212. data/web/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff +0 -0
  213. data/web/public/editor-app/libs/bootstrap_3.1.1/js/bootstrap.js +1951 -0
  214. data/web/public/editor-app/libs/bootstrap_3.1.1/js/bootstrap.min.js +6 -0
  215. data/web/public/editor-app/libs/es5-shim-15.3.4.5/.bower.json +14 -0
  216. data/web/public/editor-app/libs/es5-shim-15.3.4.5/.gitignore +2 -0
  217. data/web/public/editor-app/libs/es5-shim-15.3.4.5/CHANGES +93 -0
  218. data/web/public/editor-app/libs/es5-shim-15.3.4.5/CONTRIBUTORS.md +25 -0
  219. data/web/public/editor-app/libs/es5-shim-15.3.4.5/LICENSE +19 -0
  220. data/web/public/editor-app/libs/es5-shim-15.3.4.5/README.md +161 -0
  221. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-sham.js +444 -0
  222. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-sham.map +1 -0
  223. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-sham.min.js +4 -0
  224. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-shim.js +1314 -0
  225. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-shim.map +1 -0
  226. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-shim.min.js +4 -0
  227. data/web/public/editor-app/libs/es5-shim-15.3.4.5/package.json +34 -0
  228. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-kill.js +64 -0
  229. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-matchers.js +34 -0
  230. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h.js +3 -0
  231. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/index.html +64 -0
  232. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/index.min.html +63 -0
  233. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine-html.js +190 -0
  234. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.css +166 -0
  235. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.js +2477 -0
  236. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine_favicon.png +0 -0
  237. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/json2.js +478 -0
  238. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-array.js +1223 -0
  239. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-date.js +152 -0
  240. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-function.js +147 -0
  241. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-number.js +14 -0
  242. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-object.js +181 -0
  243. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-string.js +204 -0
  244. data/web/public/editor-app/libs/jquery-ui-1.10.3.custom.min.js +6 -0
  245. data/web/public/editor-app/libs/jquery.autogrow-textarea.js +61 -0
  246. data/web/public/editor-app/libs/jquery_1.11.0/jquery.js +9789 -0
  247. data/web/public/editor-app/libs/jquery_1.11.0/jquery.min.js +4 -0
  248. data/web/public/editor-app/libs/jquery_1.11.0/jquery.min.map +1 -0
  249. data/web/public/editor-app/libs/json3_3.2.6/LICENSE +20 -0
  250. data/web/public/editor-app/libs/json3_3.2.6/lib/json3.js +861 -0
  251. data/web/public/editor-app/libs/json3_3.2.6/lib/json3.min.js +18 -0
  252. data/web/public/editor-app/libs/momentjs_2.5.1/momentjs.min.js +6 -0
  253. data/web/public/editor-app/libs/mousetrap-1.4.5.min.js +9 -0
  254. data/web/public/editor-app/libs/ng-grid-2.0.7-min.js +2 -0
  255. data/web/public/editor-app/libs/ng-grid-2.0.7.min.css +1 -0
  256. data/web/public/editor-app/libs/path_parser.js +30 -0
  257. data/web/public/editor-app/libs/prototype-1.5.1.js +3272 -0
  258. data/web/public/editor-app/libs/ui-utils.min-0.0.4.js +7 -0
  259. data/web/public/editor-app/partials/root-stencil-item-template.html +11 -0
  260. data/web/public/editor-app/partials/stencil-item-template.html +27 -0
  261. data/web/public/editor-app/plugins.xml +58 -0
  262. data/web/public/editor-app/popups/icon-template.html +3 -0
  263. data/web/public/editor-app/popups/save-model.html +41 -0
  264. data/web/public/editor-app/popups/select-shape.html +20 -0
  265. data/web/public/editor-app/popups/unsaved-changes.html +22 -0
  266. data/web/public/editor-app/select-shape-controller.js +314 -0
  267. data/web/public/editor-app/stencil-controller.js +1421 -0
  268. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.collapsed.png +0 -0
  269. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.png +0 -0
  270. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/expanded.subprocess.png +0 -0
  271. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.business.rule.png +0 -0
  272. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.camel.png +0 -0
  273. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.manual.png +0 -0
  274. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.mule.png +0 -0
  275. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.receive.png +0 -0
  276. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.script.png +0 -0
  277. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.send.png +0 -0
  278. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.service.png +0 -0
  279. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.shell.png +0 -0
  280. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.user.png +0 -0
  281. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/subprocess.png +0 -0
  282. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/task.png +0 -0
  283. data/web/public/editor-app/stencilsets/bpmn2.0/icons/artifact/text.annotation.png +0 -0
  284. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/cancel.png +0 -0
  285. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/compensation.png +0 -0
  286. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/error.png +0 -0
  287. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/message.png +0 -0
  288. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/signal.png +0 -0
  289. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/timer.png +0 -0
  290. data/web/public/editor-app/stencilsets/bpmn2.0/icons/connector/association.undirected.png +0 -0
  291. data/web/public/editor-app/stencilsets/bpmn2.0/icons/connector/association.unidirectional.png +0 -0
  292. data/web/public/editor-app/stencilsets/bpmn2.0/icons/connector/messageflow.png +0 -0
  293. data/web/public/editor-app/stencilsets/bpmn2.0/icons/connector/sequenceflow.png +0 -0
  294. data/web/public/editor-app/stencilsets/bpmn2.0/icons/dataobject/data.store.png +0 -0
  295. data/web/public/editor-app/stencilsets/bpmn2.0/icons/diagram.png +0 -0
  296. data/web/public/editor-app/stencilsets/bpmn2.0/icons/endevent/cancel.png +0 -0
  297. data/web/public/editor-app/stencilsets/bpmn2.0/icons/endevent/error.png +0 -0
  298. data/web/public/editor-app/stencilsets/bpmn2.0/icons/endevent/none.png +0 -0
  299. data/web/public/editor-app/stencilsets/bpmn2.0/icons/endevent/terminate.png +0 -0
  300. data/web/public/editor-app/stencilsets/bpmn2.0/icons/gateway/eventbased.png +0 -0
  301. data/web/public/editor-app/stencilsets/bpmn2.0/icons/gateway/exclusive.databased.png +0 -0
  302. data/web/public/editor-app/stencilsets/bpmn2.0/icons/gateway/inclusive.png +0 -0
  303. data/web/public/editor-app/stencilsets/bpmn2.0/icons/gateway/parallel.png +0 -0
  304. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/error.png +0 -0
  305. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/message.png +0 -0
  306. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/none.png +0 -0
  307. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/signal.png +0 -0
  308. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/timer.png +0 -0
  309. data/web/public/editor-app/stencilsets/bpmn2.0/icons/swimlane/lane.png +0 -0
  310. data/web/public/editor-app/stencilsets/bpmn2.0/icons/swimlane/pool.png +0 -0
  311. data/web/public/editor-app/stencilsets/bpmn2.0/icons/throwing/none.png +0 -0
  312. data/web/public/editor-app/stencilsets/bpmn2.0/icons/throwing/signal.png +0 -0
  313. data/web/public/editor-app/toolbar-controller.js +162 -0
  314. data/web/public/modeler.html +140 -0
  315. data/web/views/models/index.erb +32 -0
  316. data/web/views/models/new.erb +15 -0
  317. metadata +334 -10
@@ -0,0 +1,152 @@
1
+ describe('Date', function () {
2
+
3
+ describe('now', function () {
4
+ it('should be the current time', function () {
5
+ expect(Date.now() === new Date().getTime()).toBe(true);
6
+ });
7
+ });
8
+
9
+ describe("parse", function () {
10
+ // TODO: Write the rest of the test.
11
+
12
+ it('should support extended years', function () {
13
+
14
+ expect(Date.parse('0001-01-01T00:00:00Z')).toBe(-62135596800000);
15
+ expect(Date.parse('+275760-09-13T00:00:00.000Z')).toBe(8.64e15);
16
+ expect(Date.parse('+033658-09-27T01:46:40.000Z')).toBe(1e15);
17
+ expect(Date.parse('-000001-01-01T00:00:00Z')).toBe(-62198755200000);
18
+ expect(Date.parse('+002009-12-15T00:00:00Z')).toBe(1260835200000);
19
+
20
+ });
21
+
22
+ it('should work', function () {
23
+ //Chrome 19 Opera 12 Firefox 11 IE 9 Safari 5.1.1
24
+ expect(Date.parse("2012-11-31T23:59:59.000Z")).toBeFalsy(); //1354406399000 NaN NaN 1354406399000 NaN
25
+ expect(Date.parse("2012-12-31T23:59:59.000Z")).toBe(1356998399000); //1356998399000 1356998399000 1356998399000 1356998399000 1356998399000
26
+ expect(Date.parse("2012-12-31T23:59:60.000Z")).toBeFalsy(); //NaN NaN NaN NaN 1356998400000
27
+ expect(Date.parse("2012-04-04T05:02:02.170Z")).toBe(1333515722170); //1333515722170 1333515722170 1333515722170 1333515722170 1333515722170
28
+ expect(Date.parse("2012-04-04T05:02:02.170999Z")).toBe(1333515722170); //1333515722170 1333515722170 1333515722170 1333515722170 1333515722170
29
+ expect(Date.parse("2012-04-04T05:02:02.17Z")).toBe(1333515722170); //1333515722170 1333515722170 1333515722170 1333515722170 1333515722170
30
+ expect(Date.parse("2012-04-04T05:02:02.1Z")).toBe(1333515722100); //1333515722170 1333515722170 1333515722170 1333515722170 1333515722170
31
+ expect(Date.parse("2012-04-04T24:00:00.000Z")).toBe(1333584000000); //NaN 1333584000000 1333584000000 1333584000000 1333584000000
32
+ expect(Date.parse("2012-04-04T24:00:00.500Z")).toBeFalsy(); //NaN NaN 1333584000500 1333584000500 NaN
33
+ expect(Date.parse("2012-12-31T10:08:60.000Z")).toBeFalsy(); //NaN NaN NaN NaN 1356948540000
34
+ expect(Date.parse("2012-13-01T12:00:00.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
35
+ expect(Date.parse("2012-12-32T12:00:00.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
36
+ expect(Date.parse("2012-12-31T25:00:00.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
37
+ expect(Date.parse("2012-12-31T24:01:00.000Z")).toBeFalsy(); //NaN NaN NaN 1356998460000 NaN
38
+ expect(Date.parse("2012-12-31T12:60:00.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
39
+ expect(Date.parse("2012-12-31T12:00:60.000Z")).toBeFalsy(); //NaN NaN NaN NaN 1356955260000
40
+ expect(Date.parse("2012-00-31T23:59:59.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
41
+ expect(Date.parse("2012-12-00T23:59:59.000Z")).toBeFalsy(); //NaN NaN NaN NaN NaN
42
+ expect(Date.parse("2012-02-29T12:00:00.000Z")).toBe(1330516800000); //1330516800000 1330516800000 1330516800000 1330516800000 1330516800000
43
+ expect(Date.parse("2011-02-29T12:00:00.000Z")).toBeFalsy(); //1298980800000 NaN NaN 1298980800000 NaN
44
+ expect(Date.parse("2011-03-01T12:00:00.000Z")).toBe(1298980800000); //1298980800000 1298980800000 1298980800000 1298980800000 1298980800000
45
+
46
+ // extended years:
47
+ expect(Date.parse("0000-01-01T00:00:00.000Z")).toBe(-621672192e5); //-621672192e5 -621672192e5 -621672192e5 -621672192e5 -621672192e5
48
+ expect(Date.parse("+275760-09-13T00:00:00.000Z")).toBe(8.64e15); //8.64e15 NaN 8.64e15 8.64e15 8.64e15
49
+ expect(Date.parse("-271821-04-20T00:00:00.000Z")).toBe(-8.64e15); //-8.64e15 NaN -8.64e15 -8.64e15 -8.6400000864e15
50
+ expect(Date.parse("+275760-09-13T00:00:00.001Z")).toBeFalsy(); //NaN NaN NaN 8.64e15 + 1 8.64e15 + 1
51
+ expect(Date.parse("-271821-04-19T23:59:59.999Z")).toBeFalsy(); //NaN NaN NaN -8.64e15 - 1 -8.6400000864e15 - 1
52
+
53
+ // https://github.com/kriskowal/es5-shim/issues/80 Safari bug with leap day
54
+ expect(Date.parse("2034-03-01T00:00:00.000Z") -
55
+ Date.parse("2034-02-27T23:59:59.999Z")).toBe(86400001); //86400001 86400001 86400001 86400001 1
56
+
57
+ // Time Zone Offset
58
+ expect(Date.parse("2012-01-29T12:00:00.000+01:00")).toBe(132783480e4);//132783480e4 132783480e4 132783480e4 132783480e4 132783480e4
59
+ expect(Date.parse("2012-01-29T12:00:00.000-00:00")).toBe(132783840e4);//132783840e4 132783840e4 132783840e4 132783840e4 132783840e4
60
+ expect(Date.parse("2012-01-29T12:00:00.000+00:00")).toBe(132783840e4);//132783840e4 132783840e4 132783840e4 132783840e4 132783840e4
61
+ expect(Date.parse("2012-01-29T12:00:00.000+23:59")).toBe(132775206e4);//132775206e4 132775206e4 132775206e4 132775206e4 132775206e4
62
+ expect(Date.parse("2012-01-29T12:00:00.000-23:59")).toBe(132792474e4);//132792474e4 132792474e4 132792474e4 132792474e4 132792474e4
63
+ expect(Date.parse("2012-01-29T12:00:00.000+24:00")).toBeFalsy(); //NaN 1327752e6 NaN 1327752000000 1327752000000
64
+ expect(Date.parse("2012-01-29T12:00:00.000+24:01")).toBeFalsy(); //NaN NaN NaN 1327751940000 1327751940000
65
+ expect(Date.parse("2012-01-29T12:00:00.000+24:59")).toBeFalsy(); //NaN NaN NaN 1327748460000 1327748460000
66
+ expect(Date.parse("2012-01-29T12:00:00.000+25:00")).toBeFalsy(); //NaN NaN NaN NaN NaN
67
+ expect(Date.parse("2012-01-29T12:00:00.000+00:60")).toBeFalsy(); //NaN NaN NaN NaN NaN
68
+ expect(Date.parse("-271821-04-20T00:00:00.000+00:01")).toBeFalsy(); //NaN NaN NaN -864000000006e4 -864000008646e4
69
+ expect(Date.parse("-271821-04-20T00:01:00.000+00:01")).toBe(-8.64e15);//-8.64e15 NaN -8.64e15 -8.64e15 -864000008640e4
70
+
71
+ // When time zone is missed, local offset should be used (ES 5.1 bug)
72
+ // see https://bugs.ecmascript.org/show_bug.cgi?id=112
73
+ var tzOffset = Number(new Date(1970, 0));
74
+ // same as (new Date().getTimezoneOffset() * 60000)
75
+ expect(Date.parse('1970-01-01T00:00:00')).toBe(tzOffset); //tzOffset 0 0 0 NaN
76
+ });
77
+
78
+ it("should be able to coerce to a number", function(){
79
+ var actual = Number(new Date(1970, 0));
80
+ var expected = parseInt(actual, 10);
81
+ expect(actual).toBeDefined();
82
+ expect(actual).toEqual(expected);
83
+ expect(isNaN(actual)).toBeFalsy();
84
+ });
85
+
86
+ });
87
+
88
+ describe("toString", function(){
89
+ var actual = (new Date(1970, 0)).toString();
90
+ beforeEach(function(){
91
+ actual = (new Date(1970, 0)).toString();
92
+ });
93
+ it("should show correct date info for "+actual, function(){
94
+ expect(actual).toMatch(/1970/);
95
+ expect(actual).toMatch(/jan/i);
96
+ expect(actual).toMatch(/thu/i);
97
+ expect(actual).toMatch(/00:00:00/);
98
+ });
99
+ });
100
+
101
+ describe("valueOf", function(){
102
+ var actual = (new Date(1970, 0));
103
+ beforeEach(function(){
104
+ actual = (new Date(1970, 0)).valueOf();
105
+ });
106
+ it("should give an int value", function(){
107
+ expect(parseInt(actual, 10)).toBeTruthy();
108
+ });
109
+ });
110
+
111
+ describe("toISOString", function () {
112
+ // TODO: write the rest of the test.
113
+
114
+ it('should support extended years', function () {
115
+ expect(new Date(-62198755200000).toISOString().indexOf('-000001-01-01')).toBe(0);
116
+ expect(new Date(8.64e15).toISOString().indexOf('+275760-09-13')).toBe(0);
117
+ });
118
+
119
+ it('should return correct dates', function () {
120
+ expect(new Date(-1).toISOString()).toBe('1969-12-31T23:59:59.999Z');// Safari 5.1.5 "1969-12-31T23:59:59.-01Z"
121
+ expect(new Date(-3509827334573292).toISOString()).toBe('-109252-01-01T10:37:06.708Z'); // Opera 11.61/Opera 12 bug with Date#getUTCMonth
122
+ });
123
+
124
+ });
125
+
126
+ describe("toJSON", function () {
127
+
128
+ // Opera 11.6x/12 bug
129
+ it('should call toISOString', function () {
130
+ var date = new Date(0);
131
+ date.toISOString = function () {
132
+ return 1;
133
+ };
134
+ expect(date.toJSON()).toBe(1);
135
+ });
136
+
137
+ it('should return null for not finite dates', function () {
138
+ var date = new Date(NaN),
139
+ json;
140
+ try {
141
+ json = date.toJSON();
142
+ } catch (e) {}
143
+ expect(json).toBe(null);
144
+ });
145
+
146
+ it('should return the isoString when stringified', function () {
147
+ var date = new Date();
148
+ expect(JSON.stringify(date.toISOString())).toBe(JSON.stringify(date));
149
+ })
150
+ });
151
+
152
+ });
@@ -0,0 +1,147 @@
1
+
2
+ describe('Function', function() {
3
+ "use strict";
4
+ describe('bind', function() {
5
+ var actual, expected,
6
+ testSubject;
7
+
8
+ testSubject = {
9
+ push: function(o) {
10
+ this.a.push(o);
11
+ }
12
+ };
13
+
14
+ function func() {
15
+ Array.prototype.forEach.call(arguments, function(a) {
16
+ this.push(a);
17
+ }, this);
18
+ return this;
19
+ };
20
+
21
+ beforeEach(function() {
22
+ actual = [];
23
+ testSubject.a = [];
24
+ });
25
+
26
+ it('binds properly without a context', function() {
27
+ var context;
28
+ testSubject.func = function() {
29
+ context = this;
30
+ }.bind();
31
+ testSubject.func();
32
+ expect(context).toBe(function() {return this}.call());
33
+ });
34
+ it('binds properly without a context, and still supplies bound arguments', function() {
35
+ var a, context;
36
+ testSubject.func = function() {
37
+ a = Array.prototype.slice.call(arguments);
38
+ context = this;
39
+ }.bind(undefined, 1,2,3);
40
+ testSubject.func(1,2,3);
41
+ expect(a).toEqual([1,2,3,1,2,3]);
42
+ expect(context).toBe(function() {return this}.call());
43
+ });
44
+ it('binds a context properly', function() {
45
+ testSubject.func = func.bind(actual);
46
+ testSubject.func(1,2,3);
47
+ expect(actual).toEqual([1,2,3]);
48
+ expect(testSubject.a).toEqual([]);
49
+ });
50
+ it('binds a context and supplies bound arguments', function() {
51
+ testSubject.func = func.bind(actual, 1,2,3);
52
+ testSubject.func(4,5,6);
53
+ expect(actual).toEqual([1,2,3,4,5,6]);
54
+ expect(testSubject.a).toEqual([]);
55
+ });
56
+
57
+ it('returns properly without binding a context', function() {
58
+ testSubject.func = function() {
59
+ return this;
60
+ }.bind();
61
+ var context = testSubject.func();
62
+ expect(context).toBe(function() {return this}.call());
63
+ });
64
+ it('returns properly without binding a context, and still supplies bound arguments', function() {
65
+ var context;
66
+ testSubject.func = function() {
67
+ context = this;
68
+ return Array.prototype.slice.call(arguments);
69
+ }.bind(undefined, 1,2,3);
70
+ actual = testSubject.func(1,2,3);
71
+ expect(context).toBe(function() {return this}.call());
72
+ expect(actual).toEqual([1,2,3,1,2,3]);
73
+ });
74
+ it('returns properly while binding a context properly', function() {
75
+ var ret;
76
+ testSubject.func = func.bind(actual);
77
+ ret = testSubject.func(1,2,3);
78
+ expect(ret).toBe(actual);
79
+ expect(ret).not.toBe(testSubject);
80
+ });
81
+ it('returns properly while binding a context and supplies bound arguments', function() {
82
+ var ret;
83
+ testSubject.func = func.bind(actual, 1,2,3);
84
+ ret = testSubject.func(4,5,6);
85
+ expect(ret).toBe(actual);
86
+ expect(ret).not.toBe(testSubject);
87
+ });
88
+ it('passes the correct arguments as a constructor', function() {
89
+ var ret, expected = { name: "Correct" };
90
+ testSubject.func = function(arg) {
91
+ return arg;
92
+ }.bind({ name: "Incorrect" });
93
+ ret = new testSubject.func(expected);
94
+ expect(ret).toBe(expected);
95
+ });
96
+ it('returns the return value of the bound function when called as a constructor', function () {
97
+ var oracle = [1, 2, 3];
98
+ var subject = function () {
99
+ return oracle;
100
+ }.bind(null);
101
+ var result = new subject;
102
+ expect(result).toBe(oracle);
103
+ });
104
+ it('returns the correct value if constructor returns primitive', function() {
105
+ var oracle = [1, 2, 3];
106
+ var subject = function () {
107
+ return oracle;
108
+ }.bind(null);
109
+ var result = new subject;
110
+ expect(result).toBe(oracle);
111
+
112
+ oracle = {};
113
+ result = new subject;
114
+ expect(result).toBe(oracle);
115
+
116
+ oracle = function(){};
117
+ result = new subject;
118
+ expect(result).toBe(oracle);
119
+
120
+ oracle = "asdf";
121
+ result = new subject;
122
+ expect(result).not.toBe(oracle);
123
+
124
+ oracle = null;
125
+ result = new subject;
126
+ expect(result).not.toBe(oracle);
127
+
128
+ oracle = true;
129
+ result = new subject;
130
+ expect(result).not.toBe(oracle);
131
+
132
+ oracle = 1;
133
+ result = new subject;
134
+ expect(result).not.toBe(oracle);
135
+ });
136
+ it('returns the value that instance of original "class" when called as a constructor', function() {
137
+ var classA = function(x) {
138
+ this.name = x || "A";
139
+ }
140
+ var classB = classA.bind(null, "B");
141
+
142
+ var result = new classB;
143
+ expect(result instanceof classA).toBe(true);
144
+ expect(result instanceof classB).toBe(true);
145
+ });
146
+ });
147
+ });
@@ -0,0 +1,14 @@
1
+ describe('Number', function () {
2
+ 'use strict';
3
+
4
+ describe('toFixed', function () {
5
+ it('should convert numbers correctly', function () {
6
+ expect((0.00008).toFixed(3)).toBe('0.000');
7
+ expect((0.9).toFixed(0)).toBe('1');
8
+ expect((1.255).toFixed(2)).toBe('1.25');
9
+ expect((1843654265.0774949).toFixed(5)).toBe('1843654265.07749');
10
+ expect((1000000000000000128).toFixed(0)).toBe('1000000000000000128');
11
+ });
12
+ });
13
+
14
+ });
@@ -0,0 +1,181 @@
1
+ describe('Object', function () {
2
+ "use strict";
3
+
4
+ describe("Object.keys", function () {
5
+ var obj = {
6
+ "str": "boz",
7
+ "obj": { },
8
+ "arr": [],
9
+ "bool": true,
10
+ "num": 42,
11
+ "null": null,
12
+ "undefined": undefined
13
+ };
14
+
15
+ var loopedValues = [];
16
+ for (var k in obj) {
17
+ loopedValues.push(k);
18
+ }
19
+
20
+ var keys = Object.keys(obj);
21
+ it('should have correct length', function () {
22
+ expect(keys.length).toBe(7);
23
+ });
24
+
25
+ it('should return an Array', function () {
26
+ expect(Array.isArray(keys)).toBe(true);
27
+ });
28
+
29
+ it('should return names which are own properties', function () {
30
+ keys.forEach(function (name) {
31
+ expect(obj.hasOwnProperty(name)).toBe(true);
32
+ });
33
+ });
34
+
35
+ it('should return names which are enumerable', function () {
36
+ keys.forEach(function (name) {
37
+ expect(loopedValues.indexOf(name)).toNotBe(-1);
38
+ })
39
+ });
40
+
41
+ it('should throw error for non object', function () {
42
+ var e = {};
43
+ expect(function () {
44
+ try {
45
+ Object.keys(42)
46
+ } catch (err) {
47
+ throw e;
48
+ }
49
+ }).toThrow(e);
50
+ });
51
+ });
52
+
53
+ describe("Object.isExtensible", function () {
54
+ var obj = { };
55
+
56
+ it('should return true if object is extensible', function () {
57
+ expect(Object.isExtensible(obj)).toBe(true);
58
+ });
59
+
60
+ it('should return false if object is not extensible', function () {
61
+ expect(Object.isExtensible(Object.preventExtensions(obj))).toBe(false);
62
+ });
63
+
64
+ it('should return false if object is seal', function () {
65
+ expect(Object.isExtensible(Object.seal(obj))).toBe(false);
66
+ });
67
+
68
+ it('should return false if object is freeze', function () {
69
+ expect(Object.isExtensible(Object.freeze(obj))).toBe(false);
70
+ });
71
+
72
+ it('should throw error for non object', function () {
73
+ var e1 = {};
74
+ expect(function () {
75
+ try {
76
+ Object.isExtensible(42)
77
+ } catch (err) {
78
+ throw e1;
79
+ }
80
+ }).toThrow(e1);
81
+ });
82
+ });
83
+
84
+ describe("Object.defineProperty", function () {
85
+ var obj;
86
+
87
+ beforeEach(function() {
88
+ obj = {};
89
+
90
+ Object.defineProperty(obj, 'name', {
91
+ value : 'Testing',
92
+ configurable: true,
93
+ enumerable: true,
94
+ writable: true
95
+ });
96
+ });
97
+
98
+ it('should return the initial value', function () {
99
+ expect(obj.hasOwnProperty('name')).toBeTruthy();
100
+ expect(obj.name).toBe('Testing');
101
+ });
102
+
103
+ it('should be setable', function () {
104
+ obj.name = 'Other';
105
+ expect(obj.name).toBe('Other');
106
+ });
107
+
108
+ it('should return the parent initial value', function () {
109
+ var child = Object.create(obj, {});
110
+
111
+ expect(child.name).toBe('Testing');
112
+ expect(child.hasOwnProperty('name')).toBeFalsy();
113
+ });
114
+
115
+ it('should not override the parent value', function () {
116
+ var child = Object.create(obj, {});
117
+
118
+ Object.defineProperty(child, 'name', {
119
+ value : 'Other'
120
+ });
121
+
122
+ expect(obj.name).toBe('Testing');
123
+ expect(child.name).toBe('Other');
124
+ });
125
+
126
+ it('should throw error for non object', function () {
127
+ expect(function () {
128
+ Object.defineProperty(42, 'name', {});
129
+ }).toThrow();
130
+ });
131
+ });
132
+
133
+ describe("Object.getOwnPropertyDescriptor", function () {
134
+ it('should return undefined because the object does not own the property', function () {
135
+ var descr = Object.getOwnPropertyDescriptor({}, 'name');
136
+
137
+ expect(descr).toBeUndefined()
138
+ });
139
+
140
+ it('should return a data descriptor', function () {
141
+ var descr = Object.getOwnPropertyDescriptor({name: 'Testing'}, 'name');
142
+
143
+ expect(descr).not.toBeUndefined();
144
+ expect(descr.value).toBe('Testing');
145
+ expect(descr.writable).toBe(true);
146
+ expect(descr.enumerable).toBe(true);
147
+ expect(descr.configurable).toBe(true);
148
+ });
149
+
150
+ it('should return undefined because the object does not own the property', function () {
151
+ var descr = Object.getOwnPropertyDescriptor(Object.create({name: 'Testing'}, {}), 'name');
152
+
153
+ expect(descr).toBeUndefined()
154
+ });
155
+
156
+ it('should return a data descriptor', function () {
157
+ var obj = Object.create({}, {
158
+ name: {
159
+ value : 'Testing',
160
+ configurable: true,
161
+ enumerable: true,
162
+ writable: true
163
+ }
164
+ });
165
+
166
+ var descr = Object.getOwnPropertyDescriptor(obj, 'name');
167
+
168
+ expect(descr).not.toBeUndefined();
169
+ expect(descr.value).toBe('Testing');
170
+ expect(descr.writable).toBe(true);
171
+ expect(descr.enumerable).toBe(true);
172
+ expect(descr.configurable).toBe(true);
173
+ });
174
+
175
+ it('should throw error for non object', function () {
176
+ expect(function () {
177
+ Object.getOwnPropertyDescriptor(42, 'name');
178
+ }).toThrow();
179
+ });
180
+ });
181
+ });