vedeu 0.2.12 → 0.3.0

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 (305) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/Guardfile +13 -0
  4. data/README.md +11 -9
  5. data/Rakefile +10 -1
  6. data/bin/vedeu_test +14 -0
  7. data/config/cucumber.yml +8 -0
  8. data/docs/api.md +45 -16
  9. data/docs/events.md +21 -9
  10. data/docs/getting_started.md +16 -0
  11. data/docs/views.md +158 -0
  12. data/examples/borders_app.rb +236 -110
  13. data/examples/colour_support.sh +98 -0
  14. data/examples/colours_app.rb +41 -0
  15. data/examples/configuration_app.rb +11 -6
  16. data/examples/cursor_app.rb +60 -61
  17. data/examples/focus_app.rb +72 -34
  18. data/examples/hello_world.rb +13 -8
  19. data/examples/lines_app.rb +37 -28
  20. data/features/start_stop.feature +27 -0
  21. data/features/support/env.rb +14 -0
  22. data/lib/vedeu/all.rb +29 -0
  23. data/lib/vedeu/api.rb +39 -0
  24. data/lib/vedeu/application.rb +15 -7
  25. data/lib/vedeu/bindings.rb +121 -0
  26. data/lib/vedeu/buffers/all.rb +10 -0
  27. data/lib/vedeu/{repositories/models → buffers}/buffer.rb +47 -64
  28. data/lib/vedeu/buffers/display_buffer.rb +118 -0
  29. data/lib/vedeu/configuration/all.rb +6 -0
  30. data/lib/vedeu/configuration/api.rb +3 -1
  31. data/lib/vedeu/configuration/cli.rb +3 -1
  32. data/lib/vedeu/configuration/configuration.rb +23 -2
  33. data/lib/vedeu/cursor/all.rb +23 -0
  34. data/lib/vedeu/cursor/cursor.rb +116 -0
  35. data/lib/vedeu/cursor/move_cursor.rb +137 -0
  36. data/lib/vedeu/cursor/toggle_cursor.rb +53 -0
  37. data/lib/vedeu/dsl/all.rb +28 -0
  38. data/lib/vedeu/dsl/components/all.rb +7 -0
  39. data/lib/vedeu/dsl/components/border.rb +104 -0
  40. data/lib/vedeu/dsl/components/geometry.rb +153 -0
  41. data/lib/vedeu/dsl/components/keymap.rb +93 -0
  42. data/lib/vedeu/dsl/components/menu.rb +82 -0
  43. data/lib/vedeu/dsl/composition.rb +72 -0
  44. data/lib/vedeu/dsl/interface.rb +210 -0
  45. data/lib/vedeu/dsl/line.rb +135 -0
  46. data/lib/vedeu/dsl/shared/all.rb +7 -0
  47. data/lib/vedeu/dsl/shared/colour.rb +85 -0
  48. data/lib/vedeu/dsl/shared/style.rb +38 -0
  49. data/lib/vedeu/dsl/shared/text.rb +102 -0
  50. data/lib/vedeu/dsl/shared/use.rb +47 -0
  51. data/lib/vedeu/dsl/stream.rb +49 -0
  52. data/lib/vedeu/dsl/view.rb +136 -0
  53. data/lib/vedeu/events/all.rb +10 -0
  54. data/lib/vedeu/{repositories/models → events}/event.rb +97 -8
  55. data/lib/vedeu/events/trigger.rb +58 -0
  56. data/lib/vedeu/exceptions.rb +34 -0
  57. data/lib/vedeu/input/all.rb +29 -0
  58. data/lib/vedeu/input/input.rb +26 -0
  59. data/lib/vedeu/{models → input}/key.rb +21 -11
  60. data/lib/vedeu/input/keymap.rb +130 -0
  61. data/lib/vedeu/input/keys.rb +8 -0
  62. data/lib/vedeu/input/mapper.rb +112 -0
  63. data/lib/vedeu/launcher.rb +7 -4
  64. data/lib/vedeu/models/all.rb +12 -0
  65. data/lib/vedeu/models/collection.rb +71 -0
  66. data/lib/vedeu/{repositories → models}/focus.rb +63 -21
  67. data/lib/vedeu/models/geometry.rb +100 -259
  68. data/lib/vedeu/{repositories/models → models}/group.rb +16 -14
  69. data/lib/vedeu/{repositories/models → models}/menu.rb +85 -22
  70. data/lib/vedeu/models/model.rb +51 -0
  71. data/lib/vedeu/models/view/all.rb +12 -0
  72. data/lib/vedeu/models/view/char.rb +84 -0
  73. data/lib/vedeu/models/view/chars.rb +8 -0
  74. data/lib/vedeu/models/view/composition.rb +101 -0
  75. data/lib/vedeu/models/view/interface.rb +215 -0
  76. data/lib/vedeu/models/view/interfaces.rb +8 -0
  77. data/lib/vedeu/models/view/line.rb +134 -0
  78. data/lib/vedeu/models/view/lines.rb +8 -0
  79. data/lib/vedeu/models/view/stream.rb +144 -0
  80. data/lib/vedeu/models/view/streams.rb +8 -0
  81. data/lib/vedeu/output/all.rb +8 -0
  82. data/lib/vedeu/output/border.rb +387 -0
  83. data/lib/vedeu/output/compositor.rb +41 -30
  84. data/lib/vedeu/output/output.rb +6 -13
  85. data/lib/vedeu/output/viewport.rb +78 -94
  86. data/lib/vedeu/output/writer.rb +29 -0
  87. data/lib/vedeu/presentation/all.rb +9 -0
  88. data/lib/vedeu/{colours → presentation}/background.rb +1 -9
  89. data/lib/vedeu/{colours → presentation}/colour.rb +21 -8
  90. data/lib/vedeu/{colours → presentation}/foreground.rb +5 -9
  91. data/lib/vedeu/presentation/presentation.rb +91 -0
  92. data/lib/vedeu/presentation/style.rb +47 -0
  93. data/lib/vedeu/{colours → presentation}/translator.rb +11 -5
  94. data/lib/vedeu/repositories/all.rb +5 -0
  95. data/lib/vedeu/repositories/menus.rb +5 -42
  96. data/lib/vedeu/{support → repositories}/repository.rb +78 -41
  97. data/lib/vedeu/support/all.rb +22 -0
  98. data/lib/vedeu/support/bounding_area.rb +2 -1
  99. data/lib/vedeu/support/coercions.rb +18 -1
  100. data/lib/vedeu/support/console.rb +73 -0
  101. data/lib/vedeu/support/content_geometry.rb +69 -0
  102. data/lib/vedeu/support/coordinate.rb +246 -0
  103. data/lib/vedeu/support/esc.rb +29 -2
  104. data/lib/vedeu/support/log.rb +36 -2
  105. data/lib/vedeu/support/node.rb +61 -0
  106. data/lib/vedeu/support/position.rb +28 -13
  107. data/lib/vedeu/support/position_validator.rb +79 -0
  108. data/lib/vedeu/support/read.rb +65 -0
  109. data/lib/vedeu/support/refresh.rb +8 -32
  110. data/lib/vedeu/support/terminal.rb +34 -4
  111. data/lib/vedeu/support/text.rb +104 -0
  112. data/lib/vedeu/support/trace.rb +11 -23
  113. data/lib/vedeu/support/visible.rb +75 -0
  114. data/lib/vedeu/support/write.rb +85 -0
  115. data/lib/vedeu/traps.rb +18 -0
  116. data/lib/vedeu.rb +41 -101
  117. data/test/integration/dsl/compositions_test.rb +27 -0
  118. data/test/integration/dsl/interfaces_test.rb +261 -0
  119. data/test/integration/dsl/keymaps_test.rb +42 -0
  120. data/test/integration/dsl/lines_test.rb +146 -0
  121. data/test/integration/dsl/menus_test.rb +59 -0
  122. data/test/integration/dsl/streams_test.rb +129 -0
  123. data/test/integration/dsl/views_test.rb +63 -0
  124. data/test/lib/vedeu/api_test.rb +163 -0
  125. data/test/lib/vedeu/application_test.rb +19 -10
  126. data/test/lib/vedeu/bindings_test.rb +54 -0
  127. data/test/lib/vedeu/buffers/all_test.rb +11 -0
  128. data/test/lib/vedeu/buffers/buffer_test.rb +196 -0
  129. data/test/lib/vedeu/buffers/display_buffer_test.rb +58 -0
  130. data/test/lib/vedeu/configuration/api_test.rb +42 -58
  131. data/test/lib/vedeu/configuration/cli_test.rb +4 -4
  132. data/test/lib/vedeu/configuration/configuration_test.rb +11 -29
  133. data/test/lib/vedeu/cursor/all_test.rb +33 -0
  134. data/test/lib/vedeu/cursor/cursor_test.rb +85 -0
  135. data/test/lib/vedeu/cursor/move_cursor_test.rb +212 -0
  136. data/test/lib/vedeu/cursor/toggle_cursor_test.rb +63 -0
  137. data/test/lib/vedeu/dsl/components/border_test.rb +414 -0
  138. data/test/lib/vedeu/dsl/components/geometry_test.rb +231 -0
  139. data/test/lib/vedeu/dsl/components/keymap_test.rb +80 -0
  140. data/test/lib/vedeu/dsl/components/menu_test.rb +115 -0
  141. data/test/lib/vedeu/dsl/composition_test.rb +41 -0
  142. data/test/lib/vedeu/dsl/interface_test.rb +470 -0
  143. data/test/lib/vedeu/dsl/line_test.rb +60 -0
  144. data/test/lib/vedeu/dsl/shared/colour_test.rb +100 -0
  145. data/test/lib/vedeu/dsl/shared/style_test.rb +22 -0
  146. data/test/lib/vedeu/dsl/shared/text_test.rb +15 -0
  147. data/test/lib/vedeu/dsl/shared/use_test.rb +27 -0
  148. data/test/lib/vedeu/dsl/stream_test.rb +26 -0
  149. data/test/lib/vedeu/dsl/view_test.rb +73 -0
  150. data/test/lib/vedeu/events/all_test.rb +11 -0
  151. data/test/lib/vedeu/events/event_test.rb +109 -0
  152. data/test/lib/vedeu/events/trigger_test.rb +60 -0
  153. data/test/lib/vedeu/input/all_test.rb +11 -0
  154. data/test/lib/vedeu/input/input_test.rb +7 -3
  155. data/test/lib/vedeu/input/key_test.rb +72 -0
  156. data/test/lib/vedeu/input/keymap_test.rb +89 -0
  157. data/test/lib/vedeu/input/mapper_test.rb +94 -0
  158. data/test/lib/vedeu/launcher_test.rb +19 -20
  159. data/test/lib/vedeu/models/collection_test.rb +114 -0
  160. data/test/lib/vedeu/{repositories → models}/focus_test.rb +46 -13
  161. data/test/lib/vedeu/models/geometry_test.rb +35 -39
  162. data/test/lib/vedeu/models/group_test.rb +100 -0
  163. data/test/lib/vedeu/models/menu_test.rb +288 -0
  164. data/test/lib/vedeu/models/model_test.rb +31 -0
  165. data/test/lib/vedeu/models/view/char_test.rb +166 -0
  166. data/test/lib/vedeu/models/view/chars_test.rb +18 -0
  167. data/test/lib/vedeu/models/view/composition_test.rb +41 -0
  168. data/test/lib/vedeu/models/view/interface_test.rb +128 -0
  169. data/test/lib/vedeu/models/view/interfaces_test.rb +18 -0
  170. data/test/lib/vedeu/models/view/line_test.rb +214 -0
  171. data/test/lib/vedeu/models/view/lines_test.rb +18 -0
  172. data/test/lib/vedeu/models/view/stream_test.rb +106 -0
  173. data/test/lib/vedeu/models/view/streams_test.rb +18 -0
  174. data/test/lib/vedeu/output/border_test.rb +357 -0
  175. data/test/lib/vedeu/output/compositor_test.rb +61 -15
  176. data/test/lib/vedeu/output/output_test.rb +25 -84
  177. data/test/lib/vedeu/output/viewport_test.rb +171 -45
  178. data/test/lib/vedeu/output/writer_test.rb +45 -0
  179. data/test/lib/vedeu/{colours → presentation}/background_test.rb +0 -0
  180. data/test/lib/vedeu/{colours → presentation}/colour_test.rb +5 -5
  181. data/test/lib/vedeu/{colours → presentation}/foreground_test.rb +0 -0
  182. data/test/lib/vedeu/presentation/presentation_test.rb +56 -0
  183. data/test/lib/vedeu/presentation/style_test.rb +69 -0
  184. data/test/lib/vedeu/presentation/translator_test.rb +63 -0
  185. data/test/lib/vedeu/repositories/all_test.rb +7 -0
  186. data/test/lib/vedeu/repositories/menus_test.rb +3 -156
  187. data/test/lib/vedeu/repositories/repository_test.rb +271 -0
  188. data/test/lib/vedeu/support/bounding_area_test.rb +3 -3
  189. data/test/lib/vedeu/support/coercions_test.rb +39 -0
  190. data/test/lib/vedeu/support/common_test.rb +31 -16
  191. data/test/lib/vedeu/support/console_test.rb +85 -0
  192. data/test/lib/vedeu/support/content_geometry_test.rb +107 -0
  193. data/test/lib/vedeu/support/coordinate_test.rb +190 -0
  194. data/test/lib/vedeu/support/esc_test.rb +18 -0
  195. data/test/lib/vedeu/support/grid_test.rb +15 -10
  196. data/test/lib/vedeu/support/log_test.rb +3 -0
  197. data/test/lib/vedeu/support/position_test.rb +22 -2
  198. data/test/lib/vedeu/support/position_validator_test.rb +11 -0
  199. data/test/lib/vedeu/support/read_test.rb +88 -0
  200. data/test/lib/vedeu/support/refresh_test.rb +44 -12
  201. data/test/lib/vedeu/support/sentence_test.rb +6 -4
  202. data/test/lib/vedeu/support/terminal_test.rb +81 -70
  203. data/test/lib/vedeu/support/text_test.rb +93 -0
  204. data/test/lib/vedeu/support/trace_test.rb +21 -9
  205. data/test/lib/vedeu/support/visible_test.rb +148 -0
  206. data/test/lib/vedeu/support/write_test.rb +136 -0
  207. data/test/lib/vedeu/traps_test.rb +11 -0
  208. data/test/lib/vedeu_test.rb +2 -0
  209. data/test/support/helpers/all.rb +7 -0
  210. data/test/support/helpers/dsl_model_test_class.rb +25 -0
  211. data/test/support/{test_classes → helpers}/helpers.rb +0 -2
  212. data/test/support/helpers/misc.rb +15 -0
  213. data/test/support/helpers/model_test_class.rb +34 -0
  214. data/test/support/{test_classes → helpers}/presentation.rb +0 -0
  215. data/test/support/{test_classes → helpers}/repositories.rb +3 -3
  216. data/test/support/{test_modules/repository.rb → helpers/repository_test_module.rb} +5 -1
  217. data/test/test_helper.rb +19 -22
  218. data/vedeu.gemspec +11 -6
  219. metadata +322 -181
  220. data/lib/vedeu/api/api.rb +0 -239
  221. data/lib/vedeu/api/composition.rb +0 -38
  222. data/lib/vedeu/api/defined.rb +0 -52
  223. data/lib/vedeu/api/helpers.rb +0 -161
  224. data/lib/vedeu/api/interface.rb +0 -287
  225. data/lib/vedeu/api/keymap.rb +0 -75
  226. data/lib/vedeu/api/line.rb +0 -107
  227. data/lib/vedeu/api/menu.rb +0 -111
  228. data/lib/vedeu/api/stream.rb +0 -96
  229. data/lib/vedeu/models/border.rb +0 -238
  230. data/lib/vedeu/models/char.rb +0 -43
  231. data/lib/vedeu/models/composition.rb +0 -72
  232. data/lib/vedeu/models/line.rb +0 -100
  233. data/lib/vedeu/models/stream.rb +0 -130
  234. data/lib/vedeu/models/style.rb +0 -52
  235. data/lib/vedeu/repositories/buffers.rb +0 -52
  236. data/lib/vedeu/repositories/cursors.rb +0 -64
  237. data/lib/vedeu/repositories/events.rb +0 -147
  238. data/lib/vedeu/repositories/groups.rb +0 -47
  239. data/lib/vedeu/repositories/interfaces.rb +0 -78
  240. data/lib/vedeu/repositories/keymaps.rb +0 -196
  241. data/lib/vedeu/repositories/models/cursor.rb +0 -209
  242. data/lib/vedeu/repositories/models/interface.rb +0 -163
  243. data/lib/vedeu/repositories/models/keymap.rb +0 -111
  244. data/lib/vedeu/repositories/models/offset.rb +0 -91
  245. data/lib/vedeu/repositories/offsets.rb +0 -69
  246. data/lib/vedeu/support/exceptions.rb +0 -34
  247. data/lib/vedeu/support/keymap_validator.rb +0 -100
  248. data/lib/vedeu/support/model.rb +0 -14
  249. data/lib/vedeu/support/presentation.rb +0 -86
  250. data/lib/vedeu/support/registrar.rb +0 -53
  251. data/test/integration/api/api_test.rb +0 -97
  252. data/test/integration/api_dsl/dsl_api_test.rb +0 -4
  253. data/test/integration/api_dsl/dsl_composition_test.rb +0 -4
  254. data/test/integration/api_dsl/dsl_defined_test.rb +0 -4
  255. data/test/integration/api_dsl/dsl_helpers_test.rb +0 -4
  256. data/test/integration/api_dsl/dsl_interface_test.rb +0 -4
  257. data/test/integration/api_dsl/dsl_keymap.rb +0 -4
  258. data/test/integration/api_dsl/dsl_line_test.rb +0 -4
  259. data/test/integration/api_dsl/dsl_menu_test.rb +0 -4
  260. data/test/integration/api_dsl/dsl_stream_test.rb +0 -138
  261. data/test/integration/cursors_test.rb +0 -9
  262. data/test/integration/defining_interfaces_test.rb +0 -26
  263. data/test/integration/run_once_test.rb +0 -26
  264. data/test/integration/views/basic_view_test.rb +0 -807
  265. data/test/lib/vedeu/api/api_test.rb +0 -204
  266. data/test/lib/vedeu/api/composition_test.rb +0 -31
  267. data/test/lib/vedeu/api/defined_test.rb +0 -79
  268. data/test/lib/vedeu/api/helpers_test.rb +0 -111
  269. data/test/lib/vedeu/api/interface_test.rb +0 -410
  270. data/test/lib/vedeu/api/keymap_test.rb +0 -65
  271. data/test/lib/vedeu/api/line_test.rb +0 -83
  272. data/test/lib/vedeu/api/menu_test.rb +0 -85
  273. data/test/lib/vedeu/api/stream_test.rb +0 -59
  274. data/test/lib/vedeu/colours/translator_test.rb +0 -22
  275. data/test/lib/vedeu/models/border_test.rb +0 -197
  276. data/test/lib/vedeu/models/char_test.rb +0 -52
  277. data/test/lib/vedeu/models/composition_test.rb +0 -45
  278. data/test/lib/vedeu/models/key_test.rb +0 -43
  279. data/test/lib/vedeu/models/line_test.rb +0 -123
  280. data/test/lib/vedeu/models/stream_test.rb +0 -233
  281. data/test/lib/vedeu/models/style_test.rb +0 -59
  282. data/test/lib/vedeu/repositories/buffers_test.rb +0 -37
  283. data/test/lib/vedeu/repositories/cursors_test.rb +0 -62
  284. data/test/lib/vedeu/repositories/events_test.rb +0 -57
  285. data/test/lib/vedeu/repositories/groups_test.rb +0 -28
  286. data/test/lib/vedeu/repositories/interfaces_test.rb +0 -51
  287. data/test/lib/vedeu/repositories/keymaps_test.rb +0 -223
  288. data/test/lib/vedeu/repositories/models/buffer_test.rb +0 -174
  289. data/test/lib/vedeu/repositories/models/cursor_test.rb +0 -158
  290. data/test/lib/vedeu/repositories/models/event_test.rb +0 -53
  291. data/test/lib/vedeu/repositories/models/group_test.rb +0 -98
  292. data/test/lib/vedeu/repositories/models/interface_test.rb +0 -130
  293. data/test/lib/vedeu/repositories/models/keymap_test.rb +0 -27
  294. data/test/lib/vedeu/repositories/models/menu_test.rb +0 -246
  295. data/test/lib/vedeu/repositories/models/offset_test.rb +0 -128
  296. data/test/lib/vedeu/repositories/offsets_test.rb +0 -39
  297. data/test/lib/vedeu/support/keymap_validator_test.rb +0 -62
  298. data/test/lib/vedeu/support/model_test.rb +0 -23
  299. data/test/lib/vedeu/support/presentation_test.rb +0 -53
  300. data/test/lib/vedeu/support/registrar_test.rb +0 -94
  301. data/test/lib/vedeu/support/repository_test.rb +0 -208
  302. data/test/support/test_classes/all.rb +0 -5
  303. data/test/support/test_classes/coercions.rb +0 -16
  304. data/test/support/test_classes/model.rb +0 -23
  305. data/test/support/test_modules/all.rb +0 -1
