ppl 3.0.0 → 4.0.3

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 (334) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +16 -0
  3. data/.eleventy.js +86 -0
  4. data/.eleventyignore +1 -0
  5. data/.github/workflows/build.yml +61 -0
  6. data/.gitignore +3 -1
  7. data/Rakefile +1 -18
  8. data/{CODE_OF_CONDUCT.md → code_of_conduct.md} +1 -1
  9. data/features/step_definitions/ppl_steps.rb +27 -27
  10. data/gh-pages/Gemfile +2 -0
  11. data/gh-pages/_config.yml +5 -0
  12. data/gh-pages/_includes/changelog.html +23 -0
  13. data/gh-pages/_includes/development-sidebar.html +25 -0
  14. data/gh-pages/_includes/footer.html +22 -0
  15. data/gh-pages/_includes/header.html +43 -0
  16. data/gh-pages/_includes/news.html +36 -0
  17. data/gh-pages/_includes/tip.html +54 -0
  18. data/gh-pages/_layouts/changelog.html +1 -0
  19. data/gh-pages/_layouts/command.html +104 -0
  20. data/gh-pages/_layouts/configuration.html +71 -0
  21. data/gh-pages/_layouts/development.html +20 -0
  22. data/gh-pages/_layouts/frontpage.html +6 -0
  23. data/gh-pages/_layouts/integration.html +44 -0
  24. data/gh-pages/_layouts/news.html +2 -0
  25. data/gh-pages/_layouts/page.html +6 -0
  26. data/gh-pages/_layouts/tip.html +2 -0
  27. data/gh-pages/_posts/2012-01-15-first-post.md +16 -0
  28. data/gh-pages/_posts/2012-12-20-1.0.0.md +19 -0
  29. data/gh-pages/_posts/2012-12-20-1.1.0.md +28 -0
  30. data/gh-pages/_posts/2012-12-20-1.2.0.md +18 -0
  31. data/gh-pages/_posts/2012-12-21-1.3.0.md +20 -0
  32. data/gh-pages/_posts/2012-12-21-thank-you-for-your-all-your-feedback.md +26 -0
  33. data/gh-pages/_posts/2012-12-22-1.4.1.md +21 -0
  34. data/gh-pages/_posts/2012-12-22-1.5.0.md +17 -0
  35. data/gh-pages/_posts/2012-12-23-1.5.1.md +13 -0
  36. data/gh-pages/_posts/2012-12-23-1.5.2.md +15 -0
  37. data/gh-pages/_posts/2012-12-26-1.5.3.md +19 -0
  38. data/gh-pages/_posts/2012-12-27-1.6.0.md +18 -0
  39. data/gh-pages/_posts/2012-12-29-1.7.0.md +18 -0
  40. data/gh-pages/_posts/2013-01-05-1.8.0.md +18 -0
  41. data/gh-pages/_posts/2013-01-06-1.9.0.md +20 -0
  42. data/gh-pages/_posts/2013-01-10-1.10.0.md +18 -0
  43. data/gh-pages/_posts/2013-01-20-1.11.0.md +14 -0
  44. data/gh-pages/_posts/2013-02-16-1.12.0.md +14 -0
  45. data/gh-pages/_posts/2013-02-17-1.13.0.md +29 -0
  46. data/gh-pages/_posts/2013-02-17-1.14.0.md +15 -0
  47. data/gh-pages/_posts/2013-02-17-1.14.1.md +18 -0
  48. data/gh-pages/_posts/2013-02-17-two-months-in.md +27 -0
  49. data/gh-pages/_posts/2013-03-16-1.15.0.md +28 -0
  50. data/gh-pages/_posts/2013-03-16-coloured-output-released.md +27 -0
  51. data/gh-pages/_posts/2013-04-10-ruby-2.0-compatibility.md +28 -0
  52. data/gh-pages/_posts/2013-04-11-1.15.1.md +13 -0
  53. data/gh-pages/_posts/2013-04-12-1.16.0.md +22 -0
  54. data/gh-pages/_posts/2013-04-14-1.17.0.md +15 -0
  55. data/gh-pages/_posts/2013-04-14-1.17.1.md +20 -0
  56. data/gh-pages/_posts/2013-04-14-1.17.2.md +13 -0
  57. data/gh-pages/_posts/2013-04-15-sync-alias.md +31 -0
  58. data/gh-pages/_posts/2013-04-15-utf8-fixed-and-more.md +37 -0
  59. data/gh-pages/_posts/2013-04-16-1.18.0.md +15 -0
  60. data/gh-pages/_posts/2013-04-16-set-up-color-output.md +47 -0
  61. data/gh-pages/_posts/2013-04-19-1.19.0.md +13 -0
  62. data/gh-pages/_posts/2013-04-19-1.20.0.md +15 -0
  63. data/gh-pages/_posts/2013-04-20-1.21.0.md +16 -0
  64. data/gh-pages/_posts/2013-04-20-1.22.0.md +14 -0
  65. data/gh-pages/_posts/2013-04-20-1.22.1.md +13 -0
  66. data/gh-pages/_posts/2013-04-21-1.22.2.md +15 -0
  67. data/gh-pages/_posts/2013-04-21-1.23.0.md +35 -0
  68. data/gh-pages/_posts/2013-04-23-1.24.0.md +16 -0
  69. data/gh-pages/_posts/2013-04-24-1.25.0.md +21 -0
  70. data/gh-pages/_posts/2013-05-09-2.0.0.md +33 -0
  71. data/gh-pages/_posts/2013-05-09-version-2.0.0-released.md +32 -0
  72. data/gh-pages/_posts/2013-07-20-2.1.0.md +36 -0
  73. data/gh-pages/_posts/2013-07-20-2.2.0.md +20 -0
  74. data/gh-pages/_posts/2013-10-12-2.3.0.md +19 -0
  75. data/gh-pages/_posts/2014-03-30-2.3.1.md +25 -0
  76. data/gh-pages/_posts/2015-01-05-2.3.2.md +18 -0
  77. data/gh-pages/_posts/2015-12-03-get-involved.md +29 -0
  78. data/gh-pages/_posts/2015-12-05-2.3.3.md +16 -0
  79. data/gh-pages/_posts/2016-01-02-2.4.0.md +19 -0
  80. data/gh-pages/_posts/2017-05-01-2.4.1.md +12 -0
  81. data/gh-pages/_posts/2017-10-23-sleep-mode.md +18 -0
  82. data/gh-pages/_posts/2018-01-03-3.0.1.md +12 -0
  83. data/gh-pages/_stylesheets/ppl/color.less +119 -0
  84. data/gh-pages/_stylesheets/ppl/layout.less +54 -0
  85. data/gh-pages/_stylesheets/ppl/style.less +185 -0
  86. data/gh-pages/_stylesheets/ppl/typography.less +59 -0
  87. data/gh-pages/development/changelog/index.md +18 -0
  88. data/gh-pages/development/changelog/split.rb +51 -0
  89. data/gh-pages/development/index.html +32 -0
  90. data/gh-pages/development/roadmap/index.md +15 -0
  91. data/gh-pages/documentation/about/index.html +63 -0
  92. data/gh-pages/documentation/commands/add/index.md +43 -0
  93. data/gh-pages/documentation/commands/age/add/index.md +40 -0
  94. data/gh-pages/documentation/commands/age/index.md +38 -0
  95. data/gh-pages/documentation/commands/bday/index.md +44 -0
  96. data/gh-pages/documentation/commands/completion/index.md +38 -0
  97. data/gh-pages/documentation/commands/email/index.md +64 -0
  98. data/gh-pages/documentation/commands/grep/index.md +32 -0
  99. data/gh-pages/documentation/commands/init/index.md +28 -0
  100. data/gh-pages/documentation/commands/ls/index.md +55 -0
  101. data/gh-pages/documentation/commands/mutt/index.md +36 -0
  102. data/gh-pages/documentation/commands/mv/index.md +26 -0
  103. data/gh-pages/documentation/commands/name/index.md +45 -0
  104. data/gh-pages/documentation/commands/nick/index.md +44 -0
  105. data/gh-pages/documentation/commands/org/index.md +45 -0
  106. data/gh-pages/documentation/commands/phone/index.md +56 -0
  107. data/gh-pages/documentation/commands/post/index.md +61 -0
  108. data/gh-pages/documentation/commands/pull/index.md +39 -0
  109. data/gh-pages/documentation/commands/push/index.md +36 -0
  110. data/gh-pages/documentation/commands/remote/index.md +40 -0
  111. data/gh-pages/documentation/commands/rm/index.md +23 -0
  112. data/gh-pages/documentation/commands/scrape/index.md +38 -0
  113. data/gh-pages/documentation/commands/shell/index.md +39 -0
  114. data/gh-pages/documentation/commands/show/index.md +33 -0
  115. data/gh-pages/documentation/commands/url/index.md +44 -0
  116. data/gh-pages/documentation/commands/version/index.md +27 -0
  117. data/gh-pages/documentation/configuration/address_book/index.md +22 -0
  118. data/gh-pages/documentation/configuration/alias/index.md +45 -0
  119. data/gh-pages/documentation/configuration/color/index.md +47 -0
  120. data/gh-pages/documentation/configuration/color_age/index.md +20 -0
  121. data/gh-pages/documentation/configuration/color_bday/index.md +20 -0
  122. data/gh-pages/documentation/configuration/color_email/index.md +21 -0
  123. data/gh-pages/documentation/configuration/color_ls/index.md +21 -0
  124. data/gh-pages/documentation/configuration/color_name/index.md +20 -0
  125. data/gh-pages/documentation/configuration/color_nick/index.md +20 -0
  126. data/gh-pages/documentation/configuration/color_org/index.md +20 -0
  127. data/gh-pages/documentation/configuration/color_phone/index.md +22 -0
  128. data/gh-pages/documentation/configuration/color_post/index.md +20 -0
  129. data/gh-pages/documentation/configuration/color_url/index.md +20 -0
  130. data/gh-pages/documentation/configuration/index.html +8 -0
  131. data/gh-pages/documentation/index.html +183 -0
  132. data/gh-pages/documentation/integration/bash/index.md +23 -0
  133. data/gh-pages/documentation/integration/google/index.md +26 -0
  134. data/gh-pages/documentation/integration/index.html +8 -0
  135. data/gh-pages/documentation/integration/mutt/index.md +35 -0
  136. data/gh-pages/documentation/integration/zsh/index.md +19 -0
  137. data/gh-pages/documentation/quick-start/index.html +88 -0
  138. data/gh-pages/documentation/tips/index.html +9 -0
  139. data/gh-pages/index.html +108 -0
  140. data/gh-pages/news/index.html +9 -0
  141. data/gh-pages/robots.txt +3 -0
  142. data/gh-pages/stylesheets/flatstrap.css +10 -0
  143. data/gh-pages/stylesheets/ppl.scss +235 -0
  144. data/gh-pages/wiki.png +0 -0
  145. data/lib/ppl.rb +4 -1
  146. data/lib/ppl/adapter/color.rb +0 -1
  147. data/lib/ppl/adapter/color/colored.rb +0 -1
  148. data/lib/ppl/adapter/email_scraper.rb +0 -1
  149. data/lib/ppl/adapter/email_scraper/mail.rb +4 -5
  150. data/lib/ppl/adapter/storage.rb +0 -1
  151. data/lib/ppl/adapter/storage/disk.rb +0 -1
  152. data/lib/ppl/adapter/storage/factory.rb +0 -1
  153. data/lib/ppl/adapter/vcard.rb +0 -1
  154. data/lib/ppl/adapter/vcard/vpim.rb +5 -1
  155. data/lib/ppl/application/bootstrap.rb +0 -1
  156. data/lib/ppl/application/command.rb +0 -1
  157. data/lib/ppl/application/command_suite.rb +0 -1
  158. data/lib/ppl/application/configuration.rb +0 -1
  159. data/lib/ppl/application/input.rb +0 -1
  160. data/lib/ppl/application/output.rb +0 -1
  161. data/lib/ppl/application/router.rb +0 -1
  162. data/lib/ppl/application/shell.rb +0 -1
  163. data/lib/ppl/command/add.rb +0 -1
  164. data/lib/ppl/command/age.rb +0 -1
  165. data/lib/ppl/command/attribute.rb +0 -1
  166. data/lib/ppl/command/bday.rb +0 -1
  167. data/lib/ppl/command/completion.rb +0 -1
  168. data/lib/ppl/command/email.rb +0 -1
  169. data/lib/ppl/command/external.rb +0 -1
  170. data/lib/ppl/command/help.rb +0 -1
  171. data/lib/ppl/command/init.rb +0 -1
  172. data/lib/ppl/command/ls.rb +0 -1
  173. data/lib/ppl/command/mutt.rb +0 -1
  174. data/lib/ppl/command/mv.rb +0 -1
  175. data/lib/ppl/command/name.rb +0 -1
  176. data/lib/ppl/command/nick.rb +0 -1
  177. data/lib/ppl/command/org.rb +0 -1
  178. data/lib/ppl/command/phone.rb +0 -1
  179. data/lib/ppl/command/post.rb +0 -1
  180. data/lib/ppl/command/rm.rb +0 -1
  181. data/lib/ppl/command/scrape.rb +0 -1
  182. data/lib/ppl/command/shell.rb +0 -1
  183. data/lib/ppl/command/show.rb +0 -1
  184. data/lib/ppl/command/url.rb +0 -1
  185. data/lib/ppl/command/version.rb +0 -1
  186. data/lib/ppl/entity/address_book.rb +0 -1
  187. data/lib/ppl/entity/contact.rb +0 -1
  188. data/lib/ppl/entity/email_address.rb +0 -1
  189. data/lib/ppl/entity/name.rb +0 -1
  190. data/lib/ppl/entity/phone_number.rb +0 -1
  191. data/lib/ppl/entity/postal_address.rb +0 -1
  192. data/lib/ppl/error/completion_not_found.rb +0 -1
  193. data/lib/ppl/error/contact_not_found.rb +0 -1
  194. data/lib/ppl/error/incorrect_usage.rb +0 -1
  195. data/lib/ppl/error/invalid_vcard.rb +1 -0
  196. data/lib/ppl/error/postal_address_not_found.rb +0 -1
  197. data/lib/ppl/format/address_book.rb +0 -1
  198. data/lib/ppl/format/address_book/ages.rb +0 -1
  199. data/lib/ppl/format/address_book/birthdays.rb +0 -1
  200. data/lib/ppl/format/address_book/email_addresses.rb +0 -1
  201. data/lib/ppl/format/address_book/mutt_query.rb +0 -1
  202. data/lib/ppl/format/address_book/names.rb +0 -1
  203. data/lib/ppl/format/address_book/nicknames.rb +0 -1
  204. data/lib/ppl/format/address_book/one_line.rb +0 -1
  205. data/lib/ppl/format/address_book/organizations.rb +0 -1
  206. data/lib/ppl/format/address_book/phone_numbers.rb +0 -1
  207. data/lib/ppl/format/address_book/postal_addresses.rb +0 -1
  208. data/lib/ppl/format/address_book/urls.rb +0 -1
  209. data/lib/ppl/format/contact.rb +0 -1
  210. data/lib/ppl/format/contact/age.rb +0 -1
  211. data/lib/ppl/format/contact/birthday.rb +0 -1
  212. data/lib/ppl/format/contact/email_addresses.rb +0 -1
  213. data/lib/ppl/format/contact/full.rb +0 -1
  214. data/lib/ppl/format/contact/nicknames.rb +0 -1
  215. data/lib/ppl/format/contact/organization.rb +0 -1
  216. data/lib/ppl/format/contact/phone_number.rb +0 -1
  217. data/lib/ppl/format/contact/postal_address.rb +0 -1
  218. data/lib/ppl/format/contact/postal_addresses.rb +0 -1
  219. data/lib/ppl/format/contact/urls.rb +0 -1
  220. data/lib/ppl/format/custom.rb +0 -1
  221. data/lib/ppl/format/custom/contact.rb +0 -1
  222. data/lib/ppl/format/custom/email_address.rb +0 -1
  223. data/lib/ppl/format/custom/phone_number.rb +0 -1
  224. data/lib/ppl/format/name.rb +0 -1
  225. data/lib/ppl/format/name/full_only.rb +0 -1
  226. data/lib/ppl/format/postal_address.rb +0 -1
  227. data/lib/ppl/format/postal_address/multi_line.rb +0 -1
  228. data/lib/ppl/format/postal_address/one_line.rb +0 -1
  229. data/lib/ppl/format/table.rb +0 -1
  230. data/lib/ppl/service/email_address.rb +0 -1
  231. data/lib/ppl/service/name.rb +0 -1
  232. data/lib/ppl/service/phone_number.rb +0 -1
  233. data/lib/ppl/service/postal_address.rb +0 -1
  234. data/{LICENSE → license} +0 -0
  235. data/makefile +18 -0
  236. data/package.json +23 -0
  237. data/ppl.gemspec +15 -13
  238. data/{README.md → readme.md} +12 -9
  239. data/site/_data/url.js +4 -0
  240. data/site/casts/hero.cast +189 -0
  241. data/site/development.njk +6 -0
  242. data/site/documentation.njk +6 -0
  243. data/site/index.njk +75 -0
  244. data/site/news.njk +6 -0
  245. data/site/style.scss +140 -0
  246. data/spec/ppl/adapter/color/colored_spec.rb +3 -4
  247. data/spec/ppl/adapter/color_spec.rb +0 -1
  248. data/spec/ppl/adapter/email_scraper/mail_spec.rb +13 -13
  249. data/spec/ppl/adapter/email_scraper_spec.rb +0 -1
  250. data/spec/ppl/adapter/output_spec.rb +7 -8
  251. data/spec/ppl/adapter/storage/disk_spec.rb +18 -19
  252. data/spec/ppl/adapter/storage/factory_spec.rb +3 -4
  253. data/spec/ppl/adapter/storage/git_spec.rb +31 -32
  254. data/spec/ppl/adapter/storage_spec.rb +3 -4
  255. data/spec/ppl/adapter/vcard/greencard_spec.rb +45 -45
  256. data/spec/ppl/adapter/vcard_spec.rb +0 -1
  257. data/spec/ppl/application/bootstrap_spec.rb +128 -129
  258. data/spec/ppl/application/command_spec.rb +8 -9
  259. data/spec/ppl/application/command_suite_spec.rb +7 -8
  260. data/spec/ppl/application/configuration_spec.rb +16 -17
  261. data/spec/ppl/application/input_spec.rb +2 -3
  262. data/spec/ppl/application/router_spec.rb +8 -9
  263. data/spec/ppl/application/shell_spec.rb +39 -40
  264. data/spec/ppl/command/add_spec.rb +6 -7
  265. data/spec/ppl/command/age_spec.rb +7 -8
  266. data/spec/ppl/command/attribute_spec.rb +22 -23
  267. data/spec/ppl/command/bday_spec.rb +11 -12
  268. data/spec/ppl/command/completion_spec.rb +7 -8
  269. data/spec/ppl/command/email_spec.rb +19 -20
  270. data/spec/ppl/command/external_spec.rb +7 -8
  271. data/spec/ppl/command/help_spec.rb +15 -16
  272. data/spec/ppl/command/init_spec.rb +5 -6
  273. data/spec/ppl/command/ls_spec.rb +12 -13
  274. data/spec/ppl/command/mutt_spec.rb +33 -34
  275. data/spec/ppl/command/mv_spec.rb +11 -12
  276. data/spec/ppl/command/name_spec.rb +17 -18
  277. data/spec/ppl/command/nick_spec.rb +1 -2
  278. data/spec/ppl/command/org_spec.rb +1 -2
  279. data/spec/ppl/command/phone_spec.rb +15 -16
  280. data/spec/ppl/command/post_spec.rb +29 -30
  281. data/spec/ppl/command/rm_spec.rb +3 -4
  282. data/spec/ppl/command/scrape_spec.rb +24 -25
  283. data/spec/ppl/command/shell_spec.rb +41 -42
  284. data/spec/ppl/command/show_spec.rb +4 -5
  285. data/spec/ppl/command/url_spec.rb +1 -2
  286. data/spec/ppl/command/version_spec.rb +4 -5
  287. data/spec/ppl/entity/address_book_spec.rb +1 -2
  288. data/spec/ppl/entity/contact_spec.rb +16 -17
  289. data/spec/ppl/entity/email_address_spec.rb +3 -4
  290. data/spec/ppl/entity/name_spec.rb +1 -2
  291. data/spec/ppl/entity/phone_number_spec.rb +5 -6
  292. data/spec/ppl/entity/postal_address_spec.rb +2 -3
  293. data/spec/ppl/format/address_book/ages_spec.rb +3 -4
  294. data/spec/ppl/format/address_book/birthdays_spec.rb +3 -4
  295. data/spec/ppl/format/address_book/email_addresses_spec.rb +3 -4
  296. data/spec/ppl/format/address_book/mutt_query_spec.rb +3 -4
  297. data/spec/ppl/format/address_book/names_spec.rb +3 -4
  298. data/spec/ppl/format/address_book/nicknames_spec.rb +4 -5
  299. data/spec/ppl/format/address_book/one_line_spec.rb +5 -6
  300. data/spec/ppl/format/address_book/organizations_spec.rb +3 -4
  301. data/spec/ppl/format/address_book/phone_numbers_spec.rb +3 -4
  302. data/spec/ppl/format/address_book/postal_addresses_spec.rb +2 -3
  303. data/spec/ppl/format/address_book/urls_spec.rb +3 -4
  304. data/spec/ppl/format/address_book_spec.rb +0 -1
  305. data/spec/ppl/format/contact/age_spec.rb +8 -9
  306. data/spec/ppl/format/contact/birthday_spec.rb +4 -5
  307. data/spec/ppl/format/contact/email_addresses_spec.rb +3 -4
  308. data/spec/ppl/format/contact/full_spec.rb +11 -12
  309. data/spec/ppl/format/contact/nicknames_spec.rb +4 -5
  310. data/spec/ppl/format/contact/organization_spec.rb +4 -5
  311. data/spec/ppl/format/contact/phone_number_spec.rb +4 -5
  312. data/spec/ppl/format/contact/postal_address_spec.rb +1 -2
  313. data/spec/ppl/format/contact/postal_addresses_spec.rb +3 -4
  314. data/spec/ppl/format/contact/urls_spec.rb +4 -5
  315. data/spec/ppl/format/contact_spec.rb +0 -1
  316. data/spec/ppl/format/custom/contact_spec.rb +13 -14
  317. data/spec/ppl/format/custom/email_address_spec.rb +3 -4
  318. data/spec/ppl/format/custom/phone_number_spec.rb +4 -5
  319. data/spec/ppl/format/custom_spec.rb +6 -7
  320. data/spec/ppl/format/name/full_only_spec.rb +4 -5
  321. data/spec/ppl/format/name_spec.rb +0 -1
  322. data/spec/ppl/format/postal_address/multi_line_spec.rb +10 -11
  323. data/spec/ppl/format/postal_address/one_line_spec.rb +9 -10
  324. data/spec/ppl/format/postal_address_spec.rb +0 -1
  325. data/spec/ppl/format/table_spec.rb +11 -11
  326. data/spec/ppl/service/email_address_spec.rb +13 -14
  327. data/spec/ppl/service/name_spec.rb +9 -10
  328. data/spec/ppl/service/phone_number_spec.rb +11 -12
  329. data/spec/ppl/service/postal_address_spec.rb +20 -21
  330. data/spec/spec_helper.rb +4 -0
  331. data/yarn.lock +3605 -0
  332. metadata +183 -22
  333. data/.travis.yml +0 -11
  334. data/COPYING +0 -339
