cmstyle 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. data/lib/app/assets/images/novartis-micro.png +0 -0
  2. data/lib/app/assets/images/novartis-small.png +0 -0
  3. data/lib/app/assets/javascripts/application.js +16 -0
  4. data/lib/app/assets/stylesheets/application.css +96 -0
  5. data/lib/app/views/{cmstyle → layouts}/_footer.slim +0 -0
  6. data/lib/app/views/layouts/_header.slim +34 -0
  7. data/lib/app/views/layouts/_modals.slim +66 -0
  8. data/lib/app/views/layouts/application.slim +35 -0
  9. data/lib/assets/images/8020select.png +0 -0
  10. data/lib/assets/images/adoptahydrant.png +0 -0
  11. data/lib/assets/images/apple-touch-icon-114-precomposed.png +0 -0
  12. data/lib/assets/images/apple-touch-icon-144-precomposed.png +0 -0
  13. data/lib/assets/images/apple-touch-icon-57-precomposed.png +0 -0
  14. data/lib/assets/images/apple-touch-icon-72-precomposed.png +0 -0
  15. data/lib/assets/images/bootstrap-example-carousel.png +0 -0
  16. data/lib/assets/images/bootstrap-example-fluid.jpg +0 -0
  17. data/lib/assets/images/bootstrap-example-hero.jpg +0 -0
  18. data/lib/assets/images/bootstrap-example-marketing-narrow.png +0 -0
  19. data/lib/assets/images/bootstrap-example-signin.png +0 -0
  20. data/lib/assets/images/bootstrap-example-starter.jpg +0 -0
  21. data/lib/assets/images/bootstrap-example-sticky-footer.png +0 -0
  22. data/lib/assets/images/bootstrap-mdo-sfmoma-01.jpg +0 -0
  23. data/lib/assets/images/bootstrap-mdo-sfmoma-02.jpg +0 -0
  24. data/lib/assets/images/bootstrap-mdo-sfmoma-03.jpg +0 -0
  25. data/lib/assets/images/breakingnews.png +0 -0
  26. data/lib/assets/images/browser-icon-chrome.png +0 -0
  27. data/lib/assets/images/browser-icon-firefox.png +0 -0
  28. data/lib/assets/images/browser-icon-safari.png +0 -0
  29. data/lib/assets/images/bs-docs-bootstrap-features.png +0 -0
  30. data/lib/assets/images/bs-docs-masthead-pattern.png +0 -0
  31. data/lib/assets/images/bs-docs-responsive-illustrations.png +0 -0
  32. data/lib/assets/images/bs-docs-twitter-github.png +0 -0
  33. data/lib/assets/images/fleetio.png +0 -0
  34. data/lib/assets/images/gathercontent.png +0 -0
  35. data/lib/assets/images/glyphicons-halflings-white.png +0 -0
  36. data/lib/assets/images/glyphicons-halflings.png +0 -0
  37. data/lib/assets/images/grid-baseline-20px.png +0 -0
  38. data/lib/assets/images/jshint.png +0 -0
  39. data/lib/assets/images/kippt.png +0 -0
  40. data/lib/assets/images/less-logo-large.png +0 -0
  41. data/lib/assets/images/logo.png +0 -0
  42. data/lib/assets/images/noise.png +0 -0
  43. data/lib/assets/images/responsive-illustrations.png +0 -0
  44. data/lib/assets/images/slide-01.jpg +0 -0
  45. data/lib/assets/images/slide-02.jpg +0 -0
  46. data/lib/assets/images/slide-03.jpg +0 -0
  47. data/lib/assets/images/small-hogan-icon.png +0 -0
  48. data/lib/assets/images/soundready.png +0 -0
  49. data/lib/assets/images/stripes.png +0 -0
  50. data/lib/assets/javascripts/application.js +154 -0
  51. data/lib/assets/javascripts/bootstrap-affix.js +19 -0
  52. data/lib/assets/javascripts/bootstrap-alert.js +56 -0
  53. data/lib/assets/javascripts/bootstrap-button.js +96 -0
  54. data/lib/assets/javascripts/bootstrap-carousel.js +63 -0
  55. data/lib/assets/javascripts/bootstrap-collapse.js +88 -0
  56. data/lib/assets/javascripts/bootstrap-dropdown.js +145 -0
  57. data/lib/assets/javascripts/bootstrap-modal.js +114 -0
  58. data/lib/assets/javascripts/bootstrap-phantom.js +21 -0
  59. data/lib/assets/javascripts/bootstrap-popover.js +107 -0
  60. data/lib/assets/javascripts/bootstrap-scrollspy.js +31 -0
  61. data/lib/assets/javascripts/bootstrap-tab.js +80 -0
  62. data/lib/assets/javascripts/bootstrap-tooltip.js +153 -0
  63. data/lib/assets/javascripts/bootstrap-transition.js +13 -0
  64. data/lib/assets/javascripts/bootstrap-typeahead.js +199 -0
  65. data/lib/assets/javascripts/compiler.js +348 -0
  66. data/lib/assets/javascripts/hogan-1.0.5.amd.js +576 -0
  67. data/lib/assets/javascripts/hogan-1.0.5.common.js +576 -0
  68. data/lib/assets/javascripts/hogan-1.0.5.js +572 -0
  69. data/lib/assets/javascripts/hogan-1.0.5.mustache.js +619 -0
  70. data/lib/assets/javascripts/hogan.js +545 -0
  71. data/lib/assets/javascripts/index.js +848 -0
  72. data/lib/assets/javascripts/jquery.js +2 -0
  73. data/lib/assets/javascripts/mustache.js +90 -0
  74. data/lib/assets/javascripts/phantom.js +63 -0
  75. data/lib/assets/javascripts/prettify.js +0 -0
  76. data/lib/assets/javascripts/qunit.js +1510 -0
  77. data/lib/assets/javascripts/release.js +74 -0
  78. data/lib/assets/javascripts/server.js +14 -0
  79. data/lib/assets/javascripts/spec.js +77 -0
  80. data/lib/assets/javascripts/template-1.0.5.js +233 -0
  81. data/lib/assets/javascripts/template.js +233 -0
  82. data/lib/assets/javascripts/web_templates.js +32 -0
  83. data/lib/assets/stylesheets/bootstrap.css +2 -2
  84. data/lib/assets/stylesheets/css-tests.css +139 -0
  85. data/lib/assets/stylesheets/docs.css +1015 -0
  86. data/lib/assets/stylesheets/layout.css +206 -0
  87. data/lib/assets/stylesheets/prettify.css +0 -0
  88. data/lib/assets/stylesheets/qunit.css +232 -0
  89. data/lib/assets/stylesheets/skeleton.css +236 -0
  90. data/lib/cmstyle/railtie.rb +7 -0
  91. data/lib/cmstyle/version.rb +1 -1
  92. data/lib/cmstyle.rb +2 -1
  93. data/lib/tasks/cleanup.rake +52 -0
  94. data/lib/tasks/setup.rake +32 -0
  95. metadata +90 -6
  96. data/lib/app/views/cmstyle/_header.slim +0 -40
  97. data/lib/app/views/cmstyle/_modals.slim +0 -62
