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.
- checksums.yaml +4 -4
- data/lib/shoes/arc.rb +10 -13
- data/lib/shoes/arrow.rb +1 -11
- data/lib/shoes/background.rb +0 -3
- data/lib/shoes/border.rb +0 -3
- data/lib/shoes/button.rb +4 -1
- data/lib/shoes/check_button.rb +0 -1
- data/lib/shoes/common/art_element.rb +21 -0
- data/lib/shoes/common/background_element.rb +10 -0
- data/lib/shoes/common/clickable.rb +2 -0
- data/lib/shoes/common/rotate.rb +1 -2
- data/lib/shoes/common/ui_element.rb +10 -1
- data/lib/shoes/core/version.rb +1 -1
- data/lib/shoes/download.rb +47 -29
- data/lib/shoes/dsl.rb +99 -40
- data/lib/shoes/font.rb +0 -4
- data/lib/shoes/http_request.rb +91 -0
- data/lib/shoes/image.rb +0 -1
- data/lib/shoes/input_box.rb +0 -1
- data/lib/shoes/internal_app.rb +1 -1
- data/lib/shoes/line.rb +25 -11
- data/lib/shoes/link.rb +10 -4
- data/lib/shoes/list_box.rb +0 -1
- data/lib/shoes/mock/app.rb +6 -0
- data/lib/shoes/mock/clickable.rb +3 -0
- data/lib/shoes/mock/font.rb +0 -4
- data/lib/shoes/oval.rb +3 -13
- data/lib/shoes/progress.rb +0 -1
- data/lib/shoes/rect.rb +1 -11
- data/lib/shoes/shape.rb +16 -8
- data/lib/shoes/slot.rb +2 -1
- data/lib/shoes/star.rb +8 -11
- data/lib/shoes/text_block.rb +0 -1
- data/lib/shoes/ui/picker.rb +29 -8
- data/lib/shoes/version.rb +1 -1
- metadata +8 -231
- data/Guardfile +0 -5
- data/Rakefile +0 -1
- data/bin/shoes-stub +0 -62
- data/ext/install/Rakefile +0 -39
- data/ext/install/shoes.bat +0 -17
- data/lib/rubygems_plugin.rb +0 -24
- data/shoes-core.gemspec +0 -22
- data/spec/shoes/animation_spec.rb +0 -71
- data/spec/shoes/app_spec.rb +0 -454
- data/spec/shoes/arc_spec.rb +0 -52
- data/spec/shoes/arrow_spec.rb +0 -28
- data/spec/shoes/background_spec.rb +0 -47
- data/spec/shoes/border_spec.rb +0 -46
- data/spec/shoes/builtin_methods_spec.rb +0 -122
- data/spec/shoes/button_spec.rb +0 -55
- data/spec/shoes/check_spec.rb +0 -36
- data/spec/shoes/color_spec.rb +0 -429
- data/spec/shoes/common/attachable_spec.rb +0 -32
- data/spec/shoes/common/inspect_spec.rb +0 -26
- data/spec/shoes/common/remove_spec.rb +0 -37
- data/spec/shoes/common/rotate_spec.rb +0 -13
- data/spec/shoes/common/style_normalizer_spec.rb +0 -28
- data/spec/shoes/common/style_spec.rb +0 -197
- data/spec/shoes/common/translate_spec.rb +0 -27
- data/spec/shoes/configuration_spec.rb +0 -51
- data/spec/shoes/constants_spec.rb +0 -39
- data/spec/shoes/dialog_spec.rb +0 -169
- data/spec/shoes/dimension_spec.rb +0 -451
- data/spec/shoes/dimensions_spec.rb +0 -868
- data/spec/shoes/download_spec.rb +0 -198
- data/spec/shoes/flow_spec.rb +0 -132
- data/spec/shoes/font_spec.rb +0 -36
- data/spec/shoes/framework_learning_spec.rb +0 -31
- data/spec/shoes/gradient_spec.rb +0 -31
- data/spec/shoes/helpers/fake_absolute_element.rb +0 -31
- data/spec/shoes/helpers/fake_element.rb +0 -25
- data/spec/shoes/helpers/inspect_helpers.rb +0 -5
- data/spec/shoes/helpers/sample17_helper.rb +0 -65
- data/spec/shoes/image_spec.rb +0 -69
- data/spec/shoes/images/shoe.jpg +0 -0
- data/spec/shoes/input_box_spec.rb +0 -80
- data/spec/shoes/integration_spec.rb +0 -19
- data/spec/shoes/internal_app_spec.rb +0 -148
- data/spec/shoes/keypress_spec.rb +0 -11
- data/spec/shoes/keyrelease_spec.rb +0 -11
- data/spec/shoes/line_spec.rb +0 -120
- data/spec/shoes/link_spec.rb +0 -149
- data/spec/shoes/list_box_spec.rb +0 -87
- data/spec/shoes/logger/ruby_spec.rb +0 -8
- data/spec/shoes/logger_spec.rb +0 -45
- data/spec/shoes/oval_spec.rb +0 -25
- data/spec/shoes/packager_spec.rb +0 -25
- data/spec/shoes/point_spec.rb +0 -99
- data/spec/shoes/progress_spec.rb +0 -54
- data/spec/shoes/radio_spec.rb +0 -32
- data/spec/shoes/rect_spec.rb +0 -40
- data/spec/shoes/renamed_delegate_spec.rb +0 -69
- data/spec/shoes/shape_spec.rb +0 -119
- data/spec/shoes/shared_examples/button.rb +0 -6
- data/spec/shoes/shared_examples/changeable.rb +0 -26
- data/spec/shoes/shared_examples/clickable.rb +0 -5
- data/spec/shoes/shared_examples/common_methods.rb +0 -35
- data/spec/shoes/shared_examples/dimensions.rb +0 -32
- data/spec/shoes/shared_examples/dsl.rb +0 -44
- data/spec/shoes/shared_examples/dsl/animate.rb +0 -29
- data/spec/shoes/shared_examples/dsl/arc.rb +0 -45
- data/spec/shoes/shared_examples/dsl/background.rb +0 -26
- data/spec/shoes/shared_examples/dsl/border.rb +0 -10
- data/spec/shoes/shared_examples/dsl/button.rb +0 -5
- data/spec/shoes/shared_examples/dsl/cap.rb +0 -6
- data/spec/shoes/shared_examples/dsl/check.rb +0 -11
- data/spec/shoes/shared_examples/dsl/edit_box.rb +0 -8
- data/spec/shoes/shared_examples/dsl/edit_line.rb +0 -8
- data/spec/shoes/shared_examples/dsl/editable_element.rb +0 -29
- data/spec/shoes/shared_examples/dsl/fill.rb +0 -27
- data/spec/shoes/shared_examples/dsl/flow.rb +0 -15
- data/spec/shoes/shared_examples/dsl/gradient.rb +0 -62
- data/spec/shoes/shared_examples/dsl/image.rb +0 -21
- data/spec/shoes/shared_examples/dsl/line.rb +0 -9
- data/spec/shoes/shared_examples/dsl/nofill.rb +0 -6
- data/spec/shoes/shared_examples/dsl/nostroke.rb +0 -6
- data/spec/shoes/shared_examples/dsl/oval.rb +0 -88
- data/spec/shoes/shared_examples/dsl/pattern.rb +0 -34
- data/spec/shoes/shared_examples/dsl/progress.rb +0 -7
- data/spec/shoes/shared_examples/dsl/rect.rb +0 -92
- data/spec/shoes/shared_examples/dsl/rgb.rb +0 -28
- data/spec/shoes/shared_examples/dsl/shape.rb +0 -61
- data/spec/shoes/shared_examples/dsl/star.rb +0 -110
- data/spec/shoes/shared_examples/dsl/stroke.rb +0 -30
- data/spec/shoes/shared_examples/dsl/strokewidth.rb +0 -19
- data/spec/shoes/shared_examples/dsl/style.rb +0 -32
- data/spec/shoes/shared_examples/dsl/text_elements.rb +0 -84
- data/spec/shoes/shared_examples/dsl/video.rb +0 -5
- data/spec/shoes/shared_examples/dsl_app_context.rb +0 -11
- data/spec/shoes/shared_examples/hover.rb +0 -78
- data/spec/shoes/shared_examples/parent.rb +0 -6
- data/spec/shoes/shared_examples/scroll.rb +0 -41
- data/spec/shoes/shared_examples/shared_element_method.rb +0 -60
- data/spec/shoes/shared_examples/slot.rb +0 -441
- data/spec/shoes/shared_examples/state.rb +0 -26
- data/spec/shoes/shared_examples/style.rb +0 -77
- data/spec/shoes/slot_spec.rb +0 -176
- data/spec/shoes/sound_spec.rb +0 -16
- data/spec/shoes/span_spec.rb +0 -112
- data/spec/shoes/spec_helper.rb +0 -24
- data/spec/shoes/stack_spec.rb +0 -79
- data/spec/shoes/star_spec.rb +0 -49
- data/spec/shoes/text_block_dimensions_spec.rb +0 -77
- data/spec/shoes/text_block_spec.rb +0 -314
- data/spec/shoes/text_spec.rb +0 -22
- data/spec/shoes/ui/picker_spec.rb +0 -69
- data/spec/shoes/url_spec.rb +0 -67
- data/spec/shoes/widget_spec.rb +0 -78
- data/spec/shoes_spec.rb +0 -41
- 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
|
data/spec/shoes/slot_spec.rb
DELETED
@@ -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
|
data/spec/shoes/sound_spec.rb
DELETED
@@ -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
|
data/spec/shoes/span_spec.rb
DELETED
@@ -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
|
data/spec/shoes/spec_helper.rb
DELETED
@@ -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
|
data/spec/shoes/stack_spec.rb
DELETED
@@ -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
|