@@ -1,4 +1,3 @@
1
-
2
1
  describe Ppl::Command::Rm do
3
2
 
4
3
  before(:each) do
@@ -14,7 +13,7 @@ describe Ppl::Command::Rm do
14
13
 
15
14
  describe "#name" do
16
15
  it "should be 'rm'" do
17
- @command.name.should eq "rm"
16
+ expect(@command.name).to eq "rm"
18
17
  end
19
18
  end
20
19
 
@@ -26,8 +25,8 @@ describe Ppl::Command::Rm do
26
25
  end
27
26
 
28
27
  it "should delete the given contact" do
29
- @storage.should_receive(:require_contact).and_return(@contact)
30
- @storage.should_receive(:delete_contact).with(@contact)
28
+ expect(@storage).to receive(:require_contact).and_return(@contact)
29
+ expect(@storage).to receive(:delete_contact).with(@contact)
31
30
  @command.execute(@input, @output)
32
31
  end
33
32
 
@@ -1,4 +1,3 @@
1
-
2
1
  describe Ppl::Command::Scrape do
3
2
 
4
3
  before(:each) do
@@ -16,68 +15,68 @@ describe Ppl::Command::Scrape do
16
15
 
17
16
  describe "#name" do
18
17
  it "should be 'scrape'" do
