card 1.19.6 → 1.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (298) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/card.gemspec +8 -7
  4. data/config/initializers/01_core_extensions/array.rb +4 -0
  5. data/config/initializers/01_core_extensions/persistent_identifiers.rb +12 -0
  6. data/config/initializers/02_patches/better_errors.rb +56 -0
  7. data/config/initializers/core_extensions.rb +13 -18
  8. data/config/initializers/patches.rb +8 -0
  9. data/config/locales/de.yml +0 -2
  10. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +22 -12
  11. data/db/migrate_core_cards/20161102202156_tweak_recaptcha_setting_cards.rb +17 -0
  12. data/db/migrate_core_cards/20161103154836_update_keys.rb +46 -0
  13. data/lib/card.rb +1 -8
  14. data/lib/card/act_manager.rb +4 -0
  15. data/lib/card/auth/permissions.rb +5 -3
  16. data/lib/card/cache.rb +1 -20
  17. data/lib/card/cache/persistent.rb +6 -0
  18. data/lib/card/content/chunk.rb +4 -3
  19. data/lib/card/content/diff.rb +2 -2
  20. data/lib/card/content/diff/result.rb +11 -0
  21. data/lib/card/env/success.rb +4 -0
  22. data/lib/card/error.rb +2 -0
  23. data/lib/card/format.rb +14 -17
  24. data/lib/card/format/content.rb +16 -8
  25. data/lib/card/format/error.rb +3 -5
  26. data/lib/card/format/names.rb +22 -16
  27. data/lib/card/format/nest.rb +67 -61
  28. data/lib/card/format/nest/fetch.rb +40 -33
  29. data/lib/card/format/nest/main.rb +39 -19
  30. data/lib/card/format/nest/subformat.rb +3 -16
  31. data/lib/card/format/nest/view.rb +23 -32
  32. data/lib/card/format/permission.rb +49 -34
  33. data/lib/card/format/registration.rb +12 -6
  34. data/lib/card/format/render.rb +62 -73
  35. data/lib/card/migration.rb +14 -10
  36. data/lib/card/migration/import.rb +20 -19
  37. data/lib/card/migration/import/import_data.rb +50 -59
  38. data/lib/card/migration/import/import_data/card_attributes.rb +56 -0
  39. data/lib/card/migration/import/import_data/card_content.rb +33 -0
  40. data/lib/card/migration/import/merger.rb +47 -0
  41. data/lib/card/mod/loader.rb +4 -4
  42. data/lib/card/model/save_helper.rb +49 -10
  43. data/lib/card/name.rb +16 -52
  44. data/lib/card/name/fields_and_traits.rb +67 -0
  45. data/lib/card/name/variants.rb +17 -0
  46. data/lib/card/query.rb +6 -2
  47. data/lib/card/query/attributes.rb +1 -1
  48. data/lib/card/query/interpretation.rb +3 -3
  49. data/lib/card/set/event.rb +2 -1
  50. data/lib/card/set/format.rb +18 -7
  51. data/lib/card/set_pattern.rb +17 -13
  52. data/lib/card/tasks/card.rake +1 -1
  53. data/lib/card/view.rb +55 -0
  54. data/lib/card/view/cache.rb +90 -0
  55. data/lib/card/view/fetch.rb +109 -0
  56. data/lib/card/view/options.rb +164 -0
  57. data/lib/card/view/stub.rb +30 -0
  58. data/lib/card/view/visibility.rb +95 -0
  59. data/lib/cardio.rb +3 -2
  60. data/lib/cardio/schema.rb +21 -8
  61. data/lib/generators/card.rb +16 -2
  62. data/lib/generators/card/format/format_generator.rb +10 -9
  63. data/lib/generators/card/migration/migration_generator.rb +10 -5
  64. data/lib/generators/card/set/USAGE +1 -1
  65. data/lib/generators/card/set/set_generator.rb +11 -9
  66. data/mod/account/set/right/account.rb +38 -40
  67. data/mod/account/set/right/token.rb +2 -1
  68. data/mod/account/set/self/account_links.rb +34 -54
  69. data/mod/account/set/self/signin.rb +107 -93
  70. data/mod/account/set/type/signup.rb +33 -32
  71. data/mod/account/set/type/user.rb +28 -21
  72. data/mod/account/spec/set/all/account_spec.rb +9 -9
  73. data/mod/account/spec/set/right/account_spec.rb +23 -14
  74. data/mod/account/spec/set/right/email_spec.rb +6 -6
  75. data/mod/account/spec/set/right/password_spec.rb +4 -4
  76. data/mod/account/spec/set/right/token_spec.rb +3 -3
  77. data/mod/account/spec/set/self/account_links_spec.rb +3 -3
  78. data/mod/account/spec/set/self/signin_spec.rb +2 -2
  79. data/mod/account/spec/set/type/signup_spec.rb +7 -8
  80. data/mod/ace_editor/set/abstract/ace_editor.rb +1 -4
  81. data/mod/admin/set/self/admin.rb +2 -2
  82. data/mod/admin/set/self/admin_info.rb +1 -1
  83. data/mod/admin/set/self/recaptcha_private_key.rb +3 -0
  84. data/mod/admin/set/self/recaptcha_proxy.rb +3 -0
  85. data/mod/admin/set/self/recaptcha_public_key.rb +3 -0
  86. data/mod/admin/set/self/trash.rb +4 -4
  87. data/mod/admin/spec/set/self/admin_spec.rb +4 -4
  88. data/mod/admin/spec/set/self/version_spec.rb +1 -1
  89. data/mod/basic_formats/set/all/all_css.rb +3 -3
  90. data/mod/basic_formats/set/all/all_csv.rb +6 -6
  91. data/mod/basic_formats/set/all/all_js.rb +4 -0
  92. data/mod/basic_formats/set/all/base.rb +40 -62
  93. data/mod/basic_formats/set/all/json.rb +34 -39
  94. data/mod/basic_formats/set/all/rss.rb +6 -6
  95. data/mod/basic_formats/set/all/text.rb +3 -2
  96. data/mod/basic_formats/set/self/01_head/javascript.rb +2 -2
  97. data/mod/basic_formats/set/self/head.rb +6 -10
  98. data/mod/basic_formats/spec/set/all/all_css_spec.rb +1 -1
  99. data/mod/basic_formats/spec/set/all/all_csv_spec.rb +1 -1
  100. data/mod/basic_formats/spec/set/all/base_spec.rb +8 -5
  101. data/mod/basic_formats/spec/set/all/json_spec.rb +2 -2
  102. data/mod/basic_formats/spec/set/all/rss_spec.rb +4 -4
  103. data/mod/basic_types/set/type/plain_text.rb +3 -5
  104. data/mod/basic_types/spec/set/type/plain_text_spec.rb +2 -2
  105. data/mod/bootstrap/lib/bootstrap.rb +16 -0
  106. data/mod/bootstrap/lib/bootstrap/basic_tags.rb +26 -0
  107. data/mod/bootstrap/lib/bootstrap/component.rb +133 -0
  108. data/mod/bootstrap/lib/bootstrap/component/form.rb +31 -0
  109. data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +38 -0
  110. data/mod/bootstrap/lib/bootstrap/component/layout.rb +83 -0
  111. data/mod/bootstrap/lib/bootstrap/component/panel.rb +9 -0
  112. data/mod/bootstrap/lib/bootstrap/component_loader.rb +30 -0
  113. data/mod/bootstrap/lib/bootstrap/delegate.rb +16 -0
  114. data/mod/bootstrap/lib/bootstrapper.rb +16 -0
  115. data/mod/bootstrap/lib/stylesheets/bootstrap/_tables.scss +55 -52
  116. data/mod/bootstrap/lib/stylesheets/bootstrap/mixins/_table-row.scss +12 -12
  117. data/mod/bootstrap/lib/stylesheets/bootstrap_cards.scss +12 -0
  118. data/mod/bootstrap/set/all/bootstrap/accordion.rb +63 -0
  119. data/mod/bootstrap/set/all/bootstrap/helper.rb +7 -140
  120. data/mod/bootstrap/set/all/bootstrap/navbar.rb +74 -0
  121. data/mod/bootstrap/set/all/bootstrap/table.rb +76 -46
  122. data/mod/bootstrap/set/all/bootstrap/tabs.rb +58 -23
  123. data/mod/bootstrap/set/all/bootstrap/wrapper.rb +14 -8
  124. data/mod/bootstrap/set/all/rich_bootstrap.rb +5 -3
  125. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +31 -0
  126. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +20 -0
  127. data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +59 -1
  128. data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +104 -15
  129. data/mod/carrierwave/set/abstract/attachment.rb +4 -3
  130. data/mod/carrierwave/set/abstract/attachment/paths.rb +1 -1
  131. data/mod/carrierwave/set/abstract/attachment/storage_type.rb +5 -11
  132. data/mod/carrierwave/set/type/file.rb +39 -32
  133. data/mod/carrierwave/set/type/image.rb +59 -34
  134. data/mod/carrierwave/spec/set/type/image_spec.rb +3 -3
  135. data/mod/core/chunk/link.rb +5 -0
  136. data/mod/core/chunk/{include.rb → nest.rb} +8 -29
  137. data/mod/core/chunk/reference.rb +5 -6
  138. data/mod/core/chunk/view_stub.rb +42 -0
  139. data/mod/core/format/html_format.rb +23 -26
  140. data/mod/core/set/abstract/code_file.rb +1 -1
  141. data/mod/core/set/all/actify.rb +1 -1
  142. data/mod/core/set/all/active_card.rb +0 -1
  143. data/mod/core/set/all/{tracked_attributes.rb → assign_attributes.rb} +55 -24
  144. data/mod/core/set/all/collection.rb +136 -122
  145. data/mod/core/set/all/content.rb +8 -0
  146. data/mod/core/set/all/event.rb +5 -2
  147. data/mod/core/set/all/export.rb +7 -7
  148. data/mod/core/set/all/fetch.rb +90 -26
  149. data/mod/core/set/all/initialize.rb +17 -6
  150. data/mod/core/set/all/name.rb +2 -3
  151. data/mod/core/set/all/permissions.rb +19 -11
  152. data/mod/core/set/all/states.rb +12 -2
  153. data/mod/core/set/all/trash.rb +1 -1
  154. data/mod/core/set/all/type.rb +2 -0
  155. data/mod/core/set/all/utils.rb +4 -3
  156. data/mod/core/spec/chunk/literal_spec.rb +2 -2
  157. data/mod/core/spec/chunk/uri_spec.rb +17 -17
  158. data/mod/core/spec/format/html_format_spec.rb +11 -13
  159. data/mod/core/spec/set/all/attribute_tracking_spec.rb +2 -2
  160. data/mod/core/spec/set/all/collection_spec.rb +21 -24
  161. data/mod/core/spec/set/all/content_spec.rb +1 -1
  162. data/mod/core/spec/set/all/export_spec.rb +3 -3
  163. data/mod/core/spec/set/all/fetch_spec.rb +5 -5
  164. data/mod/core/spec/set/all/initialize_spec.rb +4 -4
  165. data/mod/core/spec/set/all/name_spec.rb +6 -6
  166. data/mod/core/spec/set/all/permissions_spec.rb +10 -10
  167. data/mod/core/spec/set/all/references_spec.rb +1 -1
  168. data/mod/core/spec/set/all/rules2_spec.rb +24 -24
  169. data/mod/core/spec/set/all/rules_spec.rb +1 -1
  170. data/mod/core/spec/set/all/templating_spec.rb +8 -8
  171. data/mod/core/spec/set/all/tracked_attributes_spec.rb +6 -6
  172. data/mod/core/spec/set/all/type_spec.rb +5 -5
  173. data/mod/developer/spec/set/all/event_viz_spec.rb +1 -1
  174. data/mod/developer/spec/set/right/debug_spec.rb +1 -1
  175. data/mod/email/set/all/email_html.rb +2 -2
  176. data/mod/email/set/all/notify.rb +8 -3
  177. data/mod/email/set/right/bcc.rb +3 -3
  178. data/mod/email/set/right/follow.rb +5 -5
  179. data/mod/email/set/right/following.rb +1 -1
  180. data/mod/email/set/self/follow_defaults.rb +27 -16
  181. data/mod/email/set/type/email_template.rb +1 -1
  182. data/mod/email/set/type_plus_right/user/follow.rb +10 -9
  183. data/mod/history/lib/card/act.rb +4 -0
  184. data/mod/history/lib/card/act/act_renderer.rb +194 -0
  185. data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +25 -0
  186. data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +41 -0
  187. data/mod/history/lib/card/action.rb +1 -0
  188. data/mod/history/lib/card/action/action_renderer.rb +92 -0
  189. data/mod/history/lib/card/action/differ.rb +6 -1
  190. data/mod/history/set/all/act_view.rb +64 -0
  191. data/mod/history/set/all/action_view.rb +65 -0
  192. data/mod/history/set/all/content_history.rb +44 -37
  193. data/mod/history/set/all/history.rb +49 -263
  194. data/mod/machines/lib/stylesheets/style_cards.scss +30 -115
  195. data/mod/machines/set/abstract/script.rb +42 -7
  196. data/mod/machines/set/right/machine_input.rb +4 -0
  197. data/mod/machines/set/type/coffee_script.rb +8 -22
  198. data/mod/machines/set/type/css.rb +2 -2
  199. data/mod/machines/set/type/java_script.rb +4 -24
  200. data/mod/machines/set/type/scss.rb +1 -1
  201. data/mod/machines/spec/set/type/css_spec.rb +1 -1
  202. data/mod/machines/spec/set/type/scss_spec.rb +3 -3
  203. data/mod/machines/spec/set/type/skin_spec.rb +7 -7
  204. data/mod/pointer/set/abstract/01_pointer.rb +44 -46
  205. data/mod/pointer/set/abstract/01_pointer/edit.rb +13 -13
  206. data/mod/pointer/set/right/options.rb +4 -0
  207. data/mod/pointer/spec/set/type/pointer_spec.rb +7 -7
  208. data/mod/prosemirror_editor/set/abstract/prosemirror_editor.rb +3 -3
  209. data/mod/settings/set/abstract/permission.rb +25 -18
  210. data/mod/settings/set/right/add_help.rb +3 -3
  211. data/mod/settings/set/right/structure.rb +10 -16
  212. data/mod/settings/spec/set/right/comment_spec.rb +3 -3
  213. data/mod/settings/spec/set/right/create_spec.rb +1 -1
  214. data/mod/settings/spec/set/right/style_spec.rb +1 -1
  215. data/mod/settings/spec/set/type/setting_spec.rb +1 -1
  216. data/mod/solid_cache/set/abstract/solid_cache.rb +4 -4
  217. data/mod/solid_cache/set/right/solid_cache.rb +9 -10
  218. data/mod/standard/set/abstract/01_search_params.rb +41 -0
  219. data/mod/standard/set/abstract/search.rb +132 -0
  220. data/mod/standard/set/abstract/search/paging.rb +81 -0
  221. data/mod/standard/set/abstract/search/paging/paging_links.rb +90 -0
  222. data/mod/standard/set/abstract/wql_search.rb +67 -0
  223. data/mod/standard/set/all/error.rb +89 -82
  224. data/mod/standard/set/all/links.rb +1 -1
  225. data/mod/standard/set/all/rich_html/content.rb +125 -141
  226. data/mod/standard/set/all/rich_html/editing.rb +115 -178
  227. data/mod/standard/set/all/rich_html/form.rb +111 -131
  228. data/mod/standard/set/all/rich_html/header.rb +57 -39
  229. data/mod/standard/set/all/rich_html/menu.rb +94 -94
  230. data/mod/standard/set/all/rich_html/modal.rb +5 -10
  231. data/mod/standard/set/all/rich_html/new.rb +103 -0
  232. data/mod/standard/set/all/rich_html/toolbar.rb +54 -74
  233. data/mod/standard/set/all/rich_html/wrapper.rb +111 -138
  234. data/mod/standard/set/rstar/rules.rb +27 -38
  235. data/mod/standard/set/rstar/rules_editor.rb +298 -277
  236. data/mod/standard/set/self/navbox.rb +20 -15
  237. data/mod/standard/set/self/recent.rb +25 -17
  238. data/mod/standard/set/self/search.rb +25 -4
  239. data/mod/standard/set/type/cardtype.rb +11 -9
  240. data/mod/standard/set/type/date.rb +1 -1
  241. data/mod/standard/set/type/number.rb +1 -1
  242. data/mod/standard/set/type/phrase.rb +1 -1
  243. data/mod/standard/set/type/search_type.rb +17 -282
  244. data/mod/standard/set/type/session.rb +1 -1
  245. data/mod/standard/set/type/set.rb +155 -131
  246. data/mod/standard/set/type/toggle.rb +1 -1
  247. data/mod/standard/set/type/uri.rb +4 -4
  248. data/mod/standard/spec/chunk/include_spec.rb +13 -31
  249. data/mod/standard/spec/chunk/link_spec.rb +1 -1
  250. data/mod/standard/spec/set/all/error_spec.rb +1 -1
  251. data/mod/standard/spec/set/all/history_spec.rb +2 -2
  252. data/mod/standard/spec/set/all/rich_html/form_spec.rb +4 -4
  253. data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +22 -0
  254. data/mod/standard/spec/set/all/rich_html/wrapper_spec.rb +3 -2
  255. data/mod/standard/spec/set/right/when_created_spec.rb +1 -1
  256. data/mod/standard/spec/set/right/when_last_edited_spec.rb +1 -1
  257. data/mod/standard/spec/set/rstar/rules_spec.rb +2 -3
  258. data/mod/standard/spec/set/self/head_spec.rb +2 -2
  259. data/mod/standard/spec/set/self/navbox_spec.rb +1 -1
  260. data/mod/standard/spec/set/self/now_spec.rb +1 -1
  261. data/mod/standard/spec/set/type/date_spec.rb +1 -1
  262. data/mod/standard/spec/set/type/email_template_spec.rb +1 -1
  263. data/mod/standard/spec/set/type/layout_type_spec.rb +1 -1
  264. data/mod/standard/spec/set/type/number_spec.rb +1 -1
  265. data/mod/standard/spec/set/type/phrase_spec.rb +1 -1
  266. data/mod/standard/spec/set/type/search_type_spec.rb +2 -2
  267. data/mod/standard/spec/set/type/set_spec.rb +2 -2
  268. data/mod/standard/spec/set/type/toggle_spec.rb +2 -2
  269. data/mod/standard/spec/set/type/uri_spec.rb +3 -1
  270. data/mod/tinymce_editor/set/abstract/tinymce_editor.rb +1 -1
  271. data/spec/config/initializers/core_extensions_spec.rb +40 -10
  272. data/spec/lib/card/auth_spec.rb +8 -8
  273. data/spec/lib/card/cache_spec.rb +3 -3
  274. data/spec/lib/card/chunk_spec.rb +4 -4
  275. data/spec/lib/card/codename_spec.rb +2 -2
  276. data/spec/lib/card/content_spec.rb +23 -23
  277. data/spec/lib/card/diff_spec.rb +1 -1
  278. data/spec/lib/card/format_spec.rb +19 -24
  279. data/spec/lib/card/loader_spec.rb +4 -4
  280. data/spec/lib/card/name_spec.rb +16 -16
  281. data/spec/lib/card/query_spec.rb +80 -80
  282. data/spec/lib/card/reference_spec.rb +5 -5
  283. data/spec/lib/card/set_spec.rb +6 -6
  284. data/spec/lib/card/subcards_spec.rb +14 -0
  285. data/spec/lib/card/view_cache_spec.rb +5 -5
  286. data/spec/models/card/cardtype_spec.rb +15 -15
  287. data/spec/models/card/create_spec.rb +2 -2
  288. data/spec/models/card/trash_spec.rb +24 -24
  289. data/spec/models/card/type_transition_spec.rb +8 -8
  290. data/spec/models/card/validation_spec.rb +5 -5
  291. data/spec/models/card_spec.rb +14 -14
  292. data/spec/spec_helper.rb +6 -2
  293. data/spec/support/card_spec_helper.rb +21 -11
  294. data/spec/support/helper/card_helper.rb +11 -4
  295. metadata +73 -15
  296. data/lib/card/cache/view_cache.rb +0 -103
  297. data/mod/bootstrap/set/all/bootstrap/layout.rb +0 -58
  298. data/mod/core/set/all/view_cache.rb +0 -9
