vedeu 0.4.61 → 0.4.62
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/vedeu/all.rb +2 -0
- data/lib/vedeu/application/controller.rb +41 -9
- data/lib/vedeu/bindings.rb +4 -1
- data/lib/vedeu/bindings/application.rb +36 -0
- data/lib/vedeu/bootstrap.rb +6 -1
- data/lib/vedeu/cli/generator/templates/application/app/controllers/name.erb +10 -4
- data/lib/vedeu/colours/colour.rb +6 -9
- data/lib/vedeu/repositories/model.rb +1 -1
- data/lib/vedeu/router.rb +117 -0
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/application/application_controller_test.rb +1 -1
- data/test/lib/vedeu/application/application_helper_test.rb +1 -1
- data/test/lib/vedeu/application/controller_test.rb +35 -11
- data/test/lib/vedeu/application/helper_test.rb +1 -1
- data/test/lib/vedeu/bindings/application_test.rb +38 -0
- data/test/lib/vedeu/bindings_test.rb +45 -0
- data/test/lib/vedeu/borders/render_border_test.rb +1 -1
- data/test/lib/vedeu/buffers/buffer_test.rb +1 -1
- data/test/lib/vedeu/buffers/display_buffer_test.rb +2 -2
- data/test/lib/vedeu/cli/generator/application_test.rb +1 -1
- data/test/lib/vedeu/cli/generator/helpers_test.rb +1 -1
- data/test/lib/vedeu/colours/colour_test.rb +9 -1
- data/test/lib/vedeu/configuration/api_test.rb +3 -3
- data/test/lib/vedeu/cursor/move_test.rb +5 -5
- data/test/lib/vedeu/cursor/refresh_cursor_test.rb +4 -0
- data/test/lib/vedeu/distributed/client_test.rb +4 -4
- data/test/lib/vedeu/distributed/server_test.rb +9 -9
- data/test/lib/vedeu/dsl/use_test.rb +4 -4
- data/test/lib/vedeu/launcher_test.rb +2 -2
- data/test/lib/vedeu/main_loop_test.rb +2 -2
- data/test/lib/vedeu/output/refresh_group_test.rb +1 -1
- data/test/lib/vedeu/output/refresh_test.rb +1 -1
- data/test/lib/vedeu/output/renderers/html_test.rb +1 -1
- data/test/lib/vedeu/output/renderers/renderer_options_test.rb +1 -1
- data/test/lib/vedeu/output/renderers_test.rb +2 -2
- data/test/lib/vedeu/output/text_test.rb +2 -2
- data/test/lib/vedeu/plugins/plugin_test.rb +1 -1
- data/test/lib/vedeu/plugins_test.rb +2 -2
- data/test/lib/vedeu/repositories/collection_test.rb +1 -1
- data/test/lib/vedeu/repositories/model_test.rb +18 -3
- data/test/lib/vedeu/{repositories/all_test.rb → repositories_test.rb} +0 -0
- data/test/lib/vedeu/router_test.rb +192 -0
- data/test/lib/vedeu/traps_test.rb +1 -1
- data/test/lib/vedeu_test.rb +1 -1
- data/test/support/coverage.rb +42 -0
- data/vedeu.gemspec +2 -2
- metadata +14 -4
@@ -32,14 +32,14 @@ module Vedeu
|
|
32
32
|
|
33
33
|
subject { Vedeu.renderers.render(output) }
|
34
34
|
|
35
|
-
# @todo
|
35
|
+
# @todo Add more tests.
|
36
36
|
# context 'when a single renderer is defined' do
|
37
37
|
# let(:renderers) { DummyRenderer }
|
38
38
|
|
39
39
|
# it { subject.must_equal([:dummy]) }
|
40
40
|
# end
|
41
41
|
|
42
|
-
# @todo
|
42
|
+
# @todo Add more tests.
|
43
43
|
# context 'when multiple renderers are defined' do
|
44
44
|
# let(:renderers) { [DummyRenderer, FooRenderer] }
|
45
45
|
|
@@ -133,7 +133,7 @@ module Vedeu
|
|
133
133
|
context 'when the colour option is given' do
|
134
134
|
let(:colour) { { background: '#33ff33', foreground: '#ffaa00' } }
|
135
135
|
|
136
|
-
# @todo
|
136
|
+
# @todo Add more tests.
|
137
137
|
# it { skip }
|
138
138
|
end
|
139
139
|
|
@@ -141,7 +141,7 @@ module Vedeu
|
|
141
141
|
let(:background) { '#111111' }
|
142
142
|
let(:foreground) { '#aadd00' }
|
143
143
|
|
144
|
-
# @todo
|
144
|
+
# @todo Add more tests.
|
145
145
|
# it { skip }
|
146
146
|
end
|
147
147
|
|
@@ -23,7 +23,7 @@ module Vedeu
|
|
23
23
|
|
24
24
|
subject { instance.register(_name, plugin) }
|
25
25
|
|
26
|
-
# @todo
|
26
|
+
# @todo Add more tests.
|
27
27
|
# it { skip }
|
28
28
|
end
|
29
29
|
|
@@ -43,7 +43,7 @@ module Vedeu
|
|
43
43
|
end
|
44
44
|
|
45
45
|
context 'when plugins are registered' do
|
46
|
-
# @todo
|
46
|
+
# @todo Add more tests.
|
47
47
|
# it { skip }
|
48
48
|
end
|
49
49
|
end
|
@@ -41,10 +41,25 @@ module Vedeu
|
|
41
41
|
|
42
42
|
subject { described.build(attributes) { } }
|
43
43
|
|
44
|
-
# @todo
|
44
|
+
# @todo Add more tests.
|
45
45
|
# it { skip }
|
46
46
|
end
|
47
47
|
|
48
|
+
describe '.by_name' do
|
49
|
+
let(:_name) {}
|
50
|
+
|
51
|
+
subject { described.by_name(_name) }
|
52
|
+
|
53
|
+
context 'when the model has no repository set' do
|
54
|
+
it { subject.must_be_instance_of(NilClass) }
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when the model has a repository set' do
|
58
|
+
# @todo Add more tests.
|
59
|
+
# it { skip }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
48
63
|
describe '.child' do
|
49
64
|
let(:klass) {}
|
50
65
|
|
@@ -53,7 +68,7 @@ module Vedeu
|
|
53
68
|
it { described.must_respond_to(:member) }
|
54
69
|
it { described.must_respond_to(:collection) }
|
55
70
|
|
56
|
-
# @todo
|
71
|
+
# @todo Add more tests.
|
57
72
|
# it { skip }
|
58
73
|
end
|
59
74
|
|
@@ -62,7 +77,7 @@ module Vedeu
|
|
62
77
|
|
63
78
|
subject { described.repository(klass) }
|
64
79
|
|
65
|
-
# @todo
|
80
|
+
# @todo Add more tests.
|
66
81
|
# it { skip }
|
67
82
|
end
|
68
83
|
|
File without changes
|
@@ -0,0 +1,192 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
class SomeController
|
6
|
+
|
7
|
+
def some_action(customer_id:, product_id:)
|
8
|
+
{
|
9
|
+
customer: { name: 'Gavin Laking', customer_id: customer_id },
|
10
|
+
basket: { product_ids: [product_id] }
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
end # SomeController
|
15
|
+
|
16
|
+
describe Router do
|
17
|
+
|
18
|
+
let(:described) { Vedeu::Router }
|
19
|
+
|
20
|
+
before { described.reset! }
|
21
|
+
|
22
|
+
describe '.add_controller' do
|
23
|
+
let(:controller_name) {}
|
24
|
+
let(:klass) { "SomeController" }
|
25
|
+
|
26
|
+
subject { described.add_controller(controller_name, klass) }
|
27
|
+
|
28
|
+
context 'when a name is not given' do
|
29
|
+
it { proc { subject }.must_raise(Vedeu::MissingRequired) }
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when a name is given' do
|
33
|
+
let(:controller_name) { :some_controller }
|
34
|
+
|
35
|
+
context 'when the controller is registered' do
|
36
|
+
before do
|
37
|
+
described.add_controller(controller_name, '')
|
38
|
+
described.add_action(controller_name, :show_basket)
|
39
|
+
end
|
40
|
+
after { described.reset! }
|
41
|
+
|
42
|
+
it {
|
43
|
+
subject.must_equal({
|
44
|
+
some_controller: {
|
45
|
+
klass: 'SomeController',
|
46
|
+
actions: [:show_basket]
|
47
|
+
}
|
48
|
+
})
|
49
|
+
}
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'when the controller is not registered' do
|
53
|
+
it {
|
54
|
+
subject.must_equal({
|
55
|
+
some_controller: {
|
56
|
+
klass: 'SomeController',
|
57
|
+
actions: []
|
58
|
+
}
|
59
|
+
})
|
60
|
+
}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '.add_action' do
|
66
|
+
let(:controller_name) {}
|
67
|
+
let(:action_name) {}
|
68
|
+
|
69
|
+
subject { described.add_action(controller_name, action_name) }
|
70
|
+
|
71
|
+
context 'when the controller is not given' do
|
72
|
+
let(:action_name) { :some_action }
|
73
|
+
|
74
|
+
it { proc { subject }.must_raise(Vedeu::MissingRequired) }
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'when the name is not given' do
|
78
|
+
let(:controller_name) { :some_controller }
|
79
|
+
|
80
|
+
it { proc { subject }.must_raise(Vedeu::MissingRequired) }
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'when the controller and name is given' do
|
84
|
+
let(:controller_name) { :some_controller }
|
85
|
+
let(:action_name) { :some_action }
|
86
|
+
|
87
|
+
context 'when the controller is registered' do
|
88
|
+
before { described.add_controller(controller_name, 'SomeController') }
|
89
|
+
after { described.reset! }
|
90
|
+
|
91
|
+
it {
|
92
|
+
subject.must_equal({
|
93
|
+
some_controller: {
|
94
|
+
klass: 'SomeController',
|
95
|
+
actions: [:some_action]
|
96
|
+
}
|
97
|
+
})
|
98
|
+
}
|
99
|
+
end
|
100
|
+
|
101
|
+
context 'when the controller is not registered' do
|
102
|
+
before { described.reset! }
|
103
|
+
|
104
|
+
it {
|
105
|
+
subject.must_equal({
|
106
|
+
some_controller: {
|
107
|
+
klass: '',
|
108
|
+
actions: [:some_action]
|
109
|
+
}
|
110
|
+
})
|
111
|
+
}
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe '.goto' do
|
117
|
+
let(:controller_name) { :some_controller }
|
118
|
+
let(:action_name) { :some_action }
|
119
|
+
let(:args) {
|
120
|
+
{
|
121
|
+
customer_id: 7,
|
122
|
+
product_id: 88,
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
subject { described.goto(controller_name, action_name, **args) }
|
127
|
+
|
128
|
+
context 'when the controller is registered' do
|
129
|
+
context 'when the controller klass is defined' do
|
130
|
+
before do
|
131
|
+
described.add_controller(controller_name, 'Vedeu::SomeController')
|
132
|
+
described.add_action(controller_name, action_name)
|
133
|
+
end
|
134
|
+
after { described.reset! }
|
135
|
+
|
136
|
+
it {
|
137
|
+
subject.must_equal({
|
138
|
+
customer: {
|
139
|
+
name: 'Gavin Laking',
|
140
|
+
customer_id: 7
|
141
|
+
},
|
142
|
+
basket: {
|
143
|
+
product_ids: [88]
|
144
|
+
}
|
145
|
+
})
|
146
|
+
}
|
147
|
+
end
|
148
|
+
|
149
|
+
context 'when the controller klass is not defined' do
|
150
|
+
before do
|
151
|
+
described.add_controller(controller_name, '')
|
152
|
+
described.add_action(controller_name, action_name)
|
153
|
+
end
|
154
|
+
after { described.reset! }
|
155
|
+
|
156
|
+
it { proc { subject }.must_raise(Vedeu::MissingRequired) }
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context 'when the controller is not registered' do
|
161
|
+
it { proc { subject }.must_raise(Vedeu::ModelNotFound) }
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
describe '.registered' do
|
166
|
+
let(:controller_name) { :some_controller }
|
167
|
+
|
168
|
+
subject { described.registered?(controller_name) }
|
169
|
+
|
170
|
+
context 'when the controller is registered' do
|
171
|
+
before { described.add_controller(controller_name, "SomeController") }
|
172
|
+
after { described.reset! }
|
173
|
+
|
174
|
+
it { subject.must_equal(true) }
|
175
|
+
end
|
176
|
+
|
177
|
+
context 'when the controller is not registered' do
|
178
|
+
it { subject.must_equal(false) }
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
describe '.reset!' do
|
183
|
+
subject { described.reset! }
|
184
|
+
|
185
|
+
it { subject.must_equal({}) }
|
186
|
+
|
187
|
+
it { described.must_respond_to(:reset) }
|
188
|
+
end
|
189
|
+
|
190
|
+
end # Router
|
191
|
+
|
192
|
+
end # Vedeu
|
data/test/lib/vedeu_test.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Find all methods which don't have corresponding test method, or all test
|
4
|
+
# methods without corresponding method. Produces quite a few false positives,
|
5
|
+
# but useful for a quick check.
|
6
|
+
|
7
|
+
source_files = Dir.glob("lib/vedeu/**/*.rb")
|
8
|
+
test_files = Dir.glob("test/lib/vedeu/**/*_test.rb")
|
9
|
+
|
10
|
+
test_files.each do |test_file|
|
11
|
+
source_file = test_file.gsub(/^test\/|_test/, '')
|
12
|
+
if File.exist?(source_file)
|
13
|
+
source_defs = File.readlines(source_file).select { |line| line[/def /] }.map(&:lstrip).map do |line|
|
14
|
+
line.chomp!
|
15
|
+
line.gsub!(/^def /, '')
|
16
|
+
line.gsub(/\(.*/, '')
|
17
|
+
end
|
18
|
+
|
19
|
+
defs = File.readlines(test_file).select { |line| line[/describe /] }.map(&:lstrip).map do |line|
|
20
|
+
line.chomp!
|
21
|
+
line.gsub!(/^describe /, '')
|
22
|
+
line.gsub!(/ do$/, '')
|
23
|
+
end
|
24
|
+
test_defs = defs.keep_if { |line| line =~ /\'/ }.map { |line| line.gsub!(/\'|#|\./, '') }
|
25
|
+
|
26
|
+
unless (test_defs - source_defs).empty?
|
27
|
+
puts "\e[33m#{test_file} \e[31m(test without source)\e[39m\n #{(test_defs - source_defs).inspect}"
|
28
|
+
end
|
29
|
+
|
30
|
+
unless (source_defs - test_defs).empty?
|
31
|
+
puts "\e[34m#{source_file} \e[31m(source without test)\e[39m\n #{(source_defs - test_defs).inspect}"
|
32
|
+
end
|
33
|
+
|
34
|
+
puts
|
35
|
+
|
36
|
+
else
|
37
|
+
puts "#{test_file} has no matching source file."
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
data/vedeu.gemspec
CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.authors = ['Gavin Laking']
|
11
11
|
spec.email = ['gavinlaking@gmail.com']
|
12
12
|
spec.summary = 'A terminal case of wonderland.'
|
13
|
-
spec.description = 'A GUI framework
|
14
|
-
'
|
13
|
+
spec.description = 'A GUI/TUI framework for building terminal/console ' \
|
14
|
+
'applications.'
|
15
15
|
spec.homepage = 'https://github.com/gavinlaking/vedeu'
|
16
16
|
spec.license = 'MIT'
|
17
17
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vedeu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.62
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
@@ -206,7 +206,7 @@ dependencies:
|
|
206
206
|
- - '='
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: 0.19.1
|
209
|
-
description: A GUI framework
|
209
|
+
description: A GUI/TUI framework for building terminal/console applications.
|
210
210
|
email:
|
211
211
|
- gavinlaking@gmail.com
|
212
212
|
executables:
|
@@ -269,6 +269,7 @@ files:
|
|
269
269
|
- lib/vedeu/application/helper.rb
|
270
270
|
- lib/vedeu/application/view.rb
|
271
271
|
- lib/vedeu/bindings.rb
|
272
|
+
- lib/vedeu/bindings/application.rb
|
272
273
|
- lib/vedeu/bindings/drb.rb
|
273
274
|
- lib/vedeu/bindings/menus.rb
|
274
275
|
- lib/vedeu/bindings/movement.rb
|
@@ -434,6 +435,7 @@ files:
|
|
434
435
|
- lib/vedeu/repositories/registerable.rb
|
435
436
|
- lib/vedeu/repositories/repository.rb
|
436
437
|
- lib/vedeu/repositories/store.rb
|
438
|
+
- lib/vedeu/router.rb
|
437
439
|
- lib/vedeu/templating/all.rb
|
438
440
|
- lib/vedeu/templating/decoder.rb
|
439
441
|
- lib/vedeu/templating/directive.rb
|
@@ -454,11 +456,13 @@ files:
|
|
454
456
|
- test/lib/vedeu/application/helper_test.rb
|
455
457
|
- test/lib/vedeu/application/view_test.rb
|
456
458
|
- test/lib/vedeu/application_test.rb
|
459
|
+
- test/lib/vedeu/bindings/application_test.rb
|
457
460
|
- test/lib/vedeu/bindings/drb_test.rb
|
458
461
|
- test/lib/vedeu/bindings/menus_test.rb
|
459
462
|
- test/lib/vedeu/bindings/movement_test.rb
|
460
463
|
- test/lib/vedeu/bindings/system_test.rb
|
461
464
|
- test/lib/vedeu/bindings/visibility_test.rb
|
465
|
+
- test/lib/vedeu/bindings_test.rb
|
462
466
|
- test/lib/vedeu/bootstrap_test.rb
|
463
467
|
- test/lib/vedeu/borders/border_test.rb
|
464
468
|
- test/lib/vedeu/borders/borders_test.rb
|
@@ -579,12 +583,13 @@ files:
|
|
579
583
|
- test/lib/vedeu/output/wordwrap_test.rb
|
580
584
|
- test/lib/vedeu/plugins/plugin_test.rb
|
581
585
|
- test/lib/vedeu/plugins_test.rb
|
582
|
-
- test/lib/vedeu/repositories/all_test.rb
|
583
586
|
- test/lib/vedeu/repositories/collection_test.rb
|
584
587
|
- test/lib/vedeu/repositories/model_test.rb
|
585
588
|
- test/lib/vedeu/repositories/registerable_test.rb
|
586
589
|
- test/lib/vedeu/repositories/repository_test.rb
|
587
590
|
- test/lib/vedeu/repositories/store_test.rb
|
591
|
+
- test/lib/vedeu/repositories_test.rb
|
592
|
+
- test/lib/vedeu/router_test.rb
|
588
593
|
- test/lib/vedeu/templating/decoder_test.rb
|
589
594
|
- test/lib/vedeu/templating/directive_test.rb
|
590
595
|
- test/lib/vedeu/templating/encoder_test.rb
|
@@ -597,6 +602,7 @@ files:
|
|
597
602
|
- test/lib/vedeu/traps_test.rb
|
598
603
|
- test/lib/vedeu_test.rb
|
599
604
|
- test/support/all_seeds.sh
|
605
|
+
- test/support/coverage.rb
|
600
606
|
- test/support/helpers/model_test_class.rb
|
601
607
|
- test/support/stats.sh
|
602
608
|
- test/support/templates/plain.erb
|
@@ -636,11 +642,13 @@ test_files:
|
|
636
642
|
- test/lib/vedeu/application/helper_test.rb
|
637
643
|
- test/lib/vedeu/application/view_test.rb
|
638
644
|
- test/lib/vedeu/application_test.rb
|
645
|
+
- test/lib/vedeu/bindings/application_test.rb
|
639
646
|
- test/lib/vedeu/bindings/drb_test.rb
|
640
647
|
- test/lib/vedeu/bindings/menus_test.rb
|
641
648
|
- test/lib/vedeu/bindings/movement_test.rb
|
642
649
|
- test/lib/vedeu/bindings/system_test.rb
|
643
650
|
- test/lib/vedeu/bindings/visibility_test.rb
|
651
|
+
- test/lib/vedeu/bindings_test.rb
|
644
652
|
- test/lib/vedeu/bootstrap_test.rb
|
645
653
|
- test/lib/vedeu/borders/border_test.rb
|
646
654
|
- test/lib/vedeu/borders/borders_test.rb
|
@@ -761,12 +769,13 @@ test_files:
|
|
761
769
|
- test/lib/vedeu/output/wordwrap_test.rb
|
762
770
|
- test/lib/vedeu/plugins/plugin_test.rb
|
763
771
|
- test/lib/vedeu/plugins_test.rb
|
764
|
-
- test/lib/vedeu/repositories/all_test.rb
|
765
772
|
- test/lib/vedeu/repositories/collection_test.rb
|
766
773
|
- test/lib/vedeu/repositories/model_test.rb
|
767
774
|
- test/lib/vedeu/repositories/registerable_test.rb
|
768
775
|
- test/lib/vedeu/repositories/repository_test.rb
|
769
776
|
- test/lib/vedeu/repositories/store_test.rb
|
777
|
+
- test/lib/vedeu/repositories_test.rb
|
778
|
+
- test/lib/vedeu/router_test.rb
|
770
779
|
- test/lib/vedeu/templating/decoder_test.rb
|
771
780
|
- test/lib/vedeu/templating/directive_test.rb
|
772
781
|
- test/lib/vedeu/templating/encoder_test.rb
|
@@ -779,6 +788,7 @@ test_files:
|
|
779
788
|
- test/lib/vedeu/traps_test.rb
|
780
789
|
- test/lib/vedeu_test.rb
|
781
790
|
- test/support/all_seeds.sh
|
791
|
+
- test/support/coverage.rb
|
782
792
|
- test/support/helpers/model_test_class.rb
|
783
793
|
- test/support/stats.sh
|
784
794
|
- test/support/templates/plain.erb
|