19
- @command.name.should eq "scrape"
18
+ expect(@command.name).to eq "scrape"
20
19
  end
21
20
  end
22
21
 
23
22
  describe "#execute" do
24
23
 
25
24
  before(:each) do
26
- @input.stdin.stub(:read)
27
- @input.stdin.stub(:reopen)
28
- @input.stdin.stub(:eof?)
29
- @email_scraper.stub(:scrape_contacts).and_return([])
30
- Readline.stub(:readline).and_return("")
31
- @storage.stub(:save_contact)
25
+ allow(@input.stdin).to receive(:read)
26
+ allow(@input.stdin).to receive(:reopen)
27
+ allow(@input.stdin).to receive(:eof?)
28
+ allow(@email_scraper).to receive(:scrape_contacts).and_return([])
29
+ allow(Readline).to receive(:readline).and_return("")
30
+ allow(@storage).to receive(:save_contact)
32
31
  end
33
32
 
34
33
  it "should read input from stdin" do
35
34
  @input.options[:sender] = true
36
- @input.stdin.should_receive(:read)
35
+ expect(@input.stdin).to receive(:read)
37
36
  @command.execute(@input, @output)
38
37
  end
39
38
 
40
39
  it "should pass input to the email scraper" do
41
40
  @input.options[:sender] = true