@@ -68,7 +68,7 @@ describe Card::Content::Chunk::Link do
68
68
  href: "http://google.com", text: "http://google.com"
69
69
  end
70
70
 
71
- it "should escape spaces in cardnames with %20 (not +)" do
71
+ it "escapes spaces in cardnames with %20 (not +)" do
72
72
  assert_link '[[Marie "Mad Dog" Deatherage|Marie]]',
73
73
  class: "wanted-card",
74
74
  href: "/Marie_Mad_Dog_Deatherage" \
@@ -2,7 +2,7 @@
2
2
 
3
3
  describe Card::Set::All::Error do
4
4
  describe "missing view" do
5
- it "should prompt to add" do
5
+ it "prompts to add" do
6
6
  expect(render_content("{{+cardipoo|open}}").match(/Add \<span/)).not_to be_nil
7
7
  end
8
8
  end
@@ -4,7 +4,7 @@ describe Card::Set::All::History do
4
4
  # before do
5
5
  # Card.create! name: 'my histoer card'
6
6
  # end
7
- it "should have a frame" do
7
+ it "has a frame" do
8
8
  history = render_card :history, name: "A"
9
9
  assert_view_select history, 'div[class~="card-frame"]'
10
10
  end
@@ -15,7 +15,7 @@ describe Card::Set::All::History do
15
15
  first.format.render_action_summary
