shoes-core 4.0.0.pre7 → 4.0.0.pre8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/lib/shoes/arc.rb +10 -13
  3. data/lib/shoes/arrow.rb +1 -11
  4. data/lib/shoes/background.rb +0 -3
  5. data/lib/shoes/border.rb +0 -3
  6. data/lib/shoes/button.rb +4 -1
  7. data/lib/shoes/check_button.rb +0 -1
  8. data/lib/shoes/common/art_element.rb +21 -0
  9. data/lib/shoes/common/background_element.rb +10 -0
  10. data/lib/shoes/common/clickable.rb +2 -0
  11. data/lib/shoes/common/rotate.rb +1 -2
  12. data/lib/shoes/common/ui_element.rb +10 -1
  13. data/lib/shoes/core/version.rb +1 -1
  14. data/lib/shoes/download.rb +47 -29
  15. data/lib/shoes/dsl.rb +99 -40
  16. data/lib/shoes/font.rb +0 -4
  17. data/lib/shoes/http_request.rb +91 -0
  18. data/lib/shoes/image.rb +0 -1
  19. data/lib/shoes/input_box.rb +0 -1
  20. data/lib/shoes/internal_app.rb +1 -1
  21. data/lib/shoes/line.rb +25 -11
  22. data/lib/shoes/link.rb +10 -4
  23. data/lib/shoes/list_box.rb +0 -1
  24. data/lib/shoes/mock/app.rb +6 -0
  25. data/lib/shoes/mock/clickable.rb +3 -0
  26. data/lib/shoes/mock/font.rb +0 -4
  27. data/lib/shoes/oval.rb +3 -13
  28. data/lib/shoes/progress.rb +0 -1
  29. data/lib/shoes/rect.rb +1 -11
  30. data/lib/shoes/shape.rb +16 -8
  31. data/lib/shoes/slot.rb +2 -1
  32. data/lib/shoes/star.rb +8 -11
  33. data/lib/shoes/text_block.rb +0 -1
  34. data/lib/shoes/ui/picker.rb +29 -8
  35. data/lib/shoes/version.rb +1 -1
  36. metadata +8 -231
  37. data/Guardfile +0 -5
  38. data/Rakefile +0 -1
  39. data/bin/shoes-stub +0 -62
  40. data/ext/install/Rakefile +0 -39
  41. data/ext/install/shoes.bat +0 -17
  42. data/lib/rubygems_plugin.rb +0 -24
  43. data/shoes-core.gemspec +0 -22
  44. data/spec/shoes/animation_spec.rb +0 -71
  45. data/spec/shoes/app_spec.rb +0 -454
  46. data/spec/shoes/arc_spec.rb +0 -52
  47. data/spec/shoes/arrow_spec.rb +0 -28
  48. data/spec/shoes/background_spec.rb +0 -47
  49. data/spec/shoes/border_spec.rb +0 -46
  50. data/spec/shoes/builtin_methods_spec.rb +0 -122
  51. data/spec/shoes/button_spec.rb +0 -55
  52. data/spec/shoes/check_spec.rb +0 -36
  53. data/spec/shoes/color_spec.rb +0 -429
  54. data/spec/shoes/common/attachable_spec.rb +0 -32
  55. data/spec/shoes/common/inspect_spec.rb +0 -26
  56. data/spec/shoes/common/remove_spec.rb +0 -37
  57. data/spec/shoes/common/rotate_spec.rb +0 -13
  58. data/spec/shoes/common/style_normalizer_spec.rb +0 -28
  59. data/spec/shoes/common/style_spec.rb +0 -197
  60. data/spec/shoes/common/translate_spec.rb +0 -27
  61. data/spec/shoes/configuration_spec.rb +0 -51
  62. data/spec/shoes/constants_spec.rb +0 -39
  63. data/spec/shoes/dialog_spec.rb +0 -169
  64. data/spec/shoes/dimension_spec.rb +0 -451
  65. data/spec/shoes/dimensions_spec.rb +0 -868
  66. data/spec/shoes/download_spec.rb +0 -198
  67. data/spec/shoes/flow_spec.rb +0 -132
  68. data/spec/shoes/font_spec.rb +0 -36
  69. data/spec/shoes/framework_learning_spec.rb +0 -31
  70. data/spec/shoes/gradient_spec.rb +0 -31
  71. data/spec/shoes/helpers/fake_absolute_element.rb +0 -31
  72. data/spec/shoes/helpers/fake_element.rb +0 -25
  73. data/spec/shoes/helpers/inspect_helpers.rb +0 -5
  74. data/spec/shoes/helpers/sample17_helper.rb +0 -65
  75. data/spec/shoes/image_spec.rb +0 -69
  76. data/spec/shoes/images/shoe.jpg +0 -0
  77. data/spec/shoes/input_box_spec.rb +0 -80
  78. data/spec/shoes/integration_spec.rb +0 -19
  79. data/spec/shoes/internal_app_spec.rb +0 -148
  80. data/spec/shoes/keypress_spec.rb +0 -11
  81. data/spec/shoes/keyrelease_spec.rb +0 -11
  82. data/spec/shoes/line_spec.rb +0 -120
  83. data/spec/shoes/link_spec.rb +0 -149
  84. data/spec/shoes/list_box_spec.rb +0 -87
  85. data/spec/shoes/logger/ruby_spec.rb +0 -8
  86. data/spec/shoes/logger_spec.rb +0 -45
  87. data/spec/shoes/oval_spec.rb +0 -25
  88. data/spec/shoes/packager_spec.rb +0 -25
  89. data/spec/shoes/point_spec.rb +0 -99
  90. data/spec/shoes/progress_spec.rb +0 -54
  91. data/spec/shoes/radio_spec.rb +0 -32
  92. data/spec/shoes/rect_spec.rb +0 -40
  93. data/spec/shoes/renamed_delegate_spec.rb +0 -69
  94. data/spec/shoes/shape_spec.rb +0 -119
  95. data/spec/shoes/shared_examples/button.rb +0 -6
  96. data/spec/shoes/shared_examples/changeable.rb +0 -26
  97. data/spec/shoes/shared_examples/clickable.rb +0 -5
  98. data/spec/shoes/shared_examples/common_methods.rb +0 -35
  99. data/spec/shoes/shared_examples/dimensions.rb +0 -32
  100. data/spec/shoes/shared_examples/dsl.rb +0 -44
  101. data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
  102. data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
  103. data/spec/shoes/shared_examples/dsl/background.rb +0 -26
  104. data/spec/shoes/shared_examples/dsl/border.rb +0 -10
  105. data/spec/shoes/shared_examples/dsl/button.rb +0 -5
  106. data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
  107. data/spec/shoes/shared_examples/dsl/check.rb +0 -11
  108. data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
  109. data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
  110. data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
  111. data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
  112. data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
  113. data/spec/shoes/shared_examples/dsl/gradient.rb +0 -62
  114. data/spec/shoes/shared_examples/dsl/image.rb +0 -21
  115. data/spec/shoes/shared_examples/dsl/line.rb +0 -9
  116. data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
  117. data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
  118. data/spec/shoes/shared_examples/dsl/oval.rb +0 -88
  119. data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
  120. data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
  121. data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
  122. data/spec/shoes/shared_examples/dsl/rgb.rb +0 -28
  123. data/spec/shoes/shared_examples/dsl/shape.rb +0 -61
  124. data/spec/shoes/shared_examples/dsl/star.rb +0 -110
  125. data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
  126. data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
  127. data/spec/shoes/shared_examples/dsl/style.rb +0 -32
  128. data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -84
  129. data/spec/shoes/shared_examples/dsl/video.rb +0 -5
  130. data/spec/shoes/shared_examples/dsl_app_context.rb +0 -11
  131. data/spec/shoes/shared_examples/hover.rb +0 -78
  132. data/spec/shoes/shared_examples/parent.rb +0 -6
  133. data/spec/shoes/shared_examples/scroll.rb +0 -41
  134. data/spec/shoes/shared_examples/shared_element_method.rb +0 -60
  135. data/spec/shoes/shared_examples/slot.rb +0 -441
  136. data/spec/shoes/shared_examples/state.rb +0 -26
  137. data/spec/shoes/shared_examples/style.rb +0 -77
  138. data/spec/shoes/slot_spec.rb +0 -176
  139. data/spec/shoes/sound_spec.rb +0 -16
  140. data/spec/shoes/span_spec.rb +0 -112
  141. data/spec/shoes/spec_helper.rb +0 -24
  142. data/spec/shoes/stack_spec.rb +0 -79
  143. data/spec/shoes/star_spec.rb +0 -49
  144. data/spec/shoes/text_block_dimensions_spec.rb +0 -77
  145. data/spec/shoes/text_block_spec.rb +0 -314
  146. data/spec/shoes/text_spec.rb +0 -22
  147. data/spec/shoes/ui/picker_spec.rb +0 -69
  148. data/spec/shoes/url_spec.rb +0 -67
  149. data/spec/shoes/widget_spec.rb +0 -78
  150. data/spec/shoes_spec.rb +0 -41
  151. data/spec/spec_helper.rb +0 -27