42
- @email_scraper.should_receive(:scrape_contacts)
41
+ expect(@email_scraper).to receive(:scrape_contacts)
43
42
  @command.execute(@input, @output)
44
43
  end
45
44
 
46
45
  it "shouldn't do any scraping unless told which fields to scrape" do
47
- @email_scraper.should_not_receive(:scrape_contacts)
46
+ expect(@email_scraper).not_to receive(:scrape_contacts)
48
47
  @command.execute(@input, @output)
49
48
  end
50
49
 
51
50
  it "should always save contacts if in quiet mode" do
52
51
  @input.options[:sender] = true
53
52
  @input.options[:quiet] = true
54
- @email_scraper.stub(:scrape_contacts).and_return([@contact])
55
- Readline.should_not_receive(:readline)
56
- @storage.should_receive(:save_contact)
53
+ allow(@email_scraper).to receive(:scrape_contacts).and_return([@contact])
54
+ expect(Readline).not_to receive(:readline)
55
+ expect(@storage).to receive(:save_contact)
57
56
  @command.execute(@input, @output)
58
57
  end
59
58
 
60
59
  it "should reopen stdin to prompt the user" do
61
60
  @input.options[:sender] = true
62
- @input.stdin.should_receive(:eof?).and_return(true)
63
- @input.stdin.should_receive(:reopen)
64
- @email_scraper.stub(:scrape_contacts).and_return([@contact])
61
+ expect(@input.stdin).to receive(:eof?).and_return(true)
62
+ expect(@input.stdin).to receive(:reopen)
63
+ allow(@email_scraper).to receive(:scrape_contacts).and_return([@contact])
65
64
  @command.execute(@input, @output)