16
16
  end
17
17
 
18
- it "should have a summary" do
18
+ it "has a summary" do
19
19
  assert_view_select subject, 'del[class="diffdel diff-deleted"]',
20
20
  text: "chicken"
21
21
  assert_view_select subject, 'ins[class="diffins diff-added"]',
@@ -6,7 +6,7 @@ describe Card::Set::All::RichHtml::Form do
6
6
  @card = Card["UserForm"] # no cards with this type
7
7
  end
8
8
 
9
- it "should get type options from type_field renderer method" do
9
+ it "gets type options from type_field renderer method" do
10
10
  expect(@card.format.type_field).to match(/<option [^>]*selected/)
11
11
  tf = @card.format.type_field(no_current_type: true)
12
12
  expect(tf).not_to match(/<option [^>]*selected/)
@@ -16,7 +16,7 @@ describe Card::Set::All::RichHtml::Form do
16
16
  expect(tf.scan(/<option /).length).to eq(29)
17
17
  end
18
18
 
19
- it "should get type list" do
19
+ it "gets type list" do
20
20
  Card::Auth.as :anonymous do
21
21
  tf = @card.format.type_field(no_current_type: true)
22
22
  expect(tf).not_to match(/<option [^>]*selected/)
@@ -29,14 +29,14 @@ describe Card::Set::All::RichHtml::Form do
29
29
  end
