twigg-app 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (175) hide show
  1. checksums.yaml +7 -0
  2. data/data/quips.yml +45 -0
  3. data/lib/twigg-app/app/quips.rb +13 -0
  4. data/lib/twigg-app/app/routes.rb +43 -0
  5. data/lib/twigg-app/app/server.rb +146 -0
  6. data/lib/twigg-app/app/version.rb +5 -0
  7. data/lib/twigg-app/app.rb +14 -0
  8. data/lib/twigg-app.rb +5 -0
  9. data/public/application.js +106 -0
  10. data/public/favicon.ico +0 -0
  11. data/public/favicon.png +0 -0
  12. data/public/vendor/bootstrap/CNAME +1 -0
  13. data/public/vendor/bootstrap/CONTRIBUTING.md +66 -0
  14. data/public/vendor/bootstrap/Gruntfile.js +195 -0
  15. data/public/vendor/bootstrap/LICENSE +176 -0
  16. data/public/vendor/bootstrap/README.md +139 -0
  17. data/public/vendor/bootstrap/_config.yml +28 -0
  18. data/public/vendor/bootstrap/_includes/ads.html +1 -0
  19. data/public/vendor/bootstrap/_includes/footer.html +33 -0
  20. data/public/vendor/bootstrap/_includes/header.html +43 -0
  21. data/public/vendor/bootstrap/_includes/nav-components.html +135 -0
  22. data/public/vendor/bootstrap/_includes/nav-css.html +77 -0
  23. data/public/vendor/bootstrap/_includes/nav-customize.html +40 -0
  24. data/public/vendor/bootstrap/_includes/nav-getting-started.html +28 -0
  25. data/public/vendor/bootstrap/_includes/nav-javascript.html +88 -0
  26. data/public/vendor/bootstrap/_includes/nav-main.html +32 -0
  27. data/public/vendor/bootstrap/_includes/old-bs-docs.html +8 -0
  28. data/public/vendor/bootstrap/_includes/social-buttons.html +16 -0
  29. data/public/vendor/bootstrap/_layouts/customize.html +52 -0
  30. data/public/vendor/bootstrap/_layouts/default.html +72 -0
  31. data/public/vendor/bootstrap/_layouts/home.html +43 -0
  32. data/public/vendor/bootstrap/assets/css/docs.css +896 -0
  33. data/public/vendor/bootstrap/assets/css/pygments-manni.css +66 -0
  34. data/public/vendor/bootstrap/assets/ico/apple-touch-icon-114-precomposed.png +0 -0
  35. data/public/vendor/bootstrap/assets/ico/apple-touch-icon-144-precomposed.png +0 -0
  36. data/public/vendor/bootstrap/assets/ico/apple-touch-icon-57-precomposed.png +0 -0
  37. data/public/vendor/bootstrap/assets/ico/apple-touch-icon-72-precomposed.png +0 -0
  38. data/public/vendor/bootstrap/assets/ico/favicon.png +0 -0
  39. data/public/vendor/bootstrap/assets/js/application.js +82 -0
  40. data/public/vendor/bootstrap/assets/js/customizer.js +175 -0
  41. data/public/vendor/bootstrap/assets/js/holder.js +419 -0
  42. data/public/vendor/bootstrap/assets/js/html5shiv.js +8 -0
  43. data/public/vendor/bootstrap/assets/js/jquery.bbq.min.js +1287 -0
  44. data/public/vendor/bootstrap/assets/js/jquery.js +5 -0
  45. data/public/vendor/bootstrap/assets/js/jszip.js +1425 -0
  46. data/public/vendor/bootstrap/assets/js/less.js +9 -0
  47. data/public/vendor/bootstrap/assets/js/respond.min.js +6 -0
  48. data/public/vendor/bootstrap/assets/js/uglify.js +14 -0
  49. data/public/vendor/bootstrap/bower.json +11 -0
  50. data/public/vendor/bootstrap/browserstack.json +37 -0
  51. data/public/vendor/bootstrap/components.html +2555 -0
  52. data/public/vendor/bootstrap/composer.json +20 -0
  53. data/public/vendor/bootstrap/css.html +2276 -0
  54. data/public/vendor/bootstrap/customize.html +1480 -0
  55. data/public/vendor/bootstrap/dist/css/bootstrap.css +5579 -0
  56. data/public/vendor/bootstrap/dist/css/bootstrap.min.css +9 -0
  57. data/public/vendor/bootstrap/dist/js/bootstrap.js +1993 -0
  58. data/public/vendor/bootstrap/dist/js/bootstrap.min.js +6 -0
  59. data/public/vendor/bootstrap/getting-started.html +375 -0
  60. data/public/vendor/bootstrap/index.html +16 -0
  61. data/public/vendor/bootstrap/javascript.html +1904 -0
  62. data/public/vendor/bootstrap/js/affix.js +126 -0
  63. data/public/vendor/bootstrap/js/alert.js +98 -0
  64. data/public/vendor/bootstrap/js/button.js +109 -0
  65. data/public/vendor/bootstrap/js/carousel.js +217 -0
  66. data/public/vendor/bootstrap/js/collapse.js +179 -0
  67. data/public/vendor/bootstrap/js/dropdown.js +154 -0
  68. data/public/vendor/bootstrap/js/modal.js +244 -0
  69. data/public/vendor/bootstrap/js/popover.js +117 -0
  70. data/public/vendor/bootstrap/js/scrollspy.js +158 -0
  71. data/public/vendor/bootstrap/js/tab.js +135 -0
  72. data/public/vendor/bootstrap/js/tests/index.html +52 -0
  73. data/public/vendor/bootstrap/js/tests/phantom.js +63 -0
  74. data/public/vendor/bootstrap/js/tests/server.js +14 -0
  75. data/public/vendor/bootstrap/js/tests/unit/affix.js +25 -0
  76. data/public/vendor/bootstrap/js/tests/unit/alert.js +62 -0
  77. data/public/vendor/bootstrap/js/tests/unit/button.js +116 -0
  78. data/public/vendor/bootstrap/js/tests/unit/carousel.js +87 -0
  79. data/public/vendor/bootstrap/js/tests/unit/collapse.js +164 -0
  80. data/public/vendor/bootstrap/js/tests/unit/dropdown.js +219 -0
  81. data/public/vendor/bootstrap/js/tests/unit/modal.js +177 -0
  82. data/public/vendor/bootstrap/js/tests/unit/phantom.js +69 -0
  83. data/public/vendor/bootstrap/js/tests/unit/popover.js +133 -0
  84. data/public/vendor/bootstrap/js/tests/unit/scrollspy.js +37 -0
  85. data/public/vendor/bootstrap/js/tests/unit/tab.js +86 -0
  86. data/public/vendor/bootstrap/js/tests/unit/tooltip.js +437 -0
  87. data/public/vendor/bootstrap/js/tests/unit/transition.js +13 -0
  88. data/public/vendor/bootstrap/js/tests/vendor/jquery.js +5 -0
  89. data/public/vendor/bootstrap/js/tests/vendor/qunit.css +232 -0
  90. data/public/vendor/bootstrap/js/tests/vendor/qunit.js +1510 -0
  91. data/public/vendor/bootstrap/js/tooltip.js +382 -0
  92. data/public/vendor/bootstrap/js/transition.js +56 -0
  93. data/public/vendor/bootstrap/less/alerts.less +71 -0
  94. data/public/vendor/bootstrap/less/badges.less +51 -0
  95. data/public/vendor/bootstrap/less/bootstrap.less +63 -0
  96. data/public/vendor/bootstrap/less/breadcrumbs.less +23 -0
  97. data/public/vendor/bootstrap/less/button-groups.less +244 -0
  98. data/public/vendor/bootstrap/less/buttons.less +159 -0
  99. data/public/vendor/bootstrap/less/carousel.less +204 -0
  100. data/public/vendor/bootstrap/less/close.less +33 -0
  101. data/public/vendor/bootstrap/less/code.less +56 -0
  102. data/public/vendor/bootstrap/less/component-animations.less +29 -0
  103. data/public/vendor/bootstrap/less/dropdowns.less +176 -0
  104. data/public/vendor/bootstrap/less/forms.less +332 -0
  105. data/public/vendor/bootstrap/less/grid.less +340 -0
  106. data/public/vendor/bootstrap/less/input-groups.less +127 -0
  107. data/public/vendor/bootstrap/less/jumbotron.less +29 -0
  108. data/public/vendor/bootstrap/less/labels.less +54 -0
  109. data/public/vendor/bootstrap/less/list-group.less +88 -0
  110. data/public/vendor/bootstrap/less/media.less +56 -0
  111. data/public/vendor/bootstrap/less/mixins.less +693 -0
  112. data/public/vendor/bootstrap/less/modals.less +133 -0
  113. data/public/vendor/bootstrap/less/navbar.less +559 -0
  114. data/public/vendor/bootstrap/less/navs.less +228 -0
  115. data/public/vendor/bootstrap/less/normalize.less +396 -0
  116. data/public/vendor/bootstrap/less/pager.less +55 -0
  117. data/public/vendor/bootstrap/less/pagination.less +72 -0
  118. data/public/vendor/bootstrap/less/panels.less +128 -0
  119. data/public/vendor/bootstrap/less/popovers.less +133 -0
  120. data/public/vendor/bootstrap/less/print.less +100 -0
  121. data/public/vendor/bootstrap/less/progress-bars.less +99 -0
  122. data/public/vendor/bootstrap/less/responsive-utilities.less +149 -0
  123. data/public/vendor/bootstrap/less/scaffolding.less +111 -0
  124. data/public/vendor/bootstrap/less/tables.less +211 -0
  125. data/public/vendor/bootstrap/less/thumbnails.less +42 -0
  126. data/public/vendor/bootstrap/less/tooltip.less +95 -0
  127. data/public/vendor/bootstrap/less/type.less +238 -0
  128. data/public/vendor/bootstrap/less/utilities.less +42 -0
  129. data/public/vendor/bootstrap/less/variables.less +607 -0
  130. data/public/vendor/bootstrap/less/wells.less +29 -0
  131. data/public/vendor/bootstrap/package.json +33 -0
  132. data/public/vendor/bootstrap-glyphicons/CHANGELOG.md +3 -0
  133. data/public/vendor/bootstrap-glyphicons/CNAME +1 -0
  134. data/public/vendor/bootstrap-glyphicons/CONTRIBUTING.md +54 -0
  135. data/public/vendor/bootstrap-glyphicons/LICENSE +19 -0
  136. data/public/vendor/bootstrap-glyphicons/README.md +61 -0
  137. data/public/vendor/bootstrap-glyphicons/_config.yml +12 -0
  138. data/public/vendor/bootstrap-glyphicons/composer.json +9 -0
  139. data/public/vendor/bootstrap-glyphicons/css/bootstrap-glyphicons.css +2 -0
  140. data/public/vendor/bootstrap-glyphicons/css/bootstrap.css +9 -0
  141. data/public/vendor/bootstrap-glyphicons/css/docs.css +160 -0
  142. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.eot +0 -0
  143. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.otf +0 -0
  144. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.svg +175 -0
  145. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.ttf +0 -0
  146. data/public/vendor/bootstrap-glyphicons/fonts/glyphiconshalflings-regular.woff +0 -0
  147. data/public/vendor/bootstrap-glyphicons/index.html +255 -0
  148. data/public/vendor/bootstrap-glyphicons/less/bootstrap-glyphicons.less +201 -0
  149. data/public/vendor/bootstrap-glyphicons/package.json +18 -0
  150. data/public/vendor/d3/LICENSE +26 -0
  151. data/public/vendor/d3/README.md +7 -0
  152. data/public/vendor/d3/bower.json +25 -0
  153. data/public/vendor/d3/d3.js +8810 -0
  154. data/public/vendor/d3/d3.min.js +5 -0
  155. data/public/vendor/jquery/README.md +11 -0
  156. data/public/vendor/jquery/bower.json +11 -0
  157. data/public/vendor/jquery/component.json +15 -0
  158. data/public/vendor/jquery/composer.json +35 -0
  159. data/public/vendor/jquery/jquery-migrate.js +511 -0
  160. data/public/vendor/jquery/jquery-migrate.min.js +3 -0
  161. data/public/vendor/jquery/jquery.js +8829 -0
  162. data/public/vendor/jquery/jquery.min.js +6 -0
  163. data/public/vendor/jquery/jquery.min.map +1 -0
  164. data/public/vendor/jquery/package.json +7 -0
  165. data/public/vendor/replacejs/CHANGELOG.md +3 -0
  166. data/public/vendor/replacejs/MIT-LICENSE.txt +20 -0
  167. data/public/vendor/replacejs/README.md +123 -0
  168. data/public/vendor/replacejs/bower.json +24 -0
  169. data/public/vendor/replacejs/primer.js +17 -0
  170. data/public/vendor/replacejs/primer.min.js +1 -0
  171. data/public/vendor/replacejs/replace.js +182 -0
  172. data/public/vendor/stupidtable.js +158 -0
  173. data/views/dashboard.haml +17 -0
  174. data/views/layout.haml +60 -0
  175. metadata +330 -0