@@ -1,26 +0,0 @@
1
- shared_examples_for "object with state" do
2
- let(:input_opts) { {state: "disabled"} }
3
-
4
- it "should initialize in the right state" do
5
- expect_any_instance_of(Shoes.configuration.backend_class(described_class)).to receive(:enabled).with(false)
6
- expect(subject.state).to eq("disabled")
7
- end
8
-
9
- it "should enable" do
10
- expect(subject.gui).to receive(:enabled).with(true)
11
- subject.state = nil
12
- expect(subject.state).to eq(nil)
13
- end
14
-
15
- it "should disable" do
16
- expect(subject.gui).to receive(:enabled).with(false)
17
- subject.state = "disabled"
18
- expect(subject.state).to eq("disabled")
19
- end
20
-
21
- it "does not disable when a string other than disabled is passed" do
22
- expect(subject.gui).to receive(:enabled).with(true)
23
- subject.state = "enabled"
24
- expect(subject.state).to eq("enabled")
25
- end
26
- end
@@ -1,77 +0,0 @@
1
- shared_examples_for "object with style" do
2
- def uses_app_default?(key)
3
- if defined? self.class::STYLES
4
- subject.style[key] && !subject.class::STYLES[key]
5
- else
6
- subject.style[key]
7
- end
8
- end
9
-
10
- describe 'using app-level styles' do
11
- it 'initially uses app defaults' do
12
- app.style.each do |key, value|
13
- expect(subject.style[key]).to eq(value) if uses_app_default? key
14
- end
15
- end
16
-
17
- it 'overwrites app defaults' do
18
- subject.style(fill: '#fff')
19
- expect(subject.style[:fill]).not_to eq(app.style[:fill])
20
- end
21
- end
22
-
23
- describe 'using element-level styles' do
24
- let(:arg_styles) { {jellybean: 'blueberry'} }
25
-
26
- it 'uses element defaults' do
27
- user_facing_app.style(subject.class, jellybean: 'pumpkin')
28
- expect(subject_without_style.style[:jellybean]).to eq('pumpkin')
29
- end
30
-
31
- it 'overwrites element defaults' do
32
- user_facing_app.style(subject.class, jellybean: 'pumpkin')
33
- expect(subject_with_style.style[:jellybean]).to eq('blueberry')
34
- end
35
- end
36
-
37
- describe 'using the style method' do
38
- it "merges new styles" do
39
- old_style = subject.style
40
- subject.style(left: 100, top: 50)
41
- expect(subject.style).to eq(old_style.merge(left: 100, top: 50))
42
- end
43
-
44
- it 'calls update_style when the style is changed' do
45
- allow(subject).to receive(:update_style)
46
- subject.style left: 50
47
- expect(subject).to have_received(:update_style)
48
- end
49
-
50
- it 'does not call update_style when style is called without args' do
51
- allow(subject).to receive(:update_style)
52
- subject.style
53
- expect(subject).not_to have_received(:update_style)
54
- end
55
-
56
- it 'does not call update_style when style is unchanged' do
57
- allow(subject).to receive(:update_style)
58
- old_left = subject.style[:left]
59
- subject.style(left: old_left)
60
- expect(subject).not_to have_received(:update_style)
61
- end
62
- end
63
-
64
- describe 'using setters and getters' do
65
- it 'has a style setter for all styles' do
66
- subject.supported_styles.each do |style|
67
- expect(subject).to respond_to("#{style}=".to_sym)
68
- end
69
- end
70
-
71
- it 'has a style getter for all styles' do
72
- subject.supported_styles.each do |style|
73
- expect(subject).to respond_to(style.to_s.to_sym)
74
- end
75
- end
76
- end
77
- end
@@ -1,176 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoes::Slot do
4
- include_context "dsl app"
5
- let(:parent) { Shoes::Stack.new(app, app, {}) }
6
-
7
- let(:left) { 44 }
8
- let(:top) { 66 }
9
- let(:width) { 111 }
10
- let(:height) { 333 }
11
- let(:input_opts) { {left: left, top: top, width: width, height: height} }
12
-
13
- subject(:slot) { Shoes::Slot.new(app, parent, input_opts) }
14
-
15
- before do
16
- # In production this is filled in by Stack and Flow, but we don't want to
17
- # trip it in our tests against Slot directly.
18
- allow(slot).to receive(:position_element) do |element, current_position|
19
- slot.send(:move_to_next_line, element, current_position)
20
- end
21
- end
22
-
23
- it_behaves_like "object with dimensions"
24
- it_behaves_like "object with hover"
25
-
26
- it_behaves_like "object with style" do
27
- let(:subject_without_style) { Shoes::Slot.new(app, parent) }
28
- let(:subject_with_style) { Shoes::Slot.new(app, parent, arg_styles) }
29
- end
30
-
31
- describe "relative dimensions from parent" do
32
- subject { Shoes::Slot.new(app, parent, relative_opts) }
33
- it_behaves_like "object with relative dimensions"
34
- end
35
-
36
- describe "negative dimensions" do
37
- subject { Shoes::Slot.new(app, parent, negative_opts) }
38
- it_behaves_like "object with negative dimensions"
39
- end
40
-
41
- describe '#clear' do
42
- def add_text_block
43
- Shoes::Para.new app, slot, ['text']
44
- end
45
-
46
- before :each do
47
- 10.times do
48
- add_text_block
49
- end
50
- end
51
-
52
- it 'sends remove to all children' do
53
- subject.contents.each do |element|
54
- expect(element).to receive(:remove).and_call_original
55
- end
56
- subject.clear
57
- end
58
-
59
- it 'removes everything' do
60
- subject.clear
61
- expect(subject.contents).to be_empty
62
- end
63
-
64
- describe 'with a block' do
65
- before :each do
66
- subject.clear { add_text_block }
67
- end
68
-
69
- it 'has one element afterwards' do
70
- expect(subject.contents.size).to eq 1
71
- end
72
- end
73
- end
74
-
75
- describe '#remove' do
76
- before :each do
77
- Shoes::Para.new app, slot, ['text']
78
- end
79
-
80
- it 'removes the child element' do
81
- subject.remove
82
- expect(subject.contents).to be_empty
83
- end
84
-
85
- it 'notifies the gui' do
86
- expect(subject.gui).to receive(:remove)
87
- subject.remove
88
- end
89
- end
90
-
91
- describe '#remove_child' do
92
- let(:element) { Shoes::FakeElement.new subject }
93
-
94
- before :each do
95
- subject.add_child element
96
- end
97
-
98
- it 'removes the element' do
99
- subject.remove_child element
100
- expect(subject.contents).to be_empty
101
- end
102
-
103
- describe '2 elements' do
104
- let(:element2) { Shoes::FakeElement.new subject }
105
-
106
- before :each do
107
- subject.add_child element2
108
- subject.remove_child element
109
- end
110
-
111
- it 'has one element remaining' do
112
- expect(subject.contents.size).to eq 1
113
- end
114
-
115
- it 'has the second element remaining' do
116
- expect(subject.contents).to include element2
117
- end
118
- end
119
- end
120
-
121
- describe "create_bound_block" do
122
- let(:callable) { double("block", call: nil) }
123
- let(:block) { proc { callable.call(self) } }
124
-
125
- it "calls within the slot's context" do
126
- expect(subject).to receive(:eval_block).with(block)
127
-
128
- bound = subject.create_bound_block(block)
129
- bound.call
130
- end
131
- end
132
-
133
- describe "compute_content_height" do
134
- subject(:slot) { Shoes::Slot.new(app, parent) }
135
-
136
- it "finds 0 without children" do
137
- expect(compute_content_height).to eq(0)
138
- end
139
-
140
- describe "with children" do
141
- let(:child) do
142
- child_element = Shoes::FakeElement.new(subject, height: 100)
143
- child_element.absolute_top = 0
144
- child_element.gui = double('child gui').as_null_object
145
- child_element
146
- end
147
-
148
- before do
149
- subject.add_child(child)
150
- end
151
-
152
- it "finds height from child" do
153
- expect(compute_content_height).to eq(100)
154
- end
155
-
156
- it "ignores unpositioned children" do
157
- allow(child).to receive(:absolute_bottom) { nil }
158
- expect(compute_content_height).to eq(0)
159
- end
160
-
161
- it "ignores hidden child" do
162
- child.hide
163
- expect(compute_content_height).to eq(0)
164
- end
165
-
166
- it "ignores child that doesn't take up space" do
167
- allow(child).to receive(:takes_up_space?) { false }
168
- expect(compute_content_height).to eq(0)
169
- end
170
- end
171
-
172
- def compute_content_height
173
- subject.send(:compute_content_height)
174
- end
175
- end
176
- end
@@ -1,16 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoes::Sound do
4
- let(:app_gui) { double("app gui") }
5
- let(:parent) { double("parent", gui: app_gui) }
6
- let(:filepath) { "../../samples/sounds/61847__simon-rue__boink-v3.wav" }
7
- subject { Shoes::Sound.new(parent, filepath) }
8
-
9
- its(:filepath) { should eq(filepath) }
10
- its(:parent) { should be(parent) }
11
-
12
- it "delegates play to gui" do
13
- expect(subject.gui).to receive(:play)
14
- subject.play
15
- end
16
- end
@@ -1,112 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Shoes::Span do
4
- let(:app) { Shoes::App.new }
5
- let(:style) { {} }
6
- let(:text) { ['test'] }
7
- subject(:span) { Shoes::Span.new(text, style) }
8
-
9
- describe 'span' do
10
- include InspectHelpers
11
-
12
- it 'sets style to Span block' do
13
- expect(app.style[:strikethrough]).not_to be_truthy
14
-
15
- style = { strikethrough: true }
16
- result = app.span('test', style)
17
- expect(result.style[:strikethrough]).to be_truthy
18
-
19
- expect(app.style[:strikethrough]).not_to be_truthy
20
- end
21
-
22
- it 'displays text for #to_s' do
23
- expect(span.to_s).to eq(text.join)
24
- end
25
-
26
- it 'displays (Shoes::Span:0x01234567 "text") for #inspect' do
27
- expect(span.inspect).to match(/[(]Shoes::Span:#{shoes_object_id_pattern} "#{text.join}"[)]/)
28
- end
29
- end
30
-
31
- describe 'Looking up styles of the parent text' do
32
- let(:white) { Shoes::COLORS[:white] }
33
- let(:red) { Shoes::COLORS[:red] }
34
- it 'does not try to merge with parent style when there are none' do
35
- parent = double 'parent'
36
- span.parent = parent
37
- expect { span.style }.to_not raise_error
38
- end
39
-
40
- it 'merges with the styles of the parent text' do
41
- parent = double 'parent', style: {stroke: white}
42
- span.parent = parent
43
- expect(span.style[:stroke]).to eq(white)
44
- end
45
-
46
- describe 'with own style' do
47
- let(:style) { {stroke: red} }
48
- it 'prefers own values over parent text values' do
49
- parent = double 'parent', style: {stroke: white}
50
- span.parent = parent
51
- expect(span.style[:stroke]).to eq(red)
52
- end
53
- end
54
- end
55
-
56
- describe 'setting the text block a span belongs to' do
57
- it 'can set it' do
58
- text_block = double 'text block'
59
- subject.text_block = text_block
60
- expect(subject.text_block).to eq text_block
61
- end
62
- end
63
-
64
- describe 'code' do
65
- it 'sets font to Lucida Console' do
66
- result = app.code 'test'
67
- expect(result.style[:font]).to eq('Lucida Console')
68
- end
69
- end
70
-
71
- describe 'del' do
72
- it 'sets strikethrough to true' do
73
- result = app.del 'test'
74
- expect(result.style[:strikethrough]).to be_truthy
75
- end
76
- end
77
-
78
- describe 'em' do
79
- it 'sets emphasis to true' do
80
- result = app.em 'test'
81
- expect(result.style[:emphasis]).to be_truthy
82
- end
83
- end
84
-
85
- describe 'ins' do
86
- it 'sets underline to true' do
87
- result = app.ins 'test'
88
- expect(result.style[:underline]).to be_truthy
89
- end
90
- end
91
-
92
- describe 'sub' do
93
- it 'sets rise to -10 and multiplies font size by 0.8' do
94
- result = app.sub 'test'
95
- expect(result.style[:rise]).to eq(-10)
96
- end
97
- end
98
-
99
- describe 'sup' do
100
- it 'sets rise to 10 and multiplies font size by 0.8' do
101
- result = app.sup 'test'
102
- expect(result.style[:rise]).to eq(10)
103
- end
104
- end
105
-
106
- describe 'strong' do
107
- it 'sets weight to true' do
108
- result = app.strong 'test'
109
- expect(result.style[:weight]).to be_truthy
110
- end
111
- end
112
- end
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
-
3
- def it_styles_with(*styles)
4
- supported_styles = unpack_styles(styles)
5
- spec_styles(supported_styles)
6
- end
7
-
8
- def unpack_styles(styles)
9
- supported_styles = []
10
- styles.each do |style|
11
- if Shoes::Common::Style::STYLE_GROUPS[style]
12
- Shoes::Common::Style::STYLE_GROUPS[style].each { |s| supported_styles << s }
13
- else
14
- supported_styles << style
15
- end
16
- end
17
- supported_styles
18
- end
19
-
20
- def spec_styles(supported_styles)
21
- supported_styles.each do |style|
22
- it_behaves_like "object that styles with #{style}"
23
- end
24
- end
@@ -1,79 +0,0 @@
1
- require 'spec_helper'
2
- require 'shoes/helpers/fake_element'
3
-
4
- describe Shoes::Stack do
5
- include_context "dsl app"
6
-
7
- subject(:stack) { Shoes::Stack.new(app, app, input_opts) }
8
-
9
- it_behaves_like "Slot"
10
- it_behaves_like "object with hover"
11
-
12
- describe 'Context' do
13
- class ContextObject
14
- def initialize(app)
15
- @app = app
16
- end
17
-
18
- def check_self_inside_stack
19
- inside_stack = nil
20
- @app.stack { inside_stack = self }
21
- inside_stack
22
- end
23
- end
24
-
25
- it 'does not change the context' do
26
- app = Shoes.app { ; }
27
- context_object = ContextObject.new app
28
- inside_stack = context_object.check_self_inside_stack
29
- expect(inside_stack).to be context_object
30
- end
31
- end
32
-
33
- describe 'positioning' do
34
- it_behaves_like 'positioning through :_position'
35
- it_behaves_like 'positions the first element in the top left'
36
- it_behaves_like 'arranges elements underneath each other'
37
-
38
- describe 'small stack height' do
39
- let(:input_opts) { {height: element.height + 10} }
40
- it_behaves_like 'set height and contents alignment'
41
- end
42
-
43
- describe 'big stack height' do
44
- let(:input_opts) { {height: 1000} }
45
- it_behaves_like 'set height and contents alignment'
46
- end
47
-
48
- describe 'with margin' do
49
- let(:input_opts) { {margin: 27} }
50
- it_behaves_like 'taking care of margin'
51
- end
52
- end
53
-
54
- describe 'scrolling' do
55
- include_context "scroll"
56
- subject { Shoes::Stack.new(app, parent, opts) }
57
-
58
- context 'when scrollable' do
59
- let(:scroll) { true }
60
-
61
- it_behaves_like "scrollable slot"
62
-
63
- context 'when content overflows' do
64
- include_context "overflowing content"
65
- it_behaves_like "scrollable slot with overflowing content"
66
- end
67
- end
68
-
69
- context 'when slot is not scrollable' do
70
- let(:scroll) { false }
71
-
72
- its(:scroll) { should be_falsey }
73
-
74
- it "initializes scroll_top to 0" do
75
- expect(subject.scroll_top).to eq(0)
76
- end
77
- end
78
- end
79
- end