30
30
 
31
31
  context "type and header" do
32
- it "should render type without no-edit class when no cards of type" do
32
+ it "renders type without no-edit class when no cards of type" do
33
33
  card = Card["UserForm"] # no cards with this type
34
34
  expect(card.format.render_type)
35
35
  .to match(/<a[^>]* class="([^"]*)?\bcardtype\b[^"]*"/)
36
36
  expect(card.format.render_type)
37
37
  .not_to match(/<a[^>]* class="([^"]*)?\bno-edit\b[^"]*"/)
38
38
  end
39
- it "should render type header with no-edit class when cards of type exist" do
39
+ it "renders type header with no-edit class when cards of type exist" do
40
40
  no_edit_card = Card["cardtype a"]
41
41
  expect(no_edit_card.format.render_type)
42
42
  .to match(/<a[^>]* class="([^"]*)?\bcardtype\b[^"]*"/)
@@ -0,0 +1,22 @@
1
+ describe Card::Set::All::RichHtml::Toolbar do
2
+ context "show toolbar" do
3
+ subject do
4
+ render_content "{{A|edit}}"
5
+ end
6
+ it "renders toolbar" do
7
+ is_expected.to have_tag "div", with: { class: "SELF-a edit-view" } do
8
+ with_tag "nav", with: { class: "toolbar" }
9
+ end
10
+ end
11
+ end
12
+ context "hidden toolbar" do
13
+ subject do
14
+ render_content "{{A|edit; hide: toolbar}}"
15
+ end
16
+ it "hides toolbar" do
17
+ is_expected.to have_tag "div", with: { class: "SELF-a edit-view" } do
18
+ without_tag "nav", with: { class: "toolbar" }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -21,7 +21,7 @@ describe Card::Set::All::RichHtml::Wrapper do
21
21
  end