@@ -0,0 +1,69 @@
1
+ /*
2
+ * grunt-contrib-qunit
3
+ * http://gruntjs.com/
4
+ *
5
+ * Copyright (c) 2013 "Cowboy" Ben Alman, contributors
6
+ * Licensed under the MIT license.
7
+ */
8
+
9
+ /*global QUnit:true, alert:true*/
10
+ (function () {
11
+ 'use strict';
12
+
13
+ // Don't re-order tests.
14
+ QUnit.config.reorder = false
15
+ // Run tests serially, not in parallel.
16
+ QUnit.config.autorun = false
17
+
18
+ // Send messages to the parent PhantomJS process via alert! Good times!!
19
+ function sendMessage() {
20
+ var args = [].slice.call(arguments)
21
+ alert(JSON.stringify(args))
22
+ }
23
+
24
+ // These methods connect QUnit to PhantomJS.
25
+ QUnit.log = function(obj) {
26
+ // What is this I don’t even
27
+ if (obj.message === '[object Object], undefined:undefined') { return }
28
+ // Parse some stuff before sending it.
29
+ var actual = QUnit.jsDump.parse(obj.actual)
30
+ var expected = QUnit.jsDump.parse(obj.expected)
31
+ // Send it.
32
+ sendMessage('qunit.log', obj.result, actual, expected, obj.message, obj.source)
33
+ }
34
+
35
+ QUnit.testStart = function(obj) {
36
+ sendMessage('qunit.testStart', obj.name)
37
+ }
38
+
39
+ QUnit.testDone = function(obj) {
40
+ sendMessage('qunit.testDone', obj.name, obj.failed, obj.passed, obj.total)
41
+ }
42
+
43
+ QUnit.moduleStart = function(obj) {
44
+ sendMessage('qunit.moduleStart', obj.name)
45
+ }
46
+
47
+ QUnit.begin = function () {
48
+ sendMessage('qunit.begin')
49
+ console.log("Starting test suite")
50
+ console.log("================================================\n")
51
+ }
52
+
53
+ QUnit.moduleDone = function (opts) {
54
+ if (opts.failed === 0) {
55
+ console.log("\r\u2714 All tests passed in '" + opts.name + "' module")
56
+ } else {
57
+ console.log("\u2716 " + opts.failed + " tests failed in '" + opts.name + "' module")
58
+ }
59
+ sendMessage('qunit.moduleDone', opts.name, opts.failed, opts.passed, opts.total)
60
+ }
61
+
62
+ QUnit.done = function (opts) {
63
+ console.log("\n================================================")
64
+ console.log("Tests completed in " + opts.runtime + " milliseconds")
65
+ console.log(opts.passed + " tests of " + opts.total + " passed, " + opts.failed + " failed.")
66
+ sendMessage('qunit.done', opts.failed, opts.passed, opts.total, opts.runtime)
67
+ }
68
+
69
+ }())
@@ -0,0 +1,133 @@
1
+ $(function () {
2
+
3
+ module("popover")
4
+
5
+ test("should provide no conflict", function () {
6
+ var popover = $.fn.popover.noConflict()
7
+ ok(!$.fn.popover, 'popover was set back to undefined (org value)')
8
+ $.fn.popover = popover
9
+ })
10
+
11
+ test("should be defined on jquery object", function () {
12
+ var div = $('<div></div>')
13
+ ok(div.popover, 'popover method is defined')
14
+ })
15
+
16
+ test("should return element", function () {
17
+ var div = $('<div></div>')
18
+ ok(div.popover() == div, 'document.body returned')
19
+ })
20
+
21
+ test("should render popover element", function () {
22
+ $.support.transition = false
23
+ var popover = $('<a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>')
24
+ .appendTo('#qunit-fixture')
25
+ .popover('show')
26
+
27
+ ok($('.popover').length, 'popover was inserted')
28
+ popover.popover('hide')
29
+ ok(!$(".popover").length, 'popover removed')
30
+ })
31
+
32
+ test("should store popover instance in popover data object", function () {
33
+ $.support.transition = false
34
+ var popover = $('<a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>')
35
+ .popover()
36
+
37
+ ok(!!popover.data('bs.popover'), 'popover instance exists')
38
+ })
39
+
40
+ test("should get title and content from options", function () {
41
+ $.support.transition = false
42
+ var popover = $('<a href="#">@fat</a>')
43
+ .appendTo('#qunit-fixture')
44
+ .popover({
45
+ title: function () {
46
+ return '@fat'
47
+ }
48
+ , content: function () {
49
+ return 'loves writing tests (╯°□°)╯︵ ┻━┻'
50
+ }
51
+ })
52
+
53
+ popover.popover('show')
54
+
55
+ ok($('.popover').length, 'popover was inserted')
56
+ equals($('.popover .popover-title').text(), '@fat', 'title correctly inserted')
57
+ equals($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted')
58
+
59
+ popover.popover('hide')
60
+ ok(!$('.popover').length, 'popover was removed')
61
+ $('#qunit-fixture').empty()
62
+ })
63
+
64
+ test("should get title and content from attributes", function () {
65
+ $.support.transition = false
66
+ var popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>')
67
+ .appendTo('#qunit-fixture')
68
+ .popover()
69
+ .popover('show')
70
+
71
+ ok($('.popover').length, 'popover was inserted')
72
+ equals($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
73
+ equals($('.popover .popover-content').text(), "loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻", 'content correctly inserted')
74
+
75
+ popover.popover('hide')
76
+ ok(!$('.popover').length, 'popover was removed')
77
+ $('#qunit-fixture').empty()
78
+ })
79
+
80
+
81
+ test("should get title and content from attributes #2", function () {
82
+ $.support.transition = false
83
+ var popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>')
84
+ .appendTo('#qunit-fixture')
85
+ .popover({
86
+ title: 'ignored title option',
87
+ content: 'ignored content option'
88
+ })
89
+ .popover('show')
90
+
91
+ ok($('.popover').length, 'popover was inserted')
92
+ equals($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
93
+ equals($('.popover .popover-content').text(), "loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻", 'content correctly inserted')
94
+
95
+ popover.popover('hide')
96
+ ok(!$('.popover').length, 'popover was removed')
97
+ $('#qunit-fixture').empty()
98
+ })
99
+
100
+ test("should respect custom classes", function() {
101
+ $.support.transition = false
102
+ var popover = $('<a href="#">@fat</a>')
103
+ .appendTo('#qunit-fixture')
104
+ .popover({
105
+ title: 'Test'
106
+ , content: 'Test'
107
+ , template: '<div class="popover foobar"><div class="arrow"></div><div class="inner"><h3 class="title"></h3><div class="content"><p></p></div></div></div>'
108
+ })
109
+
110
+ popover.popover('show')
111
+
112
+ ok($('.popover').length, 'popover was inserted')
113
+ ok($('.popover').hasClass('foobar'), 'custom class is present')
114
+
115
+ popover.popover('hide')
116
+ ok(!$('.popover').length, 'popover was removed')
117
+ $('#qunit-fixture').empty()
118
+ })
119
+
120
+ test("should destroy popover", function () {
121
+ var popover = $('<div/>').popover({trigger: 'hover'}).on('click.foo', function(){})
122
+ ok(popover.data('bs.popover'), 'popover has data')
123
+ ok($._data(popover[0], 'events').mouseover && $._data(popover[0], 'events').mouseout, 'popover has hover event')
124
+ ok($._data(popover[0], 'events').click[0].namespace == 'foo', 'popover has extra click.foo event')
125
+ popover.popover('show')
126
+ popover.popover('destroy')
127
+ ok(!popover.hasClass('in'), 'popover is hidden')
128
+ ok(!popover.data('popover'), 'popover does not have data')
129
+ ok($._data(popover[0],'events').click[0].namespace == 'foo', 'popover still has click.foo')
130
+ ok(!$._data(popover[0], 'events').mouseover && !$._data(popover[0], 'events').mouseout, 'popover does not have any events')
131
+ })
132
+
133
+ })
@@ -0,0 +1,37 @@
1
+ $(function () {
2
+
3
+ module("scrollspy")
4
+
5
+ test("should provide no conflict", function () {
6
+ var scrollspy = $.fn.scrollspy.noConflict()
7
+ ok(!$.fn.scrollspy, 'scrollspy was set back to undefined (org value)')
8
+ $.fn.scrollspy = scrollspy
9
+ })
10
+
11
+ test("should be defined on jquery object", function () {
12
+ ok($(document.body).scrollspy, 'scrollspy method is defined')
13
+ })
14
+
15
+ test("should return element", function () {
16
+ ok($(document.body).scrollspy()[0] == document.body, 'document.body returned')
17
+ })
18
+
19
+ test("should switch active class on scroll", function () {
20
+ var sectionHTML = '<div id="masthead"></div>'
21
+ , $section = $(sectionHTML).append('#qunit-fixture')
22
+ , topbarHTML ='<div class="topbar">'
23
+ + '<div class="topbar-inner">'
24
+ + '<div class="container">'
25
+ + '<h3><a href="#">Bootstrap</a></h3>'
26
+ + '<ul class="nav">'
27
+ + '<li><a href="#masthead">Overview</a></li>'
28
+ + '</ul>'
29
+ + '</div>'
30
+ + '</div>'
31
+ + '</div>'
32
+ , $topbar = $(topbarHTML).scrollspy()
33
+
34
+ ok($topbar.find('.active', true))
35
+ })
36
+
37
+ })
@@ -0,0 +1,86 @@
1
+ $(function () {
2
+
3
+ module("tabs")
4
+
5
+ test("should provide no conflict", function () {
6
+ var tab = $.fn.tab.noConflict()
7
+ ok(!$.fn.tab, 'tab was set back to undefined (org value)')
8
+ $.fn.tab = tab
9
+ })
10
+
11
+ test("should be defined on jquery object", function () {
12
+ ok($(document.body).tab, 'tabs method is defined')
13
+ })
14
+
15
+ test("should return element", function () {
16
+ ok($(document.body).tab()[0] == document.body, 'document.body returned')
17
+ })
18
+
19
+ test("should activate element by tab id", function () {
20
+ var tabsHTML =
21
+ '<ul class="tabs">'
22
+ + '<li><a href="#home">Home</a></li>'
23
+ + '<li><a href="#profile">Profile</a></li>'
24
+ + '</ul>'
25
+
26
+ $('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-fixture")
27
+
28
+ $(tabsHTML).find('li:last a').tab('show')
29
+ equals($("#qunit-fixture").find('.active').attr('id'), "profile")
30
+
31
+ $(tabsHTML).find('li:first a').tab('show')
32
+ equals($("#qunit-fixture").find('.active').attr('id'), "home")
33
+ })
34
+
35
+ test("should activate element by tab id", function () {
36
+ var pillsHTML =
37
+ '<ul class="pills">'
38
+ + '<li><a href="#home">Home</a></li>'
39
+ + '<li><a href="#profile">Profile</a></li>'
40
+ + '</ul>'
41
+
42
+ $('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo("#qunit-fixture")
43
+
44
+ $(pillsHTML).find('li:last a').tab('show')
45
+ equals($("#qunit-fixture").find('.active').attr('id'), "profile")
46
+
47
+ $(pillsHTML).find('li:first a').tab('show')
48
+ equals($("#qunit-fixture").find('.active').attr('id'), "home")
49
+ })
50
+
51
+
52
+ test("should not fire closed when close is prevented", function () {
53
+ $.support.transition = false
54
+ stop();
55
+ $('<div class="tab"/>')
56
+ .on('show.bs.tab', function (e) {
57
+ e.preventDefault();
58
+ ok(true);
59
+ start();
60
+ })
61
+ .on('shown.bs.tab', function () {
62
+ ok(false);
63
+ })
64
+ .tab('show')
65
+ })
66
+
67
+ test("show and shown events should reference correct relatedTarget", function () {
68
+ var dropHTML =
69
+ '<ul class="drop">'
70
+ + '<li class="dropdown"><a data-toggle="dropdown" href="#">1</a>'
71
+ + '<ul class="dropdown-menu">'
72
+ + '<li><a href="#1-1" data-toggle="tab">1-1</a></li>'
73
+ + '<li><a href="#1-2" data-toggle="tab">1-2</a></li>'
74
+ + '</ul>'
75
+ + '</li>'
76
+ + '</ul>'
77
+
78
+ $(dropHTML).find('ul>li:first a').tab('show').end()
79
+ .find('ul>li:last a').on('show', function(event){
80
+ equals(event.relatedTarget.hash, "#1-1")
81
+ }).on('shown', function(event){
82
+ equals(event.relatedTarget.hash, "#1-1")
83
+ }).tab('show')
84
+ })
85
+
86
+ })