@@ -1,94 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- describe Registrar do
6
-
7
- let(:described) { Registrar.new(attributes) }
8
- let(:attributes) {
9
- {
10
- name: 'mendelevium',
11
- group: 'elements'
12
- }
13
- }
14
-
15
- before do
16
- Buffers.reset
17
- Interfaces.reset
18
- Groups.reset
19
- Focus.reset
20
- end
21
-
22
- describe '.record' do
23
- it 'raises an exception if the attributes does not have a :name key' do
24
- attributes = { no_name_key: '' }
25
-
26
- proc { Registrar.record(attributes) }.must_raise(MissingRequired)
27
- end
28
-
29
- it 'raises an exception if the value for :name is nil' do
30
- attributes = { name: nil }
31
-
32
- proc { Registrar.record(attributes) }.must_raise(MissingRequired)
33
- end
34
-
35
- it 'raises an exception if the value for :name is empty' do
36
- attributes = { name: '' }
37
-
38
- proc { Registrar.record(attributes) }.must_raise(MissingRequired)
39
- end
40
-
41
- it 'sends the attributes to the Buffers repository' do
42
- Registrar.record(attributes)
43
-
44
- Buffers.registered?('mendelevium').must_equal(true)
45
- end
46
-
47
- it 'sends the attributes to the Offsets repository' do
48
- Registrar.record(attributes)
49
-
50
- Offsets.registered?('mendelevium').must_equal(true)
51
- end
52
-
53
- it 'sends the attributes to the Interfaces repository' do
54
- Registrar.record(attributes)
55
-
56
- Interfaces.registered?('mendelevium').must_equal(true)
57
- end
58
-
59
- it 'sends the attributes to the Cursors repository' do
60
- Registrar.record(attributes)
61
-
62
- Cursors.registered?('mendelevium').must_equal(true)
63
- end
64
-
65
- it 'sends the attributes to the Groups repository' do
66
- Registrar.record(attributes)
67
-
68
- Groups.registered?('elements').must_equal(true)
69
- end
70
-
71
- it 'sends the attributes to the Focus repository' do
72
- Registrar.record(attributes)
73
-
74
- Focus.registered?('mendelevium').must_equal(true)
75
- end
76
-
77
- end
78
-
79
- describe '.reset!' do
80
- it { Registrar.reset!.must_be_instance_of(TrueClass) }
81
-
82
- it 'removes all entities from all repositories' do
83
- skip
84
- end
85
- end
86
-
87
- describe '#initialize' do
88
- it { return_type_for(described, Registrar) }
89
- it { assigns(described, '@attributes', attributes) }
90
- end
91
-
92
- end # Registrar
93
-
94
- end # Vedeu
@@ -1,208 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Vedeu
4
-
5
- describe Repository do
6
-
7
- describe '#all' do
8
- it 'returns a Hash' do
9
- RepositoriesTestClass.new.all.must_be_instance_of(Hash)
10
- end
11
-
12
- it 'returns the whole repository' do
13
- RepositoriesTestClass.new.all.must_equal({})
14
- end
15
- end
16
-
17
- describe '#empty?' do
18
- it 'returns true when the storage is empty' do
19
- RepositoriesTestClass.new.empty?.must_equal(true)
20
- end
21
-
22
- it 'returns false when the storage is not empty' do
23
- RepositoriesTestClass.new({ key: :value }).empty?.must_equal(false)
24
- end
25
- end
26
-
27
- describe '#find' do
28
- it 'raises an exception when the model cannot be found' do
29
- proc {
30
- RepositoriesTestClass.new.find('terbium')
31
- }.must_raise(ModelNotFound)
32
- end
33
-
34
- context 'when the model is found' do
35
- it 'returns the stored model' do
36
- model = { key: :value }
37
- repo = RepositoriesTestClass.new
38
- repo.add({ 'terbium' => model })
39
-
40
- repo.find('terbium').must_equal(model)
41
- end
42
- end
43
- end
44
-
45
- describe '#find_or_create' do
46
- context 'when the model is found by name' do
47
- it 'returns the storage model' do
48
- skip
49
- end
50
- end
51
-
52
- context 'when the model is not found by name' do
53
- it 'stores the newly created model' do
54
- skip
55
- end
56
-
57
- it 'returns the newly created model' do
58
- skip
59
- end
60
- end
61
- end
62
-
63
- describe '#registered' do
64
- it 'returns an Array' do
65
- RepositoriesTestClass.new.registered.must_be_instance_of(Array)
66
- end
67
-
68
- context 'when the storage is a Hash' do
69
- it 'returns a collection of the names of all the registered entities' do
70
- repo = RepositoriesTestClass.new
71
- repo.add({ 'rutherfordium' => { name: 'rutherfordium' } })
72
-
73
- repo.registered.must_equal(['rutherfordium'])
74
- end
75
- end
76
-
77
- context 'when the storage is an Array' do
78
- it 'returns the registered entities' do
79
- repo = RepositoriesTestClass.new([])
80
- repo.add('rutherfordium')
81
-
82
- repo.registered.must_equal(['rutherfordium'])
83
- end
84
- end
85
-
86
- context 'when the storage is a Set' do
87
- it 'returns the registered entities' do
88
- repo = RepositoriesTestClass.new(Set.new)
89
- repo.add('rutherfordium')
90
-
91
- repo.registered.must_equal(['rutherfordium'])
92
- end
93
- end
94
-
95
- it 'returns an empty collection when the storage is empty' do
96
- RepositoriesTestClass.new.registered.must_equal([])
97
- end
98
- end
99
-
100
- describe '#registered?' do
101
- it 'returns false when the storage is empty' do
102
- RepositoriesTestClass.new.registered?('terbium').must_equal(false)
103
- end
104
-
105
- it 'returns false when the model is not registered' do
106
- repo = RepositoriesTestClass.new
107
- repo.add({ name: 'samarium' })
108
-
109
- repo.registered?('terbium').must_equal(false)
110
- end
111
-
112
- it 'returns true when the model is registered' do
113
- skip
114
-
115
- repo = RepositoriesTestClass.new
116
- repo.add({ name: 'samarium' })
117
-
118
- repo.registered?('samarium').must_equal(true)
119
- end
120
- end
121
-
122
- describe '#remove' do
123
- context 'when the storage is empty' do
124
- it 'returns false' do
125
- test_repo = RepositoriesTestClass.new
126
- test_repo.remove('francium').must_equal(false)
127
- end
128
- end
129
-
130
- context 'when the model is not registered' do
131
- it 'returns false' do
132
- test_repo = RepositoriesTestClass.new
133
- test_repo.add({
134
- 'gadolinium' => 'rare-earth metal',
135
- 'samarium' => 'a hard silvery metal'
136
- })
137
- test_repo.remove('francium').must_equal(false)
138
- end
139
- end
140
-
141
- context 'when the model is registered' do
142
- it 'returns the storage with the model removed' do
143
- test_repo = RepositoriesTestClass.new
144
- test_repo.add({
145
- 'gadolinium' => 'rare-earth metal',
146
- 'samarium' => 'a hard silvery metal'
147
- })
148
- test_repo.remove('samarium').must_equal({
149
- 'gadolinium' => 'rare-earth metal',
150
- })
151
- end
152
- end
153
-
154
- context 'alias method: #destroy' do
155
- it 'returns the storage with the model removed' do
156
- test_repo = RepositoriesTestClass.new
157
- test_repo.add({
158
- 'gadolinium' => 'rare-earth metal',
159
- 'samarium' => 'a hard silvery metal'
160
- })
161
- test_repo.destroy('samarium').must_equal({
162
- 'gadolinium' => 'rare-earth metal',
163
- })
164
- end
165
- end
166
-
167
- context 'alias method; #delete' do
168
- it 'returns the storage with the model removed' do
169
- test_repo = RepositoriesTestClass.new
170
- test_repo.add({
171
- 'gadolinium' => 'rare-earth metal',
172
- 'samarium' => 'a hard silvery metal'
173
- })
174
- test_repo.delete('samarium').must_equal({
175
- 'gadolinium' => 'rare-earth metal',
176
- })
177
- end
178
- end
179
- end
180
-
181
- describe '#reset' do
182
- it 'returns a Hash' do
183
- RepositoriesTestClass.new.reset.must_be_instance_of(Hash)
184
- end
185
-
186
- it 'resets the repository' do
187
- RepositoriesTestClass.new.reset.must_equal({})
188
- end
189
- end
190
-
191
- describe '#store' do
192
- let(:attributes) {
193
- {
194
- name: 'hydrogen'
195
- }
196
- }
197
- let(:model) { ModelTestClass.new(attributes) }
198
-
199
- subject { RepositoriesTestClass.new.store(model) }
200
-
201
- it 'returns the model' do
202
- subject.must_be_instance_of(model.class)
203
- end
204
- end
205
-
206
- end # Repository
207
-
208
- end # Vedeu
@@ -1,5 +0,0 @@
1
- require 'support/test_classes/coercions'
2
- require 'support/test_classes/helpers'
3
- require 'support/test_classes/model'
4
- require 'support/test_classes/presentation'
5
- require 'support/test_classes/repositories'
@@ -1,16 +0,0 @@
1
- module Vedeu
2
-
3
- class CoercionsTestClass
4
-
5
- include Coercions
6
-
7
- attr_reader :attributes
8
-
9
- def initialize(attributes = {})
10
- @attributes = attributes
11
- @name = attributes[:name]
12
- end
13
-
14
- end # CoercionsTestClass
15
-
16
- end # Vedeu
@@ -1,23 +0,0 @@
1
- module Vedeu
2
-
3
- class ModelTestClass
4
-
5
- include Vedeu::Model
6
-
7
- attr_reader :name
8
-
9
- def initialize(attributes = {})
10
- @attributes = attributes
11
-
12
- @name = @attributes[:name]
13
- end
14
-
15
- private
16
-
17
- def repository
18
- Vedeu::RepositoryTestModule
19
- end
20
-
21
- end # ModelTestClass
22
-
23
- end # Vedeu
@@ -1 +0,0 @@
1
- require 'support/test_modules/repository'