22
22
 
23
23
  it "has the appropriate attributes on closed" do
24
- v = @ocslot.render(:closed)
24
+ v = @ocslot.render :closed
25
25
  assert_view_select(
26
26
  v, 'div[class="card-slot closed-view ALL TYPE-basic SELF-a"]'
27
27
  ) do
@@ -29,7 +29,8 @@ describe Card::Set::All::RichHtml::Wrapper do
29
29
  assert_select 'div[class="card-header panel-heading"]' do
30
30
  assert_select 'div[class="card-header-title panel-title"]'
31
31
  end
32
- assert_select 'div[class~="closed-content card-content"]'
32
+ assert_select 'div[class~="card-body card-content"]'
33
+ assert_select 'div[class~="closed-content"]'
33
34
  end
34
35
  end
35
36
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Right::WhenCreated do
4
- it "should produce a text date" do
4
+ it "produces a text date" do
5
5
  expect(render_card(:core, name: "A+*when created")).to match(/\w+ \d+/)
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Right::WhenLastEdited do
4
- it "should produce a text date" do
4
+ it "produces a text date" do
5
5
  expect(render_card(:core, name: "A+*when last edited")).to match(/\w+ \d+/)
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Rstar::Rules do
4
- it "should render setting view for a right set" do
4
+ it "renders setting view for a right set" do
5
5
  r = Card["*read+*right"].format.render_open