@@ -0,0 +1,96 @@
1
+ $(function () {
2
+
3
+ module("bootstrap-buttons")
4
+
5
+ test("should be defined on jquery object", function () {
6
+ ok($(document.body).button, 'button method is defined')
7
+ })
8
+
9
+ test("should return element", function () {
10
+ ok($(document.body).button()[0] == document.body, 'document.body returned')
11
+ })
12
+
13
+ test("should return set state to loading", function () {
14
+ var btn = $('<button class="btn" data-loading-text="fat">mdo</button>')
15
+ equals(btn.html(), 'mdo', 'btn text equals mdo')
16
+ btn.button('loading')
17
+ equals(btn.html(), 'fat', 'btn text equals fat')
18
+ stop()
19
+ setTimeout(function () {
20
+ ok(btn.attr('disabled'), 'btn is disabled')
21
+ ok(btn.hasClass('disabled'), 'btn has disabled class')
22
+ start()
23
+ }, 0)
24
+ })
25
+
26
+ test("should return reset state", function () {
27
+ var btn = $('<button class="btn" data-loading-text="fat">mdo</button>')
28
+ equals(btn.html(), 'mdo', 'btn text equals mdo')
29
+ btn.button('loading')
30
+ equals(btn.html(), 'fat', 'btn text equals fat')
31
+ stop()
32
+ setTimeout(function () {
33
+ ok(btn.attr('disabled'), 'btn is disabled')
34
+ ok(btn.hasClass('disabled'), 'btn has disabled class')
35
+ start()
36
+ stop()
37
+ }, 0)
38
+ btn.button('reset')
39
+ equals(btn.html(), 'mdo', 'btn text equals mdo')
40
+ setTimeout(function () {
41
+ ok(!btn.attr('disabled'), 'btn is not disabled')
42
+ ok(!btn.hasClass('disabled'), 'btn does not have disabled class')
43
+ start()
44
+ }, 0)
45
+ })
46
+
47
+ test("should toggle active", function () {
48
+ var btn = $('<button class="btn">mdo</button>')
49
+ ok(!btn.hasClass('active'), 'btn does not have active class')
50
+ btn.button('toggle')
51
+ ok(btn.hasClass('active'), 'btn has class active')
52
+ })
53
+
54
+ test("should toggle active when btn children are clicked", function () {
55
+ var btn = $('<button class="btn" data-toggle="button">mdo</button>')
56
+ , inner = $('<i></i>')
57
+ btn
58
+ .append(inner)
59
+ .appendTo($('#qunit-fixture'))
60
+ ok(!btn.hasClass('active'), 'btn does not have active class')
61
+ inner.click()
62
+ ok(btn.hasClass('active'), 'btn has class active')
63
+ })
64
+
65
+ test("should toggle active when btn children are clicked within btn-group", function () {
66
+ var btngroup = $('<div class="btn-group" data-toggle="buttons-checkbox"></div>')
67
+ , btn = $('<button class="btn">fat</button>')
68
+ , inner = $('<i></i>')
69
+ btngroup
70
+ .append(btn.append(inner))
71
+ .appendTo($('#qunit-fixture'))
72
+ ok(!btn.hasClass('active'), 'btn does not have active class')
73
+ inner.click()
74
+ ok(btn.hasClass('active'), 'btn has class active')
75
+ })
76
+
77
+ test("should check for closest matching toggle", function () {
78
+ var group = $("<div data-toggle='buttons-radio'></div>")
79
+ , btn1 = $("<button class='btn active'></button>")
80
+ , btn2 = $("<button class='btn'></button>")
81
+ , wrap = $("<div></div>")
82
+
83
+ wrap.append(btn1, btn2)
84
+
85
+ group
86
+ .append(wrap)
87
+ .appendTo($('#qunit-fixture'))
88
+
89
+ ok(btn1.hasClass('active'), 'btn1 has active class')
90
+ ok(!btn2.hasClass('active'), 'btn2 does not have active class')
91
+ btn2.click()
92
+ ok(!btn1.hasClass('active'), 'btn1 does not have active class')
93
+ ok(btn2.hasClass('active'), 'btn2 has active class')
94
+ })
95
+
96
+ })
@@ -0,0 +1,63 @@
1
+ $(function () {
2
+
3
+ module("bootstrap-carousel")
4
+
5
+ test("should be defined on jquery object", function () {
6
+ ok($(document.body).carousel, 'carousel method is defined')
7
+ })
8
+
9
+ test("should return element", function () {
10
+ ok($(document.body).carousel()[0] == document.body, 'document.body returned')
11
+ })
12
+
13
+ test("should not fire sliden when slide is prevented", function () {
14
+ $.support.transition = false
15
+ stop()
16
+ $('<div class="carousel"/>')
17
+ .bind('slide', function (e) {
18
+ e.preventDefault();
19
+ ok(true);
20
+ start();
21
+ })
22
+ .bind('slid', function () {
23
+ ok(false);
24
+ })
25
+ .carousel('next')
26
+ })
27
+
28
+ test("should fire slide event with relatedTarget", function () {
29
+ var template = '<div id="myCarousel" class="carousel slide"><div class="carousel-inner"><div class="item active"><img alt=""><div class="carousel-caption"><h4>{{_i}}First Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Second Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div><div class="item"><img alt=""><div class="carousel-caption"><h4>{{_i}}Third Thumbnail label{{/i}}</h4><p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p></div></div></div><a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a><a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a></div>'
30
+ $.support.transition = false
31
+ stop()
32
+ $(template)
33
+ .on('slide', function (e) {
34
+ e.preventDefault();
35
+ ok(e.relatedTarget);
36
+ ok($(e.relatedTarget).hasClass('item'));
37
+ start();
38
+ })
39
+ .carousel('next')
40
+ })
41
+
42
+ test("should set interval from data attribute", 3,function () {
43
+ var template = $('<div id="myCarousel" class="carousel slide"> <div class="carousel-inner"> <div class="item active"> <img alt=""> <div class="carousel-caption"> <h4>{{_i}}First Thumbnail label{{/i}}</h4> <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> </div> </div> <div class="item"> <img alt=""> <div class="carousel-caption"> <h4>{{_i}}Second Thumbnail label{{/i}}</h4> <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> </div> </div> <div class="item"> <img alt=""> <div class="carousel-caption"> <h4>{{_i}}Third Thumbnail label{{/i}}</h4> <p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p> </div> </div> </div> <a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a> <a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a> </div>');
44
+ template.attr("data-interval", 1814);
45
+
46
+ template.appendTo("body");
47
+ $('[data-slide]').first().click();
48
+ ok($('#myCarousel').data('carousel').options.interval == 1814);
49
+ $('#myCarousel').remove();
50
+
51
+ template.appendTo("body").attr("data-modal", "foobar");
52
+ $('[data-slide]').first().click();
53
+ ok($('#myCarousel').data('carousel').options.interval == 1814, "even if there is an data-modal attribute set");
54
+ $('#myCarousel').remove();
55
+
56
+ template.appendTo("body");
57
+ $('[data-slide]').first().click();
58
+ $('#myCarousel').attr('data-interval', 1860);
59
+ $('[data-slide]').first().click();
60
+ ok($('#myCarousel').data('carousel').options.interval == 1814, "attributes should be read only on intitialization");
61
+ $('#myCarousel').remove();
62
+ })
63
+ })
@@ -0,0 +1,88 @@
1
+ $(function () {
2
+
3
+ module("bootstrap-collapse")
4
+
5
+ test("should be defined on jquery object", function () {
6
+ ok($(document.body).collapse, 'collapse method is defined')
7
+ })
8
+
9
+ test("should return element", function () {
10
+ ok($(document.body).collapse()[0] == document.body, 'document.body returned')
11
+ })
12
+
13
+ test("should show a collapsed element", function () {
14
+ var el = $('<div class="collapse"></div>').collapse('show')
15
+ ok(el.hasClass('in'), 'has class in')
16
+ ok(/height/.test(el.attr('style')), 'has height set')
17
+ })
18
+
19
+ test("should hide a collapsed element", function () {
20
+ var el = $('<div class="collapse"></div>').collapse('hide')
21
+ ok(!el.hasClass('in'), 'does not have class in')
22
+ ok(/height/.test(el.attr('style')), 'has height set')
23
+ })
24
+
25
+ test("should not fire shown when show is prevented", function () {
26
+ $.support.transition = false
27
+ stop()
28
+ $('<div class="collapse"/>')
29
+ .bind('show', function (e) {
30
+ e.preventDefault();
31
+ ok(true);
32
+ start();
33
+ })
34
+ .bind('shown', function () {
35
+ ok(false);
36
+ })
37
+ .collapse('show')
38
+ })
39
+
40
+ test("should reset style to auto after finishing opening collapse", function () {
41
+ $.support.transition = false
42
+ stop()
43
+ $('<div class="collapse" style="height: 0px"/>')
44
+ .bind('show', function () {
45
+ ok(this.style.height == '0px')
46
+ })
47
+ .bind('shown', function () {
48
+ ok(this.style.height == 'auto')
49
+ start()
50
+ })
51
+ .collapse('show')
52
+ })
53
+
54
+ test("should add active class to target when collapse shown", function () {
55
+ $.support.transition = false
56
+ stop()
57
+
58
+ var target = $('<a data-toggle="collapse" href="#test1"></a>')
59
+ .appendTo($('#qunit-fixture'))
60
+
61
+ var collapsible = $('<div id="test1"></div>')
62
+ .appendTo($('#qunit-fixture'))
63
+ .on('show', function () {
64
+ ok(!target.hasClass('collapsed'))
65
+ start()
66
+ })
67
+
68
+ target.click()
69
+ })
70
+
71
+ test("should remove active class to target when collapse hidden", function () {
72
+ $.support.transition = false
73
+ stop()
74
+
75
+ var target = $('<a data-toggle="collapse" href="#test1"></a>')
76
+ .appendTo($('#qunit-fixture'))
77
+
78
+ var collapsible = $('<div id="test1" class="in"></div>')
79
+ .appendTo($('#qunit-fixture'))
80
+ .on('hide', function () {
81
+ ok(target.hasClass('collapsed'))
82
+ start()
83
+ })
84
+
85
+ target.click()
86
+ })
87
+
88
+ })
@@ -0,0 +1,145 @@
1
+ $(function () {
2
+
3
+ module("bootstrap-dropdowns")
4
+
5
+ test("should be defined on jquery object", function () {
6
+ ok($(document.body).dropdown, 'dropdown method is defined')
7
+ })
8
+
9
+ test("should return element", function () {
10
+ var el = $("<div />")
11
+ ok(el.dropdown()[0] === el[0], 'same element returned')
12
+ })
13
+
14
+ test("should not open dropdown if target is disabled", function () {
15
+ var dropdownHTML = '<ul class="tabs">'
16
+ + '<li class="dropdown">'
17
+ + '<button disabled href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>'
18
+ + '<ul class="dropdown-menu">'
19
+ + '<li><a href="#">Secondary link</a></li>'
20
+ + '<li><a href="#">Something else here</a></li>'
21
+ + '<li class="divider"></li>'
22
+ + '<li><a href="#">Another link</a></li>'
23
+ + '</ul>'
24
+ + '</li>'
25
+ + '</ul>'
26
+ , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
27
+
28
+ ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
29
+ })
30
+
31
+ test("should not open dropdown if target is disabled", function () {
32
+ var dropdownHTML = '<ul class="tabs">'
33
+ + '<li class="dropdown">'
34
+ + '<button href="#" class="btn dropdown-toggle disabled" data-toggle="dropdown">Dropdown</button>'
35
+ + '<ul class="dropdown-menu">'
36
+ + '<li><a href="#">Secondary link</a></li>'
37
+ + '<li><a href="#">Something else here</a></li>'
38
+ + '<li class="divider"></li>'
39
+ + '<li><a href="#">Another link</a></li>'
40
+ + '</ul>'
41
+ + '</li>'
42
+ + '</ul>'
43
+ , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
44
+
45
+ ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
46
+ })
47
+
48
+ test("should add class open to menu if clicked", function () {
49
+ var dropdownHTML = '<ul class="tabs">'
50
+ + '<li class="dropdown">'
51
+ + '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
52
+ + '<ul class="dropdown-menu">'
53
+ + '<li><a href="#">Secondary link</a></li>'
54
+ + '<li><a href="#">Something else here</a></li>'
55
+ + '<li class="divider"></li>'
56
+ + '<li><a href="#">Another link</a></li>'
57
+ + '</ul>'
58
+ + '</li>'
59
+ + '</ul>'
60
+ , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
61
+
62
+ ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
63
+ })
64
+
65
+ test("should test if element has a # before assuming it's a selector", function () {
66
+ var dropdownHTML = '<ul class="tabs">'
67
+ + '<li class="dropdown">'
68
+ + '<a href="/foo/" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
69
+ + '<ul class="dropdown-menu">'
70
+ + '<li><a href="#">Secondary link</a></li>'
71
+ + '<li><a href="#">Something else here</a></li>'
72
+ + '<li class="divider"></li>'
73
+ + '<li><a href="#">Another link</a></li>'
74
+ + '</ul>'
75
+ + '</li>'
76
+ + '</ul>'
77
+ , dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
78
+
79
+ ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
80
+ })
81
+
82
+
83
+ test("should remove open class if body clicked", function () {
84
+ var dropdownHTML = '<ul class="tabs">'
85
+ + '<li class="dropdown">'
86
+ + '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
87
+ + '<ul class="dropdown-menu">'
88
+ + '<li><a href="#">Secondary link</a></li>'
89
+ + '<li><a href="#">Something else here</a></li>'
90
+ + '<li class="divider"></li>'
91
+ + '<li><a href="#">Another link</a></li>'
92
+ + '</ul>'
93
+ + '</li>'
94
+ + '</ul>'
95
+ , dropdown = $(dropdownHTML)
96
+ .appendTo('#qunit-fixture')
97
+ .find('[data-toggle="dropdown"]')
98
+ .dropdown()
99
+ .click()
100
+ ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
101
+ $('body').click()
102
+ ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class removed')
103
+ dropdown.remove()
104
+ })
105
+
106
+ test("should remove open class if body clicked, with multiple drop downs", function () {
107
+ var dropdownHTML =
108
+ '<ul class="nav">'
109
+ + ' <li><a href="#menu1">Menu 1</a></li>'
110
+ + ' <li class="dropdown" id="testmenu">'
111
+ + ' <a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <b class="caret"></b></a>'
112
+ + ' <ul class="dropdown-menu" role="menu">'
113
+ + ' <li><a href="#sub1">Submenu 1</a></li>'
114
+ + ' </ul>'
115
+ + ' </li>'
116
+ + '</ul>'
117
+ + '<div class="btn-group">'
118
+ + ' <button class="btn">Actions</button>'
119
+ + ' <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>'
120
+ + ' <ul class="dropdown-menu">'
121
+ + ' <li><a href="#">Action 1</a></li>'
122
+ + ' </ul>'
123
+ + '</div>'
124
+ , dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]')
125
+ , first = dropdowns.first()
126
+ , last = dropdowns.last()
127
+
128
+ ok(dropdowns.length == 2, "Should be two dropdowns")
129
+
130
+ first.click()
131
+ ok(first.parents('.open').length == 1, 'open class added on click')
132
+ ok($('#qunit-fixture .open').length == 1, 'only one object is open')
133
+ $('body').click()
134
+ ok($("#qunit-fixture .open").length === 0, 'open class removed')
135
+
136
+ last.click()
137
+ ok(last.parent('.open').length == 1, 'open class added on click')
138
+ ok($('#qunit-fixture .open').length == 1, 'only one object is open')
139
+ $('body').click()
140
+ ok($("#qunit-fixture .open").length === 0, 'open class removed')
141
+
142
+ $("#qunit-fixture").html("")
143
+ })
144
+
145
+ })
@@ -0,0 +1,114 @@
1
+ $(function () {
2
+
3
+ module("bootstrap-modal")
4
+
5
+ test("should be defined on jquery object", function () {
6
+ var div = $("<div id='modal-test'></div>")
7
+ ok(div.modal, 'modal method is defined')
8
+ })
9
+
10
+ test("should return element", function () {
11
+ var div = $("<div id='modal-test'></div>")
12
+ ok(div.modal() == div, 'document.body returned')
13
+ $('#modal-test').remove()
14
+ })
15
+
16
+ test("should expose defaults var for settings", function () {
17
+ ok($.fn.modal.defaults, 'default object exposed')
18
+ })
19
+
20
+ test("should insert into dom when show method is called", function () {
21
+ stop()
22
+ $.support.transition = false
23
+ $("<div id='modal-test'></div>")
24
+ .bind("shown", function () {
25
+ ok($('#modal-test').length, 'modal insterted into dom')
26
+ $(this).remove()
27
+ start()
28
+ })
29
+ .modal("show")
30
+ })
31
+
32
+ test("should fire show event", function () {
33
+ stop()
34
+ $.support.transition = false
35
+ $("<div id='modal-test'></div>")
36
+ .bind("show", function () {
37
+ ok(true, "show was called")
38
+ })
39
+ .bind("shown", function () {
40
+ $(this).remove()
41
+ start()
42
+ })
43
+ .modal("show")
44
+ })
45
+
46
+ test("should not fire shown when default prevented", function () {
47
+ stop()
48
+ $.support.transition = false
49
+ $("<div id='modal-test'></div>")
50
+ .bind("show", function (e) {
51
+ e.preventDefault()
52
+ ok(true, "show was called")
53
+ start()
54
+ })
55
+ .bind("shown", function () {
56
+ ok(false, "shown was called")
57
+ })
58
+ .modal("show")
59
+ })
60
+
61
+ test("should hide modal when hide is called", function () {
62
+ stop()
63
+ $.support.transition = false
64
+
65
+ $("<div id='modal-test'></div>")
66
+ .bind("shown", function () {
67
+ ok($('#modal-test').is(":visible"), 'modal visible')
68
+ ok($('#modal-test').length, 'modal insterted into dom')
69
+ $(this).modal("hide")
70
+ })
71
+ .bind("hidden", function() {
72
+ ok(!$('#modal-test').is(":visible"), 'modal hidden')
73
+ $('#modal-test').remove()
74
+ start()
75
+ })
76
+ .modal("show")
77
+ })
78
+
79
+ test("should toggle when toggle is called", function () {
80
+ stop()
81
+ $.support.transition = false
82
+ var div = $("<div id='modal-test'></div>")
83
+ div
84
+ .bind("shown", function () {
85
+ ok($('#modal-test').is(":visible"), 'modal visible')
86
+ ok($('#modal-test').length, 'modal insterted into dom')
87
+ div.modal("toggle")
88
+ })
89
+ .bind("hidden", function() {
90
+ ok(!$('#modal-test').is(":visible"), 'modal hidden')
91
+ div.remove()
92
+ start()
93
+ })
94
+ .modal("toggle")
95
+ })
96
+
97
+ test("should remove from dom when click [data-dismiss=modal]", function () {
98
+ stop()
99
+ $.support.transition = false
100
+ var div = $("<div id='modal-test'><span class='close' data-dismiss='modal'></span></div>")
101
+ div
102
+ .bind("shown", function () {
103
+ ok($('#modal-test').is(":visible"), 'modal visible')
104
+ ok($('#modal-test').length, 'modal insterted into dom')
105
+ div.find('.close').click()
106
+ })
107
+ .bind("hidden", function() {
108
+ ok(!$('#modal-test').is(":visible"), 'modal hidden')
109
+ div.remove()
110
+ start()
111
+ })
112
+ .modal("toggle")
113
+ })
114
+ })
@@ -0,0 +1,21 @@
1
+ // Logging setup for phantom integration
2
+ // adapted from Modernizr
3
+
4
+ QUnit.begin = function () {
5
+ console.log("Starting test suite")
6
+ console.log("================================================\n")
7
+ }
8
+
9
+ QUnit.moduleDone = function (opts) {
10
+ if (opts.failed === 0) {
11
+ console.log("\u2714 All tests passed in '" + opts.name + "' module")
12
+ } else {
13
+ console.log("\u2716 " + opts.failed + " tests failed in '" + opts.name + "' module")
14
+ }
15
+ }
16
+
17
+ QUnit.done = function (opts) {
18
+ console.log("\n================================================")
19
+ console.log("Tests completed in " + opts.runtime + " milliseconds")
20
+ console.log(opts.passed + " tests of " + opts.total + " passed, " + opts.failed + " failed.")
21
+ }
@@ -0,0 +1,107 @@
1
+ $(function () {
2
+
3
+ module("bootstrap-popover")
4
+
5
+ test("should be defined on jquery object", function () {
6
+ var div = $('<div></div>')
7
+ ok(div.popover, 'popover method is defined')
8
+ })
9
+
10
+ test("should return element", function () {
11
+ var div = $('<div></div>')
12
+ ok(div.popover() == div, 'document.body returned')
13
+ })
14
+
15
+ test("should render popover element", function () {
16
+ $.support.transition = false
17
+ var popover = $('<a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>')
18
+ .appendTo('#qunit-fixture')
19
+ .popover('show')
20
+
21
+ ok($('.popover').length, 'popover was inserted')
22
+ popover.popover('hide')
23
+ ok(!$(".popover").length, 'popover removed')
24
+ })
25
+
26
+ test("should store popover instance in popover data object", function () {
27
+ $.support.transition = false
28
+ var popover = $('<a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>')
29
+ .popover()
30
+
31
+ ok(!!popover.data('popover'), 'popover instance exists')
32
+ })
33
+
34
+ test("should get title and content from options", function () {
35
+ $.support.transition = false
36
+ var popover = $('<a href="#">@fat</a>')
37
+ .appendTo('#qunit-fixture')
38
+ .popover({
39
+ title: function () {
40
+ return '@fat'
41
+ }
42
+ , content: function () {
43
+ return 'loves writing tests (╯°□°)╯︵ ┻━┻'
44
+ }
45
+ })
46
+
47
+ popover.popover('show')
48
+
49
+ ok($('.popover').length, 'popover was inserted')
50
+ equals($('.popover .popover-title').text(), '@fat', 'title correctly inserted')
51
+ equals($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted')
52
+
53
+ popover.popover('hide')
54
+ ok(!$('.popover').length, 'popover was removed')
55
+ $('#qunit-fixture').empty()
56
+ })
57
+
58
+ test("should get title and content from attributes", function () {
59
+ $.support.transition = false
60
+ var popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>')
61
+ .appendTo('#qunit-fixture')
62
+ .popover()
63
+ .popover('show')
64
+
65
+ ok($('.popover').length, 'popover was inserted')
66
+ equals($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
67
+ equals($('.popover .popover-content').text(), "loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻", 'content correctly inserted')
68
+
69
+ popover.popover('hide')
70
+ ok(!$('.popover').length, 'popover was removed')
71
+ $('#qunit-fixture').empty()
72
+ })
73
+
74
+ test("should respect custom classes", function() {
75
+ $.support.transition = false
76
+ var popover = $('<a href="#">@fat</a>')
77
+ .appendTo('#qunit-fixture')
78
+ .popover({
79
+ title: 'Test'
80
+ , content: 'Test'
81
+ , template: '<div class="popover foobar"><div class="arrow"></div><div class="inner"><h3 class="title"></h3><div class="content"><p></p></div></div></div>'
82
+ })
83
+
84
+ popover.popover('show')
85
+
86
+ ok($('.popover').length, 'popover was inserted')
87
+ ok($('.popover').hasClass('foobar'), 'custom class is present')
88
+
89
+ popover.popover('hide')
90
+ ok(!$('.popover').length, 'popover was removed')
91
+ $('#qunit-fixture').empty()
92
+ })
93
+
94
+ test("should destroy popover", function () {
95
+ var popover = $('<div/>').popover({trigger: 'hover'}).on('click.foo', function(){})
96
+ ok(popover.data('popover'), 'popover has data')
97
+ ok($._data(popover[0], 'events').mouseover && $._data(popover[0], 'events').mouseout, 'popover has hover event')
98
+ ok($._data(popover[0], 'events').click[0].namespace == 'foo', 'popover has extra click.foo event')
99
+ popover.popover('show')
100
+ popover.popover('destroy')
101
+ ok(!popover.hasClass('in'), 'popover is hidden')
102
+ ok(!popover.data('popover'), 'popover does not have data')
103
+ ok($._data(popover[0],'events').click[0].namespace == 'foo', 'popover still has click.foo')
104
+ ok(!$._data(popover[0], 'events').mouseover && !$._data(popover[0], 'events').mouseout, 'popover does not have any events')
105
+ })
106
+
107
+ })