66
65
  end
67
66
 
68
67
  it "should save the contact if the user approves" do
69
68
  @input.options[:sender] = true
70
- @email_scraper.stub(:scrape_contacts).and_return([@contact])
71
- Readline.should_receive(:readline).and_return("y")
72
- @storage.should_receive(:save_contact)
69
+ allow(@email_scraper).to receive(:scrape_contacts).and_return([@contact])
70
+ expect(Readline).to receive(:readline).and_return("y")
71
+ expect(@storage).to receive(:save_contact)
73
72
  @command.execute(@input, @output)
74
73
  end
75
74
 
76
75
  it "should not save the contact if the user disapproves" do
77
76
  @input.options[:sender] = true
78
- @email_scraper.stub(:scrape_contacts).and_return([@contact])
79
- Readline.should_receive(:readline).and_return("n")
80
- @storage.should_not_receive(:save_contact)
77
+ allow(@email_scraper).to receive(:scrape_contacts).and_return([@contact])
78
+ expect(Readline).to receive(:readline).and_return("n")
79
+ expect(@storage).not_to receive(:save_contact)
81
80
  @command.execute(@input, @output)
82
81
  end
83
82
 
@@ -86,8 +85,8 @@ describe Ppl::Command::Scrape do
86
85
  contact = Ppl::Entity::Contact.new