6
6
  expect(r).not_to match(/error/i)
7
7
  expect(r).not_to match("No Card!")
@@ -12,12 +12,11 @@ describe Card::Set::Rstar::Rules do
12
12
  end
13
13
  end
14
14
 
15
- it "should render setting view for a *input rule" do
15
+ it "renders setting view for a *input rule" do
16
16
  Card::Auth.as_bot do
17
17
  r = Card.fetch("*read+*right+*input", new: {}).format.render_open_rule
18
18
  expect(r).not_to match(/error/i)
19
19
  expect(r).not_to match("No Card!")
20
- # warn "r = #{r}"
21
20
  assert_view_select r, 'tr[class="card-slot open-rule edit-rule"]' do
22
21
  assert_select 'input[id="success_id"][name=?][type="hidden"]'\
23
22
  '[value="*read+*right+*input"]', "success[id]"
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Self::Head do
4
- it "should have a javascript tag" do
4
+ it "has a javascript tag" do
5
5
  assert_view_select render_card(:raw, name: "*head"),
6
6
  'script[type="text/javascript"]'
7
7
  end
@@ -10,7 +10,7 @@ describe Card::Set::Self::Head do
10
10
  before do
11
11
  @tiny_mce = Card[:tiny_mce]
12
12
  end
13
- it "should handle tinyMCE configuration errors" do
13
+ it "handles tinyMCE configuration errors" do
14
14
  end
15
15
  end
16
16
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Self::Navbox do
4
- it "should have a form" do
4
+ it "has a form" do
5
5
  assert_view_select render_card(:core, name: "*navbox"),
6
6
  "form.navbox-form input.navbox"
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Self::Now do
4
- it "should have a date" do
4
+ it "has a date" do
5
5
  expect(render_card(:raw, name: "*now").match(/\w+day, \w+ \d+, \d{4}/)).not_to be_nil
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Date do
4
- it "should have special editor" do
4
+ it "has special editor" do
5
5
  assert_view_select render_editor("Date"), 'input[class~="date-editor"]'
6
6
  end
7
7
  end
@@ -185,7 +185,7 @@ describe Card::Set::Type::EmailTemplate do
185
185
  Card.create! name: "subject search+*right+*structure",
186
186
  content: %({"referred_to_by":"_left+subject"}),
187
187
  type: "Search"
188
- update_field "*subject", content: "{{+subject search|core;item:core}}"
188
+ update_field "*subject", content: "{{+subject search|core|core}}"
189
189
  expect(subject[:subject]).to eq("a very nutty thang")
190
190
  end
