lady_josephine 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +32 -0
- data/app/assets/fonts/lady_josephine/icons/icons.eot +0 -0
- data/app/assets/fonts/lady_josephine/icons/icons.svg +215 -0
- data/app/assets/fonts/lady_josephine/icons/icons.ttf +0 -0
- data/app/assets/fonts/lady_josephine/icons/icons.woff +0 -0
- data/app/assets/javascripts/lady_josephine/blocks/facebook.js +25 -0
- data/app/assets/javascripts/lady_josephine/blocks/instagram.js +22 -0
- data/app/assets/javascripts/lady_josephine/blocks/soundcloud.js +24 -0
- data/app/assets/javascripts/lady_josephine/blocks/twitter.js +25 -0
- data/app/assets/javascripts/lady_josephine/blocks/vimeo.js +55 -0
- data/app/assets/javascripts/lady_josephine/blocks/youtube.js +64 -0
- data/app/assets/javascripts/lady_josephine/editor.js +40 -0
- data/app/assets/javascripts/lady_josephine/lady_josephine.js +4 -0
- data/app/assets/javascripts/lady_josephine/lady_josephine_view.js +6 -0
- data/app/assets/stylesheets/lady_josephine/content.sass +33 -0
- data/app/assets/stylesheets/lady_josephine/icons.sass +175 -0
- data/app/assets/stylesheets/lady_josephine/lady_josephine.sass +6 -0
- data/app/assets/stylesheets/lady_josephine/sir_trevor.sass +619 -0
- data/app/assets/stylesheets/lady_josephine/vars.sass +36 -0
- data/app/controllers/lady_josephine/application_controller.rb +4 -0
- data/app/controllers/lady_josephine/editor_controller.rb +40 -0
- data/app/controllers/lady_josephine/images_controller.rb +26 -0
- data/app/helpers/lady_josephine/helper.rb +25 -0
- data/app/helpers/lady_josephine/sir_trevor_helper.rb +172 -0
- data/app/models/lady_josephine/concerns/model.rb +29 -0
- data/app/models/lady_josephine/concerns/pingable.rb +28 -0
- data/app/models/lady_josephine/concerns/server_uuid.rb +24 -0
- data/app/models/lady_josephine/concerns/sir_trevor_images.rb +38 -0
- data/app/models/lady_josephine/image.rb +41 -0
- data/app/uploader/lady_josephine/base_uploader.rb +47 -0
- data/app/uploader/lady_josephine/image_uploader.rb +149 -0
- data/app/views/lady_josephine/blocks/_audio_block.haml +2 -0
- data/app/views/lady_josephine/blocks/_definition_block.haml +4 -0
- data/app/views/lady_josephine/blocks/_divider_block.haml +2 -0
- data/app/views/lady_josephine/blocks/_extended_image_block.haml +63 -0
- data/app/views/lady_josephine/blocks/_extended_quote_block.haml +5 -0
- data/app/views/lady_josephine/blocks/_extended_tweet_block.haml +2 -0
- data/app/views/lady_josephine/blocks/_facebook_post_block.haml +2 -0
- data/app/views/lady_josephine/blocks/_heading_block.haml +2 -0
- data/app/views/lady_josephine/blocks/_html_block.haml +1 -0
- data/app/views/lady_josephine/blocks/_instagram_block.haml +2 -0
- data/app/views/lady_josephine/blocks/_list_block.haml +3 -0
- data/app/views/lady_josephine/blocks/_quote_block.haml +5 -0
- data/app/views/lady_josephine/blocks/_text_block.html.haml +2 -0
- data/app/views/lady_josephine/blocks/_video_block.haml +9 -0
- data/config/routes.rb +9 -0
- data/db/migrate/20160222151500_lady_josephine_image.rb +18 -0
- data/lib/generators/lady_josephine_migration/USAGE +9 -0
- data/lib/generators/lady_josephine_migration/lady_josephine_migration_generator.rb +17 -0
- data/lib/generators/lady_josephine_migration/templates/migration.rb +9 -0
- data/lib/lady_josephine.rb +18 -0
- data/lib/lady_josephine/engine.rb +18 -0
- data/lib/lady_josephine/redcarpet/custom_markdown_formatter.rb +63 -0
- data/lib/lady_josephine/renderer/sir_trevor_renderer.rb +16 -0
- data/lib/lady_josephine/version.rb +3 -0
- data/lib/lady_josephine/whitelist.rb +26 -0
- data/lib/tasks/lady_josephine_tasks.rake +4 -0
- data/spec/controllers/lady_josephine/editor_controller_spec.rb +58 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +29 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +26 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +41 -0
- data/spec/dummy/config/environments/production.rb +79 -0
- data/spec/dummy/config/environments/test.rb +42 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +16 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/bla +0 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/spec_helper.rb +17 -0
- data/vendor/assets/components/Eventable/README.md +12 -0
- data/vendor/assets/components/Eventable/bower.json +10 -0
- data/vendor/assets/components/Eventable/component.json +11 -0
- data/vendor/assets/components/Eventable/eventable.js +207 -0
- data/vendor/assets/components/Eventable/package.json +15 -0
- data/vendor/assets/components/jquery-autosize/bower.json +30 -0
- data/vendor/assets/components/jquery-autosize/demo.html +36 -0
- data/vendor/assets/components/jquery-autosize/jquery.autosize.js +273 -0
- data/vendor/assets/components/jquery-autosize/jquery.autosize.min.js +6 -0
- data/vendor/assets/components/jquery-autosize/package.json +32 -0
- data/vendor/assets/components/jquery-autosize/readme.md +216 -0
- data/vendor/assets/components/jquery/AUTHORS.txt +163 -0
- data/vendor/assets/components/jquery/CONTRIBUTING.md +216 -0
- data/vendor/assets/components/jquery/Gruntfile.js +496 -0
- data/vendor/assets/components/jquery/MIT-LICENSE.txt +21 -0
- data/vendor/assets/components/jquery/README.md +415 -0
- data/vendor/assets/components/jquery/build/release-notes.js +59 -0
- data/vendor/assets/components/jquery/build/release.js +246 -0
- data/vendor/assets/components/jquery/component.json +13 -0
- data/vendor/assets/components/jquery/composer.json +35 -0
- data/vendor/assets/components/jquery/jquery-migrate.js +496 -0
- data/vendor/assets/components/jquery/jquery-migrate.min.js +3 -0
- data/vendor/assets/components/jquery/jquery.js +9597 -0
- data/vendor/assets/components/jquery/jquery.min.js +5 -0
- data/vendor/assets/components/jquery/jquery.min.map +1 -0
- data/vendor/assets/components/jquery/package.json +39 -0
- data/vendor/assets/components/jquery/speed/benchmark.js +15 -0
- data/vendor/assets/components/jquery/speed/benchmarker.css +65 -0
- data/vendor/assets/components/jquery/speed/benchmarker.js +181 -0
- data/vendor/assets/components/jquery/speed/closest.html +39 -0
- data/vendor/assets/components/jquery/speed/css.html +82 -0
- data/vendor/assets/components/jquery/speed/event.html +58 -0
- data/vendor/assets/components/jquery/speed/filter.html +183 -0
- data/vendor/assets/components/jquery/speed/find.html +179 -0
- data/vendor/assets/components/jquery/speed/index.html +72 -0
- data/vendor/assets/components/jquery/speed/jquery-basis.js +6238 -0
- data/vendor/assets/components/jquery/speed/slice.vs.concat.html +47 -0
- data/vendor/assets/components/jquery/src/ajax.js +851 -0
- data/vendor/assets/components/jquery/src/ajax/jsonp.js +80 -0
- data/vendor/assets/components/jquery/src/ajax/script.js +86 -0
- data/vendor/assets/components/jquery/src/ajax/xhr.js +207 -0
- data/vendor/assets/components/jquery/src/attributes.js +661 -0
- data/vendor/assets/components/jquery/src/callbacks.js +196 -0
- data/vendor/assets/components/jquery/src/core.js +949 -0
- data/vendor/assets/components/jquery/src/css.js +679 -0
- data/vendor/assets/components/jquery/src/data.js +340 -0
- data/vendor/assets/components/jquery/src/deferred.js +141 -0
- data/vendor/assets/components/jquery/src/deprecated.js +4 -0
- data/vendor/assets/components/jquery/src/dimensions.js +41 -0
- data/vendor/assets/components/jquery/src/effects.js +730 -0
- data/vendor/assets/components/jquery/src/event-alias.js +15 -0
- data/vendor/assets/components/jquery/src/event.js +991 -0
- data/vendor/assets/components/jquery/src/exports.js +18 -0
- data/vendor/assets/components/jquery/src/intro.js +20 -0
- data/vendor/assets/components/jquery/src/manipulation.js +796 -0
- data/vendor/assets/components/jquery/src/offset.js +169 -0
- data/vendor/assets/components/jquery/src/outro.js +2 -0
- data/vendor/assets/components/jquery/src/queue.js +147 -0
- data/vendor/assets/components/jquery/src/serialize.js +99 -0
- data/vendor/assets/components/jquery/src/sizzle-jquery.js +9 -0
- data/vendor/assets/components/jquery/src/support.js +241 -0
- data/vendor/assets/components/jquery/src/traversing.js +275 -0
- data/vendor/assets/components/jquery/test/csp.php +16 -0
- data/vendor/assets/components/jquery/test/data/1x1.jpg +0 -0
- data/vendor/assets/components/jquery/test/data/ajax/unreleasedXHR.html +25 -0
- data/vendor/assets/components/jquery/test/data/atom+xml.php +4 -0
- data/vendor/assets/components/jquery/test/data/badcall.js +1 -0
- data/vendor/assets/components/jquery/test/data/badjson.js +1 -0
- data/vendor/assets/components/jquery/test/data/cleanScript.html +10 -0
- data/vendor/assets/components/jquery/test/data/core/cc_on.html +22 -0
- data/vendor/assets/components/jquery/test/data/dashboard.xml +11 -0
- data/vendor/assets/components/jquery/test/data/dimensions/documentLarge.html +17 -0
- data/vendor/assets/components/jquery/test/data/dimensions/documentSmall.html +21 -0
- data/vendor/assets/components/jquery/test/data/echoData.php +1 -0
- data/vendor/assets/components/jquery/test/data/echoQuery.php +1 -0
- data/vendor/assets/components/jquery/test/data/errorWithText.php +5 -0
- data/vendor/assets/components/jquery/test/data/etag.php +21 -0
- data/vendor/assets/components/jquery/test/data/evalScript.php +1 -0
- data/vendor/assets/components/jquery/test/data/event/longLoadScript.php +4 -0
- data/vendor/assets/components/jquery/test/data/event/promiseReady.html +17 -0
- data/vendor/assets/components/jquery/test/data/event/syncReady.html +23 -0
- data/vendor/assets/components/jquery/test/data/headers.php +18 -0
- data/vendor/assets/components/jquery/test/data/if_modified_since.php +20 -0
- data/vendor/assets/components/jquery/test/data/iframe.html +8 -0
- data/vendor/assets/components/jquery/test/data/jquery-1.8.2.ajax_xhr.min.js +2 -0
- data/vendor/assets/components/jquery/test/data/json.php +13 -0
- data/vendor/assets/components/jquery/test/data/json_obj.js +1 -0
- data/vendor/assets/components/jquery/test/data/jsonp.php +14 -0
- data/vendor/assets/components/jquery/test/data/manipulation/iframe-denied.html +36 -0
- data/vendor/assets/components/jquery/test/data/name.html +1 -0
- data/vendor/assets/components/jquery/test/data/name.php +24 -0
- data/vendor/assets/components/jquery/test/data/nocontent.php +5 -0
- data/vendor/assets/components/jquery/test/data/offset/absolute.html +41 -0
- data/vendor/assets/components/jquery/test/data/offset/body.html +26 -0
- data/vendor/assets/components/jquery/test/data/offset/fixed.html +34 -0
- data/vendor/assets/components/jquery/test/data/offset/relative.html +31 -0
- data/vendor/assets/components/jquery/test/data/offset/scroll.html +39 -0
- data/vendor/assets/components/jquery/test/data/offset/static.html +31 -0
- data/vendor/assets/components/jquery/test/data/offset/table.html +43 -0
- data/vendor/assets/components/jquery/test/data/params_html.php +12 -0
- data/vendor/assets/components/jquery/test/data/readywaitasset.js +1 -0
- data/vendor/assets/components/jquery/test/data/readywaitloader.js +25 -0
- data/vendor/assets/components/jquery/test/data/script.php +11 -0
- data/vendor/assets/components/jquery/test/data/selector/html5_selector.html +114 -0
- data/vendor/assets/components/jquery/test/data/selector/sizzle_cache.html +21 -0
- data/vendor/assets/components/jquery/test/data/statusText.php +5 -0
- data/vendor/assets/components/jquery/test/data/support/bodyBackground.html +28 -0
- data/vendor/assets/components/jquery/test/data/support/shrinkWrapBlocks.html +23 -0
- data/vendor/assets/components/jquery/test/data/support/testElementCrash.html +17 -0
- data/vendor/assets/components/jquery/test/data/test.html +7 -0
- data/vendor/assets/components/jquery/test/data/test.js +3 -0
- data/vendor/assets/components/jquery/test/data/test.php +7 -0
- data/vendor/assets/components/jquery/test/data/test2.html +5 -0
- data/vendor/assets/components/jquery/test/data/test3.html +3 -0
- data/vendor/assets/components/jquery/test/data/testinit.js +269 -0
- data/vendor/assets/components/jquery/test/data/testrunner.js +368 -0
- data/vendor/assets/components/jquery/test/data/testsuite.css +155 -0
- data/vendor/assets/components/jquery/test/data/text.php +12 -0
- data/vendor/assets/components/jquery/test/data/ua.txt +272 -0
- data/vendor/assets/components/jquery/test/data/with_fries.xml +25 -0
- data/vendor/assets/components/jquery/test/data/with_fries_over_jsonp.php +7 -0
- data/vendor/assets/components/jquery/test/delegatetest.html +228 -0
- data/vendor/assets/components/jquery/test/hovertest.html +158 -0
- data/vendor/assets/components/jquery/test/index.html +330 -0
- data/vendor/assets/components/jquery/test/localfile.html +75 -0
- data/vendor/assets/components/jquery/test/networkerror.html +84 -0
- data/vendor/assets/components/jquery/test/polluted.php +110 -0
- data/vendor/assets/components/jquery/test/readywait.html +70 -0
- data/vendor/assets/components/jquery/test/unit/ajax.js +1971 -0
- data/vendor/assets/components/jquery/test/unit/attributes.js +1332 -0
- data/vendor/assets/components/jquery/test/unit/callbacks.js +326 -0
- data/vendor/assets/components/jquery/test/unit/core.js +1332 -0
- data/vendor/assets/components/jquery/test/unit/css.js +1036 -0
- data/vendor/assets/components/jquery/test/unit/data.js +636 -0
- data/vendor/assets/components/jquery/test/unit/deferred.js +440 -0
- data/vendor/assets/components/jquery/test/unit/deprecated.js +1 -0
- data/vendor/assets/components/jquery/test/unit/dimensions.js +461 -0
- data/vendor/assets/components/jquery/test/unit/effects.js +2050 -0
- data/vendor/assets/components/jquery/test/unit/event.js +2690 -0
- data/vendor/assets/components/jquery/test/unit/exports.js +7 -0
- data/vendor/assets/components/jquery/test/unit/manipulation.js +2242 -0
- data/vendor/assets/components/jquery/test/unit/offset.js +549 -0
- data/vendor/assets/components/jquery/test/unit/queue.js +316 -0
- data/vendor/assets/components/jquery/test/unit/selector.js +185 -0
- data/vendor/assets/components/jquery/test/unit/serialize.js +146 -0
- data/vendor/assets/components/jquery/test/unit/support.js +384 -0
- data/vendor/assets/components/jquery/test/unit/traversing.js +667 -0
- data/vendor/assets/components/jquery/test/xhtml.php +5 -0
- data/vendor/assets/components/sir-trevor-js/CHANGELOG.md +44 -0
- data/vendor/assets/components/sir-trevor-js/Gemfile +3 -0
- data/vendor/assets/components/sir-trevor-js/Gemfile.lock +10 -0
- data/vendor/assets/components/sir-trevor-js/Gruntfile.js +109 -0
- data/vendor/assets/components/sir-trevor-js/MIT-LICENCE +20 -0
- data/vendor/assets/components/sir-trevor-js/Readme.md +84 -0
- data/vendor/assets/components/sir-trevor-js/bower.json +21 -0
- data/vendor/assets/components/sir-trevor-js/component.json +42 -0
- data/vendor/assets/components/sir-trevor-js/contributing.md +74 -0
- data/vendor/assets/components/sir-trevor-js/examples-component/component.json +14 -0
- data/vendor/assets/components/sir-trevor-js/examples-component/index.html +33 -0
- data/vendor/assets/components/sir-trevor-js/examples-component/index.js +29 -0
- data/vendor/assets/components/sir-trevor-js/examples-component/javascript/example_block.js +203 -0
- data/vendor/assets/components/sir-trevor-js/examples-component/javascript/limit_chars.js +46 -0
- data/vendor/assets/components/sir-trevor-js/examples-component/sir-trevor.gif +0 -0
- data/vendor/assets/components/sir-trevor-js/locales/cn.js +51 -0
- data/vendor/assets/components/sir-trevor-js/locales/de.js +51 -0
- data/vendor/assets/components/sir-trevor-js/locales/es.js +51 -0
- data/vendor/assets/components/sir-trevor-js/locales/fi.js +51 -0
- data/vendor/assets/components/sir-trevor-js/locales/fr.js +51 -0
- data/vendor/assets/components/sir-trevor-js/locales/pt.js +52 -0
- data/vendor/assets/components/sir-trevor-js/package.json +23 -0
- data/vendor/assets/components/sir-trevor-js/sir-trevor-icons.css +6 -0
- data/vendor/assets/components/sir-trevor-js/sir-trevor.css +393 -0
- data/vendor/assets/components/sir-trevor-js/sir-trevor.css.map +7 -0
- data/vendor/assets/components/sir-trevor-js/sir-trevor.js +5481 -0
- data/vendor/assets/components/sir-trevor-js/sir-trevor.min.js +13 -0
- data/vendor/assets/components/underscore/CNAME +1 -0
- data/vendor/assets/components/underscore/CONTRIBUTING.md +9 -0
- data/vendor/assets/components/underscore/LICENSE +22 -0
- data/vendor/assets/components/underscore/README.md +19 -0
- data/vendor/assets/components/underscore/Rakefile +10 -0
- data/vendor/assets/components/underscore/docs/docco.css +192 -0
- data/vendor/assets/components/underscore/docs/favicon.ico +0 -0
- data/vendor/assets/components/underscore/docs/images/background.png +0 -0
- data/vendor/assets/components/underscore/docs/images/underscore.png +0 -0
- data/vendor/assets/components/underscore/docs/underscore.html +823 -0
- data/vendor/assets/components/underscore/favicon.ico +0 -0
- data/vendor/assets/components/underscore/index.html +2467 -0
- data/vendor/assets/components/underscore/index.js +1 -0
- data/vendor/assets/components/underscore/package.json +16 -0
- data/vendor/assets/components/underscore/test/arrays.js +200 -0
- data/vendor/assets/components/underscore/test/chaining.js +59 -0
- data/vendor/assets/components/underscore/test/collections.js +453 -0
- data/vendor/assets/components/underscore/test/functions.js +265 -0
- data/vendor/assets/components/underscore/test/index.html +44 -0
- data/vendor/assets/components/underscore/test/objects.js +570 -0
- data/vendor/assets/components/underscore/test/speed.js +75 -0
- data/vendor/assets/components/underscore/test/utility.js +266 -0
- data/vendor/assets/components/underscore/test/vendor/jquery.js +9404 -0
- data/vendor/assets/components/underscore/test/vendor/jslitmus.js +670 -0
- data/vendor/assets/components/underscore/test/vendor/qunit.css +235 -0
- data/vendor/assets/components/underscore/test/vendor/qunit.js +1977 -0
- data/vendor/assets/components/underscore/test/vendor/runner.js +98 -0
- data/vendor/assets/components/underscore/underscore-min.js +1 -0
- data/vendor/assets/components/underscore/underscore.js +1226 -0
- metadata +473 -0
@@ -0,0 +1,636 @@
|
|
1
|
+
module("data", { teardown: moduleTeardown });
|
2
|
+
|
3
|
+
test("expando", function(){
|
4
|
+
expect(1);
|
5
|
+
|
6
|
+
equal(jQuery.expando !== undefined, true, "jQuery is exposing the expando");
|
7
|
+
});
|
8
|
+
|
9
|
+
function dataTests (elem) {
|
10
|
+
var oldCacheLength, dataObj, internalDataObj, expected, actual;
|
11
|
+
|
12
|
+
equal( jQuery.data(elem, "foo"), undefined, "No data exists initially" );
|
13
|
+
strictEqual( jQuery.hasData(elem), false, "jQuery.hasData agrees no data exists initially" );
|
14
|
+
|
15
|
+
dataObj = jQuery.data(elem);
|
16
|
+
equal( typeof dataObj, "object", "Calling data with no args gives us a data object reference" );
|
17
|
+
strictEqual( jQuery.data(elem), dataObj, "Calling jQuery.data returns the same data object when called multiple times" );
|
18
|
+
|
19
|
+
strictEqual( jQuery.hasData(elem), false, "jQuery.hasData agrees no data exists even when an empty data obj exists" );
|
20
|
+
|
21
|
+
dataObj["foo"] = "bar";
|
22
|
+
equal( jQuery.data(elem, "foo"), "bar", "Data is readable by jQuery.data when set directly on a returned data object" );
|
23
|
+
|
24
|
+
strictEqual( jQuery.hasData(elem), true, "jQuery.hasData agrees data exists when data exists" );
|
25
|
+
|
26
|
+
jQuery.data(elem, "foo", "baz");
|
27
|
+
equal( jQuery.data(elem, "foo"), "baz", "Data can be changed by jQuery.data" );
|
28
|
+
equal( dataObj["foo"], "baz", "Changes made through jQuery.data propagate to referenced data object" );
|
29
|
+
|
30
|
+
jQuery.data(elem, "foo", undefined);
|
31
|
+
equal( jQuery.data(elem, "foo"), "baz", "Data is not unset by passing undefined to jQuery.data" );
|
32
|
+
|
33
|
+
jQuery.data(elem, "foo", null);
|
34
|
+
strictEqual( jQuery.data(elem, "foo"), null, "Setting null using jQuery.data works OK" );
|
35
|
+
|
36
|
+
jQuery.data(elem, "foo", "foo1");
|
37
|
+
|
38
|
+
jQuery.data(elem, { "bar" : "baz", "boom" : "bloz" });
|
39
|
+
strictEqual( jQuery.data(elem, "foo"), "foo1", "Passing an object extends the data object instead of replacing it" );
|
40
|
+
equal( jQuery.data(elem, "boom"), "bloz", "Extending the data object works" );
|
41
|
+
|
42
|
+
jQuery._data(elem, "foo", "foo2", true);
|
43
|
+
equal( jQuery._data(elem, "foo"), "foo2", "Setting internal data works" );
|
44
|
+
equal( jQuery.data(elem, "foo"), "foo1", "Setting internal data does not override user data" );
|
45
|
+
|
46
|
+
internalDataObj = jQuery._data( elem );
|
47
|
+
ok( internalDataObj, "Internal data object exists" );
|
48
|
+
notStrictEqual( dataObj, internalDataObj, "Internal data object is not the same as user data object" );
|
49
|
+
|
50
|
+
strictEqual( elem.boom, undefined, "Data is never stored directly on the object" );
|
51
|
+
|
52
|
+
jQuery.removeData(elem, "foo");
|
53
|
+
strictEqual( jQuery.data(elem, "foo"), undefined, "jQuery.removeData removes single properties" );
|
54
|
+
|
55
|
+
jQuery.removeData(elem);
|
56
|
+
strictEqual( jQuery._data(elem), internalDataObj, "jQuery.removeData does not remove internal data if it exists" );
|
57
|
+
|
58
|
+
jQuery.data(elem, "foo", "foo1");
|
59
|
+
jQuery._data(elem, "foo", "foo2");
|
60
|
+
|
61
|
+
equal( jQuery.data(elem, "foo"), "foo1", "(sanity check) Ensure data is set in user data object" );
|
62
|
+
equal( jQuery._data(elem, "foo"), "foo2", "(sanity check) Ensure data is set in internal data object" );
|
63
|
+
|
64
|
+
strictEqual( jQuery._data(elem, jQuery.expando), undefined, "Removing the last item in internal data destroys the internal data object" );
|
65
|
+
|
66
|
+
jQuery._data(elem, "foo", "foo2");
|
67
|
+
equal( jQuery._data(elem, "foo"), "foo2", "(sanity check) Ensure data is set in internal data object" );
|
68
|
+
|
69
|
+
jQuery.removeData(elem, "foo");
|
70
|
+
equal( jQuery._data(elem, "foo"), "foo2", "(sanity check) jQuery.removeData for user data does not remove internal data" );
|
71
|
+
}
|
72
|
+
|
73
|
+
test("jQuery.data(div)", 25, function() {
|
74
|
+
var div = document.createElement("div");
|
75
|
+
|
76
|
+
dataTests(div);
|
77
|
+
|
78
|
+
// We stored one key in the private data
|
79
|
+
// assert that nothing else was put in there, and that that
|
80
|
+
// one stayed there.
|
81
|
+
QUnit.expectJqData(div, "foo");
|
82
|
+
});
|
83
|
+
|
84
|
+
test("jQuery.data({})", 25, function() {
|
85
|
+
dataTests({});
|
86
|
+
});
|
87
|
+
|
88
|
+
test("jQuery.data(window)", 25, function() {
|
89
|
+
// remove bound handlers from window object to stop potential false positives caused by fix for #5280 in
|
90
|
+
// transports/xhr.js
|
91
|
+
jQuery(window).unbind("unload");
|
92
|
+
|
93
|
+
dataTests(window);
|
94
|
+
});
|
95
|
+
|
96
|
+
test("jQuery.data(document)", 25, function() {
|
97
|
+
dataTests(document);
|
98
|
+
|
99
|
+
QUnit.expectJqData(document, "foo");
|
100
|
+
});
|
101
|
+
|
102
|
+
test("Expando cleanup", 4, function() {
|
103
|
+
var expected, actual,
|
104
|
+
div = document.createElement("div");
|
105
|
+
|
106
|
+
function assertExpandoAbsent(message) {
|
107
|
+
if (jQuery.support.deleteExpando) {
|
108
|
+
expected = false;
|
109
|
+
actual = jQuery.expando in div;
|
110
|
+
} else {
|
111
|
+
expected = null;
|
112
|
+
actual = div[ jQuery.expando ];
|
113
|
+
}
|
114
|
+
equal( actual, expected, message );
|
115
|
+
}
|
116
|
+
|
117
|
+
assertExpandoAbsent("There is no expando on new elements");
|
118
|
+
|
119
|
+
jQuery.data(div, "foo", 100);
|
120
|
+
jQuery.data(div, "bar", 200);
|
121
|
+
|
122
|
+
ok(jQuery.expando in div, "There is an expando on the element after using $.data()");
|
123
|
+
|
124
|
+
jQuery.removeData(div, "foo");
|
125
|
+
|
126
|
+
ok(jQuery.expando in div, "There is still an expando on the element after removing (some) of the data");
|
127
|
+
|
128
|
+
jQuery.removeData(div, "bar");
|
129
|
+
|
130
|
+
assertExpandoAbsent("Removing the last item in the data store deletes the expando");
|
131
|
+
|
132
|
+
// Clean up unattached element
|
133
|
+
jQuery(div).remove();
|
134
|
+
});
|
135
|
+
|
136
|
+
test("Data is not being set on comment and text nodes", function() {
|
137
|
+
expect(2);
|
138
|
+
|
139
|
+
ok( !jQuery.hasData( jQuery("<!-- comment -->").data("foo", 0) ) );
|
140
|
+
ok( !jQuery.hasData( jQuery("<span>text</span>").contents().data("foo", 0) ) );
|
141
|
+
|
142
|
+
});
|
143
|
+
|
144
|
+
test("jQuery.acceptData", function() {
|
145
|
+
expect(9);
|
146
|
+
|
147
|
+
ok( jQuery.acceptData( document ), "document" );
|
148
|
+
ok( jQuery.acceptData( document.documentElement ), "documentElement" );
|
149
|
+
ok( jQuery.acceptData( {} ), "object" );
|
150
|
+
ok( !jQuery.acceptData( document.createElement("embed") ), "embed" );
|
151
|
+
ok( !jQuery.acceptData( document.createElement("applet") ), "applet" );
|
152
|
+
|
153
|
+
var flash = document.createElement("object");
|
154
|
+
flash.setAttribute("classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
|
155
|
+
ok( jQuery.acceptData( flash ), "flash" );
|
156
|
+
|
157
|
+
var applet = document.createElement("object");
|
158
|
+
applet.setAttribute("classid", "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93");
|
159
|
+
ok( !jQuery.acceptData( applet ), "applet" );
|
160
|
+
|
161
|
+
ok( !jQuery.acceptData( document.createComment("") ), "comment" );
|
162
|
+
ok( !jQuery.acceptData( document.createTextNode("") ), "text" );
|
163
|
+
});
|
164
|
+
|
165
|
+
test(".data()", function() {
|
166
|
+
expect(5);
|
167
|
+
|
168
|
+
var div = jQuery("#foo");
|
169
|
+
strictEqual( div.data("foo"), undefined, "Make sure that missing result is undefined" );
|
170
|
+
div.data("test", "success");
|
171
|
+
|
172
|
+
var dataObj = div.data();
|
173
|
+
|
174
|
+
deepEqual( dataObj, {test: "success"}, "data() returns entire data object with expected properties" );
|
175
|
+
strictEqual( div.data("foo"), undefined, "Make sure that missing result is still undefined" );
|
176
|
+
|
177
|
+
var nodiv = jQuery("#unfound");
|
178
|
+
equal( nodiv.data(), null, "data() on empty set returns null" );
|
179
|
+
|
180
|
+
var obj = { foo: "bar" };
|
181
|
+
jQuery(obj).data("foo", "baz");
|
182
|
+
|
183
|
+
dataObj = jQuery.extend(true, {}, jQuery(obj).data());
|
184
|
+
|
185
|
+
deepEqual( dataObj, { "foo": "baz" }, "Retrieve data object from a wrapped JS object (#7524)" );
|
186
|
+
});
|
187
|
+
|
188
|
+
var testDataTypes = function( $obj ) {
|
189
|
+
jQuery.each({
|
190
|
+
"null": null,
|
191
|
+
"true": true,
|
192
|
+
"false": false,
|
193
|
+
"zero": 0,
|
194
|
+
"one": 1,
|
195
|
+
"empty string": "",
|
196
|
+
"empty array": [],
|
197
|
+
"array": [1],
|
198
|
+
"empty object": {},
|
199
|
+
"object": { foo: "bar" },
|
200
|
+
"date": new Date(),
|
201
|
+
"regex": /test/,
|
202
|
+
"function": function() {}
|
203
|
+
}, function( type, value ) {
|
204
|
+
strictEqual( $obj.data( "test", value ).data("test"), value, "Data set to " + type );
|
205
|
+
});
|
206
|
+
};
|
207
|
+
|
208
|
+
test("jQuery(Element).data(String, Object).data(String)", function() {
|
209
|
+
expect( 18 );
|
210
|
+
var parent = jQuery("<div><div></div></div>"),
|
211
|
+
div = parent.children();
|
212
|
+
|
213
|
+
strictEqual( div.data("test"), undefined, "No data exists initially" );
|
214
|
+
strictEqual( div.data("test", "success").data("test"), "success", "Data added" );
|
215
|
+
strictEqual( div.data("test", "overwritten").data("test"), "overwritten", "Data overwritten" );
|
216
|
+
strictEqual( div.data("test", undefined).data("test"), "overwritten", ".data(key,undefined) does nothing but is chainable (#5571)");
|
217
|
+
strictEqual( div.data("notexist"), undefined, "No data exists for unset key" );
|
218
|
+
testDataTypes( div );
|
219
|
+
|
220
|
+
parent.remove();
|
221
|
+
});
|
222
|
+
|
223
|
+
test("jQuery(plain Object).data(String, Object).data(String)", function() {
|
224
|
+
expect( 16 );
|
225
|
+
|
226
|
+
// #3748
|
227
|
+
var $obj = jQuery({ exists: true });
|
228
|
+
strictEqual( $obj.data("nothing"), undefined, "Non-existent data returns undefined");
|
229
|
+
strictEqual( $obj.data("exists"), undefined, "Object properties are not returned as data" );
|
230
|
+
testDataTypes( $obj );
|
231
|
+
|
232
|
+
// Clean up
|
233
|
+
$obj.removeData();
|
234
|
+
deepEqual( $obj[0], { exists: true }, "removeData does not clear the object" );
|
235
|
+
});
|
236
|
+
|
237
|
+
test("data-* attributes", function() {
|
238
|
+
expect(40);
|
239
|
+
var div = jQuery("<div>"),
|
240
|
+
child = jQuery("<div data-myobj='old data' data-ignored=\"DOM\" data-other='test'></div>"),
|
241
|
+
dummy = jQuery("<div data-myobj='old data' data-ignored=\"DOM\" data-other='test'></div>");
|
242
|
+
|
243
|
+
equal( div.data("attr"), undefined, "Check for non-existing data-attr attribute" );
|
244
|
+
|
245
|
+
div.attr("data-attr", "exists");
|
246
|
+
equal( div.data("attr"), "exists", "Check for existing data-attr attribute" );
|
247
|
+
|
248
|
+
div.attr("data-attr", "exists2");
|
249
|
+
equal( div.data("attr"), "exists", "Check that updates to data- don't update .data()" );
|
250
|
+
|
251
|
+
div.data("attr", "internal").attr("data-attr", "external");
|
252
|
+
equal( div.data("attr"), "internal", "Check for .data('attr') precedence (internal > external data-* attribute)" );
|
253
|
+
|
254
|
+
div.remove();
|
255
|
+
|
256
|
+
child.appendTo("#qunit-fixture");
|
257
|
+
equal( child.data("myobj"), "old data", "Value accessed from data-* attribute");
|
258
|
+
|
259
|
+
child.data("myobj", "replaced");
|
260
|
+
equal( child.data("myobj"), "replaced", "Original data overwritten");
|
261
|
+
|
262
|
+
child.data("ignored", "cache");
|
263
|
+
equal( child.data("ignored"), "cache", "Cached data used before DOM data-* fallback");
|
264
|
+
|
265
|
+
var prop,
|
266
|
+
obj = child.data(),
|
267
|
+
obj2 = dummy.data(),
|
268
|
+
check = [ "myobj", "ignored", "other" ],
|
269
|
+
num = 0,
|
270
|
+
num2 = 0;
|
271
|
+
|
272
|
+
dummy.remove();
|
273
|
+
|
274
|
+
for ( var i = 0, l = check.length; i < l; i++ ) {
|
275
|
+
ok( obj[ check[i] ], "Make sure data- property exists when calling data-." );
|
276
|
+
ok( obj2[ check[i] ], "Make sure data- property exists when calling data-." );
|
277
|
+
}
|
278
|
+
|
279
|
+
for ( prop in obj ) {
|
280
|
+
num++;
|
281
|
+
}
|
282
|
+
|
283
|
+
equal( num, check.length, "Make sure that the right number of properties came through." );
|
284
|
+
|
285
|
+
for ( prop in obj2 ) {
|
286
|
+
num2++;
|
287
|
+
}
|
288
|
+
|
289
|
+
equal( num2, check.length, "Make sure that the right number of properties came through." );
|
290
|
+
|
291
|
+
child.attr("data-other", "newvalue");
|
292
|
+
|
293
|
+
equal( child.data("other"), "test", "Make sure value was pulled in properly from a .data()." );
|
294
|
+
|
295
|
+
child
|
296
|
+
.attr("data-true", "true")
|
297
|
+
.attr("data-false", "false")
|
298
|
+
.attr("data-five", "5")
|
299
|
+
.attr("data-point", "5.5")
|
300
|
+
.attr("data-pointe", "5.5E3")
|
301
|
+
.attr("data-grande", "5.574E9")
|
302
|
+
.attr("data-hexadecimal", "0x42")
|
303
|
+
.attr("data-pointbad", "5..5")
|
304
|
+
.attr("data-pointbad2", "-.")
|
305
|
+
.attr("data-bigassnum", "123456789123456789123456789")
|
306
|
+
.attr("data-badjson", "{123}")
|
307
|
+
.attr("data-badjson2", "[abc]")
|
308
|
+
.attr("data-empty", "")
|
309
|
+
.attr("data-space", " ")
|
310
|
+
.attr("data-null", "null")
|
311
|
+
.attr("data-string", "test");
|
312
|
+
|
313
|
+
strictEqual( child.data("true"), true, "Primitive true read from attribute");
|
314
|
+
strictEqual( child.data("false"), false, "Primitive false read from attribute");
|
315
|
+
strictEqual( child.data("five"), 5, "Primitive number read from attribute");
|
316
|
+
strictEqual( child.data("point"), 5.5, "Primitive number read from attribute");
|
317
|
+
strictEqual( child.data("pointe"), "5.5E3", "Floating point exponential number read from attribute");
|
318
|
+
strictEqual( child.data("grande"), "5.574E9", "Big exponential number read from attribute");
|
319
|
+
strictEqual( child.data("hexadecimal"), "0x42", "Hexadecimal number read from attribute");
|
320
|
+
strictEqual( child.data("pointbad"), "5..5", "Bad number read from attribute");
|
321
|
+
strictEqual( child.data("pointbad2"), "-.", "Bad number read from attribute");
|
322
|
+
strictEqual( child.data("bigassnum"), "123456789123456789123456789", "Bad bigass number read from attribute");
|
323
|
+
strictEqual( child.data("badjson"), "{123}", "Bad number read from attribute");
|
324
|
+
strictEqual( child.data("badjson2"), "[abc]", "Bad number read from attribute");
|
325
|
+
strictEqual( child.data("empty"), "", "Empty string read from attribute");
|
326
|
+
strictEqual( child.data("space"), " ", "Empty string read from attribute");
|
327
|
+
strictEqual( child.data("null"), null, "Primitive null read from attribute");
|
328
|
+
strictEqual( child.data("string"), "test", "Typical string read from attribute");
|
329
|
+
|
330
|
+
child.remove();
|
331
|
+
|
332
|
+
// tests from metadata plugin
|
333
|
+
function testData(index, elem) {
|
334
|
+
switch (index) {
|
335
|
+
case 0:
|
336
|
+
equal(jQuery(elem).data("foo"), "bar", "Check foo property");
|
337
|
+
equal(jQuery(elem).data("bar"), "baz", "Check baz property");
|
338
|
+
break;
|
339
|
+
case 1:
|
340
|
+
equal(jQuery(elem).data("test"), "bar", "Check test property");
|
341
|
+
equal(jQuery(elem).data("bar"), "baz", "Check bar property");
|
342
|
+
break;
|
343
|
+
case 2:
|
344
|
+
equal(jQuery(elem).data("zoooo"), "bar", "Check zoooo property");
|
345
|
+
deepEqual(jQuery(elem).data("bar"), {"test":"baz"}, "Check bar property");
|
346
|
+
break;
|
347
|
+
case 3:
|
348
|
+
equal(jQuery(elem).data("number"), true, "Check number property");
|
349
|
+
deepEqual(jQuery(elem).data("stuff"), [2,8], "Check stuff property");
|
350
|
+
break;
|
351
|
+
default:
|
352
|
+
ok(false, ["Assertion failed on index ", index, ", with data"].join(""));
|
353
|
+
}
|
354
|
+
}
|
355
|
+
|
356
|
+
var metadata = "<ol><li class='test test2' data-foo='bar' data-bar='baz' data-arr='[1,2]'>Some stuff</li><li class='test test2' data-test='bar' data-bar='baz'>Some stuff</li><li class='test test2' data-zoooo='bar' data-bar='{\"test\":\"baz\"}'>Some stuff</li><li class='test test2' data-number=true data-stuff='[2,8]'>Some stuff</li></ol>",
|
357
|
+
elem = jQuery(metadata).appendTo("#qunit-fixture");
|
358
|
+
|
359
|
+
elem.find("li").each(testData);
|
360
|
+
elem.remove();
|
361
|
+
});
|
362
|
+
|
363
|
+
test(".data(Object)", function() {
|
364
|
+
expect(4);
|
365
|
+
|
366
|
+
var div = jQuery("<div/>");
|
367
|
+
|
368
|
+
div.data({ "test": "in", "test2": "in2" });
|
369
|
+
equal( div.data("test"), "in", "Verify setting an object in data" );
|
370
|
+
equal( div.data("test2"), "in2", "Verify setting an object in data" );
|
371
|
+
|
372
|
+
var obj = {test:"unset"},
|
373
|
+
jqobj = jQuery(obj);
|
374
|
+
jqobj.data("test", "unset");
|
375
|
+
jqobj.data({ "test": "in", "test2": "in2" });
|
376
|
+
equal( jQuery.data(obj)["test"], "in", "Verify setting an object on an object extends the data object" );
|
377
|
+
equal( obj["test2"], undefined, "Verify setting an object on an object does not extend the object" );
|
378
|
+
|
379
|
+
// manually clean up detached elements
|
380
|
+
div.remove();
|
381
|
+
});
|
382
|
+
|
383
|
+
test("jQuery.removeData", function() {
|
384
|
+
expect(10);
|
385
|
+
var div = jQuery("#foo")[0];
|
386
|
+
jQuery.data(div, "test", "testing");
|
387
|
+
jQuery.removeData(div, "test");
|
388
|
+
equal( jQuery.data(div, "test"), undefined, "Check removal of data" );
|
389
|
+
|
390
|
+
jQuery.data(div, "test2", "testing");
|
391
|
+
jQuery.removeData( div );
|
392
|
+
ok( !jQuery.data(div, "test2"), "Make sure that the data property no longer exists." );
|
393
|
+
ok( !div[ jQuery.expando ], "Make sure the expando no longer exists, as well." );
|
394
|
+
|
395
|
+
jQuery.data(div, {
|
396
|
+
test3: "testing",
|
397
|
+
test4: "testing"
|
398
|
+
});
|
399
|
+
jQuery.removeData( div, "test3 test4" );
|
400
|
+
ok( !jQuery.data(div, "test3") || jQuery.data(div, "test4"), "Multiple delete with spaces." );
|
401
|
+
|
402
|
+
jQuery.data(div, {
|
403
|
+
test3: "testing",
|
404
|
+
test4: "testing"
|
405
|
+
});
|
406
|
+
jQuery.removeData( div, [ "test3", "test4" ] );
|
407
|
+
ok( !jQuery.data(div, "test3") || jQuery.data(div, "test4"), "Multiple delete by array." );
|
408
|
+
|
409
|
+
jQuery.data(div, {
|
410
|
+
"test3 test4": "testing",
|
411
|
+
"test3": "testing"
|
412
|
+
});
|
413
|
+
jQuery.removeData( div, "test3 test4" );
|
414
|
+
ok( !jQuery.data(div, "test3 test4"), "Multiple delete with spaces deleted key with exact name" );
|
415
|
+
ok( jQuery.data(div, "test3"), "Left the partial matched key alone" );
|
416
|
+
|
417
|
+
var obj = {};
|
418
|
+
jQuery.data(obj, "test", "testing");
|
419
|
+
equal( jQuery(obj).data("test"), "testing", "verify data on plain object");
|
420
|
+
jQuery.removeData(obj, "test");
|
421
|
+
equal( jQuery.data(obj, "test"), undefined, "Check removal of data on plain object" );
|
422
|
+
|
423
|
+
jQuery.data( window, "BAD", true );
|
424
|
+
jQuery.removeData( window, "BAD" );
|
425
|
+
ok( !jQuery.data( window, "BAD" ), "Make sure that the value was not still set." );
|
426
|
+
});
|
427
|
+
|
428
|
+
test(".removeData()", function() {
|
429
|
+
expect(6);
|
430
|
+
var div = jQuery("#foo");
|
431
|
+
div.data("test", "testing");
|
432
|
+
div.removeData("test");
|
433
|
+
equal( div.data("test"), undefined, "Check removal of data" );
|
434
|
+
|
435
|
+
div.data("test", "testing");
|
436
|
+
div.data("test.foo", "testing2");
|
437
|
+
div.removeData("test.bar");
|
438
|
+
equal( div.data("test.foo"), "testing2", "Make sure data is intact" );
|
439
|
+
equal( div.data("test"), "testing", "Make sure data is intact" );
|
440
|
+
|
441
|
+
div.removeData("test");
|
442
|
+
equal( div.data("test.foo"), "testing2", "Make sure data is intact" );
|
443
|
+
equal( div.data("test"), undefined, "Make sure data is intact" );
|
444
|
+
|
445
|
+
div.removeData("test.foo");
|
446
|
+
equal( div.data("test.foo"), undefined, "Make sure data is intact" );
|
447
|
+
});
|
448
|
+
|
449
|
+
if (window.JSON && window.JSON.stringify) {
|
450
|
+
test("JSON serialization (#8108)", function () {
|
451
|
+
expect(1);
|
452
|
+
|
453
|
+
var obj = { "foo": "bar" };
|
454
|
+
jQuery.data(obj, "hidden", true);
|
455
|
+
|
456
|
+
equal( JSON.stringify(obj), "{\"foo\":\"bar\"}", "Expando is hidden from JSON.stringify" );
|
457
|
+
});
|
458
|
+
}
|
459
|
+
|
460
|
+
test("jQuery.data should follow html5 specification regarding camel casing", function() {
|
461
|
+
expect(10);
|
462
|
+
|
463
|
+
var div = jQuery("<div id='myObject' data-w-t-f='ftw' data-big-a-little-a='bouncing-b' data-foo='a' data-foo-bar='b' data-foo-bar-baz='c'></div>")
|
464
|
+
.prependTo("body");
|
465
|
+
|
466
|
+
equal( div.data()["wTF"], "ftw", "Verify single letter data-* key" );
|
467
|
+
equal( div.data()["bigALittleA"], "bouncing-b", "Verify single letter mixed data-* key" );
|
468
|
+
|
469
|
+
equal( div.data()["foo"], "a", "Verify single word data-* key" );
|
470
|
+
equal( div.data()["fooBar"], "b", "Verify multiple word data-* key" );
|
471
|
+
equal( div.data()["fooBarBaz"], "c", "Verify multiple word data-* key" );
|
472
|
+
|
473
|
+
equal( div.data("foo"), "a", "Verify single word data-* key" );
|
474
|
+
equal( div.data("fooBar"), "b", "Verify multiple word data-* key" );
|
475
|
+
equal( div.data("fooBarBaz"), "c", "Verify multiple word data-* key" );
|
476
|
+
|
477
|
+
div.data("foo-bar", "d");
|
478
|
+
|
479
|
+
equal( div.data("fooBar"), "d", "Verify updated data-* key" );
|
480
|
+
equal( div.data("foo-bar"), "d", "Verify updated data-* key" );
|
481
|
+
|
482
|
+
div.remove();
|
483
|
+
});
|
484
|
+
|
485
|
+
test("jQuery.data should not miss data with preset hyphenated property names", function() {
|
486
|
+
|
487
|
+
expect(2);
|
488
|
+
|
489
|
+
var div = jQuery("<div/>", { id: "hyphened" }).appendTo("#qunit-fixture"),
|
490
|
+
test = {
|
491
|
+
"camelBar": "camelBar",
|
492
|
+
"hyphen-foo": "hyphen-foo"
|
493
|
+
};
|
494
|
+
|
495
|
+
div.data( test );
|
496
|
+
|
497
|
+
jQuery.each( test , function(i, k) {
|
498
|
+
equal( div.data(k), k, "data with property '"+k+"' was correctly found");
|
499
|
+
});
|
500
|
+
});
|
501
|
+
|
502
|
+
test("jQuery.data supports interoperable hyphenated/camelCase get/set of properties with arbitrary non-null|NaN|undefined values", function() {
|
503
|
+
|
504
|
+
var div = jQuery("<div/>", { id: "hyphened" }).appendTo("#qunit-fixture"),
|
505
|
+
datas = {
|
506
|
+
"non-empty": "a string",
|
507
|
+
"empty-string": "",
|
508
|
+
"one-value": 1,
|
509
|
+
"zero-value": 0,
|
510
|
+
"an-array": [],
|
511
|
+
"an-object": {},
|
512
|
+
"bool-true": true,
|
513
|
+
"bool-false": false,
|
514
|
+
// JSHint enforces double quotes,
|
515
|
+
// but JSON strings need double quotes to parse
|
516
|
+
// so we need escaped double quotes here
|
517
|
+
"some-json": "{ \"foo\": \"bar\" }",
|
518
|
+
"num-1-middle": true,
|
519
|
+
"num-end-2": true,
|
520
|
+
"2-num-start": true
|
521
|
+
};
|
522
|
+
|
523
|
+
expect( 24 );
|
524
|
+
|
525
|
+
jQuery.each( datas, function( key, val ) {
|
526
|
+
div.data( key, val );
|
527
|
+
|
528
|
+
deepEqual( div.data( key ), val, "get: " + key );
|
529
|
+
deepEqual( div.data( jQuery.camelCase( key ) ), val, "get: " + jQuery.camelCase( key ) );
|
530
|
+
});
|
531
|
+
});
|
532
|
+
|
533
|
+
test("jQuery.data supports interoperable removal of hyphenated/camelCase properties", function() {
|
534
|
+
var div = jQuery("<div/>", { id: "hyphened" }).appendTo("#qunit-fixture"),
|
535
|
+
datas = {
|
536
|
+
"non-empty": "a string",
|
537
|
+
"empty-string": "",
|
538
|
+
"one-value": 1,
|
539
|
+
"zero-value": 0,
|
540
|
+
"an-array": [],
|
541
|
+
"an-object": {},
|
542
|
+
"bool-true": true,
|
543
|
+
"bool-false": false,
|
544
|
+
// JSHint enforces double quotes,
|
545
|
+
// but JSON strings need double quotes to parse
|
546
|
+
// so we need escaped double quotes here
|
547
|
+
"some-json": "{ \"foo\": \"bar\" }"
|
548
|
+
};
|
549
|
+
|
550
|
+
expect( 27 );
|
551
|
+
|
552
|
+
jQuery.each( datas, function( key, val ) {
|
553
|
+
div.data( key, val );
|
554
|
+
|
555
|
+
deepEqual( div.data( key ), val, "get: " + key );
|
556
|
+
deepEqual( div.data( jQuery.camelCase( key ) ), val, "get: " + jQuery.camelCase( key ) );
|
557
|
+
|
558
|
+
div.removeData( key );
|
559
|
+
|
560
|
+
equal( div.data( key ), undefined, "get: " + key );
|
561
|
+
|
562
|
+
});
|
563
|
+
});
|
564
|
+
|
565
|
+
test( "jQuery.fn.removeData supports removal of hyphenated properties via array (#12786)", function( assert ) {
|
566
|
+
expect( 4 );
|
567
|
+
|
568
|
+
var div, plain, compare;
|
569
|
+
|
570
|
+
div = jQuery("<div>").appendTo("#qunit-fixture");
|
571
|
+
plain = jQuery({});
|
572
|
+
|
573
|
+
// When data is batch assigned (via plain object), the properties
|
574
|
+
// are not camel cased as they are with (property, value) calls
|
575
|
+
compare = {
|
576
|
+
// From batch assignment .data({ "a-a": 1 })
|
577
|
+
"a-a": 1,
|
578
|
+
// From property, value assignment .data( "b-b", 1 )
|
579
|
+
"bB": 1
|
580
|
+
};
|
581
|
+
|
582
|
+
// Mixed assignment
|
583
|
+
div.data({ "a-a": 1 }).data( "b-b", 1 );
|
584
|
+
plain.data({ "a-a": 1 }).data( "b-b", 1 );
|
585
|
+
|
586
|
+
deepEqual( div.data(), compare, "Data appears as expected. (div)" );
|
587
|
+
deepEqual( plain.data(), compare, "Data appears as expected. (plain)" );
|
588
|
+
|
589
|
+
div.removeData([ "a-a", "b-b" ]);
|
590
|
+
plain.removeData([ "a-a", "b-b" ]);
|
591
|
+
|
592
|
+
// NOTE: Timo's proposal for "propEqual" (or similar) would be nice here
|
593
|
+
deepEqual( div.data(), {}, "Data is empty. (div)" );
|
594
|
+
deepEqual( plain.data(), {}, "Data is empty. (plain)" );
|
595
|
+
});
|
596
|
+
|
597
|
+
// Test originally by Moschel
|
598
|
+
test("Triggering the removeData should not throw exceptions. (#10080)", function() {
|
599
|
+
expect(1);
|
600
|
+
stop();
|
601
|
+
var frame = jQuery("#loadediframe");
|
602
|
+
jQuery(frame[0].contentWindow).bind("unload", function() {
|
603
|
+
ok(true, "called unload");
|
604
|
+
start();
|
605
|
+
});
|
606
|
+
// change the url to trigger unload
|
607
|
+
frame.attr("src", "data/iframe.html?param=true");
|
608
|
+
});
|
609
|
+
|
610
|
+
test( "Only check element attributes once when calling .data() - #8909", function() {
|
611
|
+
expect( 2 );
|
612
|
+
var testing = {
|
613
|
+
"test": "testing",
|
614
|
+
"test2": "testing"
|
615
|
+
},
|
616
|
+
element = jQuery( "<div data-test='testing'>" ),
|
617
|
+
node = element[ 0 ];
|
618
|
+
|
619
|
+
// set an attribute using attr to ensure it
|
620
|
+
node.setAttribute( "data-test2", "testing" );
|
621
|
+
deepEqual( element.data(), testing, "Sanity Check" );
|
622
|
+
|
623
|
+
node.setAttribute( "data-test3", "testing" );
|
624
|
+
deepEqual( element.data(), testing, "The data didn't change even though the data-* attrs did" );
|
625
|
+
|
626
|
+
// clean up data cache
|
627
|
+
element.remove();
|
628
|
+
});
|
629
|
+
|
630
|
+
test( "JSON data- attributes can have newlines", function() {
|
631
|
+
expect(1);
|
632
|
+
|
633
|
+
var x = jQuery("<div data-some='{\n\"foo\":\n\t\"bar\"\n}'></div>");
|
634
|
+
equal( x.data("some").foo, "bar", "got a JSON data- attribute with spaces" );
|
635
|
+
x.remove();
|
636
|
+
});
|