87
86
  contact.name = "Test Person"
88
87
  contact.email_addresses << "test@example.org"
89
- @email_scraper.stub(:scrape_contacts).and_return([contact])
90
- Readline.should_receive(:readline).with("Add \"Test Person <test@example.org>\" to your address book [Y/n]? ")
88
+ allow(@email_scraper).to receive(:scrape_contacts).and_return([contact])
89
+ expect(Readline).to receive(:readline).with("Add \"Test Person <test@example.org>\" to your address book [Y/n]? ")
91
90
  @command.execute(@input, @output)
92
91
  end
93
92
 
@@ -1,4 +1,3 @@
1
-
2
1
  describe Ppl::Command::Shell do
3
2
 
4
3
  before(:each) do
@@ -9,16 +8,16 @@ describe Ppl::Command::Shell do
9
8
 
10
9
  describe "#name" do
11
10
  it "should be 'shell'" do
12
- @command.name.should eq "shell"
11
+ expect(@command.name).to eq "shell"
13
12
  end
14
13
  end
15
14
 
16
15
  describe "#execute" do
17
16
  it "should read a line of input from stdin" do
18
- Readline.should_receive(:readline)
19
- @command.stub(:welcome_user)
20
- @command.stub(:terminate_gracefully)
21
- @command.execute(@input, @output).should eq true
17
+ expect(Readline).to receive(:readline)
18
+ allow(@command).to receive(:welcome_user)
19
+ allow(@command).to receive(:terminate_gracefully)
20
+ expect(@command.execute(@input, @output)).to eq true
22
21
  end
23
22
  end
24
23
 
@@ -26,73 +25,73 @@ describe Ppl::Command::Shell do
26
25
 
27
26
  before(:each) do
28
27
  @input.stdin = double(IO)
29
- @input.stdin.stub(:tty?) { true }
28
+ allow(@input.stdin).to receive(:tty?) { true }
30
29
  end
31
30
 
32
31
  it "should not show a prompt if stdin isn't a tty" do
33
- @input.stdin.stub(:tty?) { false }
34
- Readline.should_receive(:readline).with("", true)
35
- @command.stub(:welcome_user)
32
+ allow(@input.stdin).to receive(:tty?) { false }
33
+ expect(Readline).to receive(:readline).with("", true)
34
+ allow(@command).to receive(:welcome_user)
36
35
  @command.execute(@input, @output)
37
36
  end
38
37
 
39
38
  it "should show a prompt if stdin is a tty" do
40
- @input.stdin.stub(:tty?) { true }
41
- Readline.should_receive(:readline).with("ppl> ", true)
42
- @command.stub(:welcome_user)
43
- @command.stub(:terminate_gracefully)
39
+ allow(@input.stdin).to receive(:tty?) { true }
40
+ expect(Readline).to receive(:readline).with("ppl> ", true)
41
+ allow(@command).to receive(:welcome_user)
42
+ allow(@command).to receive(:terminate_gracefully)
44
43
  @command.execute(@input, @output)
45
44
  end
46
45
 
47
46
  it "should make a system call with the input from stdin" do
48
- Readline.should_receive(:readline).and_return("email fred")
49
- Readline.should_receive(:readline).and_return(false)
50
- Kernel.should_receive(:system) do |command|
51
- command.should include "email fred"
47
+ expect(Readline).to receive(:readline).and_return("email fred")
48
+ expect(Readline).to receive(:readline).and_return(false)
49
+ expect(Kernel).to receive(:system) do |command|
50
+ expect(command).to include "email fred"
52
51
  end