191
191
 
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::LayoutType do
4
- it "should include Html card methods" do
4
+ it "includes Html card methods" do
5
5
  expect(Card.new(type: "Layout").clean_html?).to be_falsey
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Number do
4
- it "should have special editor" do
4
+ it "has special editor" do
5
5
  assert_view_select render_editor("Number"), 'input[type="text"]'
6
6
  end
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Phrase do
4
- it "should have special editor" do
4
+ it "has special editor" do
5
5
  assert_view_select render_editor("Phrase"), 'input[type="text"][class~="card-content"]'
6
6
  end
7
7
  end
@@ -3,11 +3,11 @@
3
3
  describe Card::Set::Type::SearchType do
4
4
  it "wraps search items with correct view class" do
5
5
  Card.create type: "Search", name: "Asearch", content: %({"type":"User"})
6
- c = render_content("{{Asearch|core;item:name}}")
6
+ c = render_content("{{Asearch|core|name}}")
7
7
  expect(c).to match("search-result-item item-name")
8
8
  expect(render_content("{{Asearch|core}}")
9
9
  .scan("search-result-item item-closed").size).to eq(14)
10
- expect(render_content("{{Asearch|core;item:open}}")
10
+ expect(render_content("{{Asearch|core|open}}")
11
11
  .scan("search-result-item item-open").size).to eq(14)
12
12
  expect(render_content("{{Asearch|core|titled}}")
13
13
  .scan("search-result-item item-titled").size).to eq(14)
@@ -2,7 +2,7 @@
2
2
 
3
3
  describe Card::Set::Type::Set do
4
4
  describe :junction_only? do
5
- it "should identify sets that only apply to plus cards" do
5
+ it "identifies sets that only apply to plus cards" do
6
6
  expect(Card.fetch("*all").junction_only?).to be_falsey
7
7
  expect(Card.fetch("*all plus").junction_only?).to be_truthy
8
8
  expect(Card.fetch("Book+*type").junction_only?).to be_falsey
@@ -13,7 +13,7 @@ describe Card::Set::Type::Set do
13
13
  end
14
14
 
15
15
  describe :inheritable? do
16
- it "should identify sets that can inherit rules" do
16
+ it "identifies sets that can inherit rules" do
17
17
  expect(Card.fetch("A+*self").inheritable?).to be_falsey
18
18
  expect(Card.fetch("A+B+*self").inheritable?).to be_truthy
19
19
  expect(Card.fetch("Book+*to+*type plus right").inheritable?).to be_truthy
@@ -1,11 +1,11 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Toggle do
4
- it "should have special editor" do
4
+ it "has special editor" do
5
5
  assert_view_select render_editor("Toggle"), 'input[type="checkbox"]'
6
6
  end
7
7
 
8
- it "should have yes/no as processed content" do
8
+ it "has yes/no as processed content" do
9
9
  expect(render_card(:core, type: "Toggle", content: "0")).to eq("no")
10
10
  expect(render_card(:closed_content, type: "Toggle", content: "1"))
11
11
  .to eq("yes")
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  describe Card::Set::Type::Uri do
4
- it "should have special editor" do
4
+ it "has special editor" do
5
5
  assert_view_select render_editor("Uri"),
6
6
  'input[type="text"][class~="card-content"]'
7
7
  end
@@ -20,6 +20,8 @@ describe Card::Set::Type::Uri do
20
20
  it "renders core view links with title arg" do
21
21
  card = Card.create(type: "URI", name: "A URI card",
22
22
  content: "http://wagn.org/Home")
23
+
24
+
23
25
  assert_view_select(
24
26
  card.format.render("core", title: "My Title"),
25
27
  'a[class="external-link"][href="http://wagn.org/Home"]'
@@ -1,5 +1,5 @@
1
1
  format :html do
2
- view :editor do |_args|
2
+ view :editor do
3
3
  text_area :content, rows: 3, class: "tinymce-textarea card-content",
4
4
  id: unique_id
5
5
  end
@@ -1,17 +1,47 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- describe Hash do
4
- describe "new_nested" do
5
- it "creates nested hashes" do
6
- nested_hash = Hash.new_nested Hash, Hash
7
- expect(nested_hash[:a]).to be_instance_of Hash
8
- expect(nested_hash[:a][:b]).to be_instance_of Hash
9
- expect(nested_hash[:d][:c]).to be_instance_of Hash
3
+ describe CoreExtensions do
4
+ context Hash do
5
+ describe "#new_nested" do
6
+ it "creates nested hashes" do
7
+ nested_hash = Hash.new_nested Hash, Hash
8
+ expect(nested_hash[:a]).to be_instance_of Hash
9
+ expect(nested_hash[:a][:b]).to be_instance_of Hash
10
+ expect(nested_hash[:d][:c]).to be_instance_of Hash
11
+ end
12
+
13
+ it "creates set in hash" do
14
+ nested_hash = Hash.new_nested ::Set
15
+ expect(nested_hash[:a]).to be_instance_of ::Set
16
+ end
10
17
  end
18
+ end
19
+
20
+ context CoreExtensions::PersistentIdentifier do
21
+ describe "#cardname" do
22
+ subject { :wagn_bot.cardname }
23
+ it "converts into a cardname" do
24
+ is_expected.to be_instance_of Card::Name
25
+ expect(subject.s).to eq "Wagn Bot"
26
+ end
27
+ end
28
+
29
+ describe "#card" do
30
+ context "called on Integer" do
31
+ subject { Card::LogoID.card }
32
+ it "converts into a card" do
33
+ is_expected.to be_instance_of Card
34
+ expect(subject.id).to eq Card::LogoID
35
+ end
36
+ end
11
37
 
12
- it "creates set in hash" do
13
- nested_hash = Hash.new_nested ::Set
14
- expect(nested_hash[:a]).to be_instance_of ::Set
38
+ context "called on Symbol" do
39
+ subject { :logo.card }
40
+ it "converts into a card" do
41
+ is_expected.to be_instance_of Card
42
+ expect(subject.key).to eq(:logo.cardname.key)
43
+ end
44
+ end
15
45
  end
16
46
  end
17
47
  end
@@ -6,32 +6,32 @@ describe Card::Auth do
6
6
  @joeuserid = Card["Joe User"].id
7
7
  end
8
8
 
9
- it "should authenticate user" do
9
+ it "authenticates user" do
10
10
  authenticated = Card::Auth.authenticate "joe@user.com", "joe_pass"
11
11
  expect(authenticated.left_id).to eq(@joeuserid)
12
12
  end
13
13
 
14
- it "should authenticate user despite whitespace" do
14
+ it "authenticates user despite whitespace" do
15
15
  authenticated = Card::Auth.authenticate " joe@user.com ", " joe_pass "
16
16
  expect(authenticated.left_id).to eq(@joeuserid)
17
17
  end
18
18
 
19
- it "should authenticate user with weird email capitalization" do
19
+ it "authenticates user with weird email capitalization" do
20
20
  authenticated = Card::Auth.authenticate "JOE@user.com", "joe_pass"
21
21
  expect(authenticated.left_id).to eq(@joeuserid)
22
22
  end
23
23
 
24
- it "should set current directly from email" do
24
+ it "sets current directly from email" do
25
25
  Card::Auth.current= "joe@user.com"
26
26
  expect(Card::Auth.current_id).to eq(@joeuserid)
27
27
  end
28
28
 
29
- it "should set current directly from id when mark is id" do
29
+ it "sets current directly from id when mark is id" do
30
30
  Card::Auth.current= @joeuserid
31
31
  expect(Card::Auth.current_id).to eq(@joeuserid)
32
32
  end
33
33
 
34
- it "should set current directly from id when mark is id" do
34
+ it "sets current directly from id when mark is id" do
35
35
  Card::Auth.current= @joeuserid
36
36
  expect(Card::Auth.current_id).to eq(@joeuserid)
37
37
  end
@@ -45,12 +45,12 @@ describe Card::Auth do
45
45
  end
46
46
  end
47
47
 
48
- it "should set current from token" do
48
+ it "sets current from token" do
49
49
  Card::Auth.set_current_from_token @token
50
50
  expect(Card::Auth.current_id).to eq(@joeadmin.id)
51
51
  end
52
52
 
53
- it "should set arbitrary current from token on authorized account" do
53
+ it "sets arbitrary current from token on authorized account" do
54
54
  Card::Auth.set_current_from_token @token, @joeuserid
55
55
  expect(Card::Auth.current_id).to eq(@joeuserid)
56
56
  end
@@ -7,7 +7,7 @@ describe Card::Cache do
7
7
  end
8
8
 
9
9
  describe "#basic operations" do
10
- it "should work" do
10
+ it "works" do
11
11
  @cache.write("a", "foo")
12
12
  expect(@cache.read("a")).to eq("foo")
13
13
  @cache.fetch("b") { "bar" }
@@ -90,7 +90,7 @@ describe Card::Cache do
90
90
  end
91
91
 
92
92
  describe "#basic operations with special symbols" do
93
- it "should work" do
93
+ it "works" do
94
94
  @cache.write('%\\/*:?"<>|', "foo")
95
95
  cache2 = Card::Cache.new store: @hard, prefix: "prefix"
96
96
  expect(cache2.read('%\\/*:?"<>|')).to eq("foo")
@@ -99,7 +99,7 @@ describe Card::Cache do
99
99
  end
100
100
 
101
101
  describe "#basic operations with non-latin symbols" do
102
- it "should work" do
102
+ it "works" do
103
103
  @cache.write("(汉语漢語 Hànyǔ; 华语華語 Huáyǔ; 中文 Zhōngwén", "foo")
104
104
  @cache.write("русский", "foo")
105
105
  cache3 = Card::Cache.new store: @hard, prefix: "prefix"