53
- @command.stub(:welcome_user)
54
- @command.stub(:terminate_gracefully)
55
- @command.execute(@input, @output).should eq true
52
+ allow(@command).to receive(:welcome_user)
53
+ allow(@command).to receive(:terminate_gracefully)
54
+ expect(@command.execute(@input, @output)).to eq true
56
55
  end
57
56
 
58
57
  it "should exit on ctrl+c" do
59
- Readline.should_receive(:readline).and_raise(Interrupt)
60
- @command.stub(:welcome_user)
61
- @command.stub(:terminate_gracefully)
62
- @command.execute(@input, @output).should eq false
58
+ expect(Readline).to receive(:readline).and_raise(Interrupt)
59
+ allow(@command).to receive(:welcome_user)
60
+ allow(@command).to receive(:terminate_gracefully)
61
+ expect(@command.execute(@input, @output)).to eq false
63
62
  end
64
63
 
65
64
  it "should print a final newline on EOF so the user's prompt looks nice" do
66
- @input.stdin.stub(:tty?) { true }
67
- @output.should_receive(:line).with("")
68
- Readline.should_receive(:readline).and_return(false)
69
- @command.stub(:welcome_user)
65
+ allow(@input.stdin).to receive(:tty?) { true }
66
+ expect(@output).to receive(:line).with("")
67
+ expect(Readline).to receive(:readline).and_return(false)
68
+ allow(@command).to receive(:welcome_user)
70
69
  @command.execute(@input, @output)
71
70
  end
72
71
 
73
72
  it "should print a final newline on error so the user's prompt looks nice" do
74
- @input.stdin.stub(:tty?) { true }
75
- @output.should_receive(:line).with("")
76
- @command.stub(:shell).and_raise(Interrupt)
73
+ allow(@input.stdin).to receive(:tty?) { true }
74
+ expect(@output).to receive(:line).with("")
75
+ allow(@command).to receive(:shell).and_raise(Interrupt)
77
76
  @command.execute(@input, @output)
78
77
  end
79
78
 
80
79
  it "should not print a final newline on EOF if stdin isn't a tty" do
81
- @input.stdin.stub(:tty?) { false }
82
- @output.should_not_receive(:line).with("")
83
- Readline.should_receive(:readline).and_return(false)
84
- @command.stub(:welcome_user)
80
+ allow(@input.stdin).to receive(:tty?) { false }
81
+ expect(@output).not_to receive(:line).with("")
82
+ expect(Readline).to receive(:readline).and_return(false)
83
+ allow(@command).to receive(:welcome_user)
85
84
  @command.execute(@input, @output)
86
85
  end
87
86
 
88
87
  it "should print a welcome message on the tty" do
89
- @input.stdin.stub(:tty?) { true }
90
- @output.should_receive(:line) do |line|
91
- line.should include "ppl"
92
- line.should include Ppl::Version
88
+ allow(@input.stdin).to receive(:tty?) { true }
89
+ expect(@output).to receive(:line) do |line|
90
+ expect(line).to include "ppl"
91
+ expect(line).to include Ppl::Version
93
92
  end
94
- Readline.should_receive(:readline).and_return(false)
95
- @command.stub(:terminate_gracefully)
93
+ expect(Readline).to receive(:readline).and_return(false)
94
+ allow(@command).to receive(:terminate_gracefully)
96
95
  @command.execute(@input, @output)
97
96
  end
98
97
 
@@ -1,4 +1,3 @@
1
-
2
1
  describe Ppl::Command::Show do
3
2
 
4
3
  before(:each) do
@@ -15,7 +14,7 @@ describe Ppl::Command::Show do
15
14
 
16
15
  describe "#name" do
17
16
  it "should be 'show'" do
18
- @command.name.should eq "show"
17
+ expect(@command.name).to eq "show"
19
18
  end
20
19
  end
21
20
 
@@ -27,12 +26,12 @@ describe Ppl::Command::Show do
27
26
  end
28
27
 
29
28
  it "should show the contact's name" do
30
- @storage.should_receive(:require_contact).and_return(@contact)
31
- @format.should_receive(:process).and_return("John Doe")
29
+ expect(@storage).to receive(:require_contact).and_return(@contact)
30
+ expect(@format).to receive(:process).and_return("John Doe")
32
31
 
33
32
  @input.arguments = ["john"]
34
33
 
35
- @output.should_receive(:line).with("John Doe")
34
+ expect(@output).to receive(:line).with("John Doe")
36
35
  @command.execute(@input, @output)
37
36
  end
38
37
  end
@@ -1,4 +1,3 @@
1
-
2
1
  describe Ppl::Command::Url do
3
2
 
4
3
  before(:each) do
@@ -7,7 +6,7 @@ describe Ppl::Command::Url do
7
6
 
8
7
  describe "#name" do
9
8
  it "should be 'url'" do
10
- @command.name.should eq "url"
9
+ expect(@command.name).to eq "url"
11
10
  end
12
11
  end
13
12
 
@@ -1,4 +1,3 @@
1
-
2
1
  describe Ppl::Command::Version do
3
2
 
4
3
  before(:each) do
@@ -9,16 +8,16 @@ describe Ppl::Command::Version do
9
8
 
10
9
  describe "#name" do
11
10
  it "should be 'version'" do
12
- @command.name.should eq "version"
11
+ expect(@command.name).to eq "version"
13
12
  end
14
13
  end
15
14
 
16
15
  describe "#execute" do
17
16
  it "should show the version number" do
18
- @output.should_receive(:line) do |line|
19
- line.should include Ppl::Version
17
+ expect(@output).to receive(:line) do |line|
18
+ expect(line).to include Ppl::Version
20
19
  end
21
- @command.execute(@input, @output).should eq true
20
+ expect(@command.execute(@input, @output)).to eq true
22
21
  end
23
22
  end
24
23
 
@@ -1,4 +1,3 @@
1
-
2
1
  describe Ppl::Entity::AddressBook do
3
2
 
4
3
  before(:each) do
@@ -7,7 +6,7 @@ describe Ppl::Entity::AddressBook do
7
6
 
8
7
  describe "#contacts" do
9
8
  it "should be an array" do
10
- @address_book.contacts.should be_an(Array)
9
+ expect(@address_book.contacts).to be_an(Array)
11
10
  end
12
11
  end
13
12
 
@@ -1,4 +1,3 @@
1
-
2
1
  describe Ppl::Entity::Contact do
3
2
 
4
3
  before(:each) do
@@ -7,72 +6,72 @@ describe Ppl::Entity::Contact do
7
6
 
8
7
  describe "#id" do
9
8
  it "should return a value" do
10
- @contact.id.should be nil
9
+ expect(@contact.id).to be nil
11
10
  end
12
11
  end
13
12
 
14
13
  describe "#id=" do
15
14
  it "should accept a value" do
16
15
  @contact.id = "john"
17
- @contact.id.should eq "john"
16
+ expect(@contact.id).to eq "john"
18
17
  end
19
18
  end
20
19
 
21
20
  describe "#email_addresses" do
22
21
  it "should return an array" do
23
- @contact.email_addresses.should be_a(Array)
22
+ expect(@contact.email_addresses).to be_a(Array)
24
23
  end
25
24
  end
26
25
 
27
26
  describe "#postal_addresses" do
28
27
  it "should return an array" do
29
- @contact.postal_addresses.should be_a(Array)
28
+ expect(@contact.postal_addresses).to be_a(Array)
30
29
  end
31
30
  end
32
31
 
33
32
  describe "#birthday" do
34
33
  it "should return a value" do
35
- @contact.birthday.should eq nil
34
+ expect(@contact.birthday).to eq nil
36
35
  end
37
36
  end
38
37
 
39
38
  describe "#postal_address" do
40
39
  it "should return a value" do
41
- @contact.postal_address.should eq nil
40
+ expect(@contact.postal_address).to eq nil
42
41
  end
43
42
  end
44
43
 
45
44
  describe "#urls" do
46
45
  it "should return an array" do
47
- @contact.urls.should be_a(Array)
46
+ expect(@contact.urls).to be_a(Array)
48
47
  end
49
48
  end
50
49
 
51
50
  describe "#nicknames" do
52
51
  it "should return an array" do
53
- @contact.nicknames.should be_a(Array)
52
+ expect(@contact.nicknames).to be_a(Array)
54
53
  end
55
54
  end
56
55
 
57
56
  describe "#organizations" do
58
57
  it "should return an array" do
59
- @contact.organizations.should be_a(Array)
58
+ expect(@contact.organizations).to be_a(Array)
60
59
  end
61
60
  end
62
61
 
63
62
  describe "#phone_numbers" do
64
63
  it "should return an array" do
65
- @contact.phone_numbers.should be_a(Array)
64
+ expect(@contact.phone_numbers).to be_a(Array)
66
65
  end
67
66
  end
68
67
 
69
68
  describe "#age" do
70
69
  it "should return nil if the date of birth is unknown" do
71
- @contact.age(Date.today).should eq nil
70
+ expect(@contact.age(Date.today)).to eq nil
72
71
  end
73
72
  it "should return the contact's age" do
74
73
  @contact.birthday = Date.parse("1970-01-01")
75
- @contact.age(Date.parse("1980-01-02")).should eq 10
74
+ expect(@contact.age(Date.parse("1980-01-02"))).to eq 10
76
75
  end
77
76
  end
78
77
 
@@ -83,12 +82,12 @@ describe Ppl::Entity::Contact do
83
82
  end
84
83
 
85
84
  it "returns nil if there's no preferred address" do
86
- @contact.preferred_email_address.should eq nil
85
+ expect(@contact.preferred_email_address).to eq nil
87
86
  end
88
87
 
89
88
  it "returns the preferred email address" do
90
89
  @contact.email_addresses[0].preferred = true
91
- @contact.preferred_email_address.should be_a(Ppl::Entity::EmailAddress)
90
+ expect(@contact.preferred_email_address).to be_a(Ppl::Entity::EmailAddress)
92
91
  end
93
92
 
94
93
  end
@@ -100,12 +99,12 @@ describe Ppl::Entity::Contact do
100
99
  end
101
100
 
102
101
  it "returns nil if there's no preferred number" do
103
- @contact.preferred_phone_number.should eq nil
102
+ expect(@contact.preferred_phone_number).to eq nil
104
103
  end
105
104
 
106
105
  it "returns the preferred phone number" do
107
106
  @contact.phone_numbers[0].preferred = true
108
- @contact.preferred_phone_number.should be_a(Ppl::Entity::PhoneNumber)
107
+ expect(@contact.preferred_phone_number).to be_a(Ppl::Entity::PhoneNumber)
109
108
  end
110
109
 
111
110
  end