fat_free_crm 0.11.4 → 0.12.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.

Potentially problematic release.


This version of fat_free_crm might be problematic. Click here for more details.

Files changed (451) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +2 -1
  3. data/.travis.yml +10 -17
  4. data/CHANGELOG +57 -4
  5. data/CONTRIBUTORS +6 -4
  6. data/Gemfile +24 -21
  7. data/Gemfile.lock +142 -111
  8. data/Guardfile +11 -31
  9. data/MIT-LICENSE +21 -0
  10. data/README.md +30 -39
  11. data/app/assets/javascripts/admin/fields.js.coffee +5 -18
  12. data/app/assets/javascripts/application.js.erb +3 -14
  13. data/app/assets/javascripts/crm.js +3 -15
  14. data/app/assets/javascripts/crm_chosen.js.coffee +21 -4
  15. data/app/assets/javascripts/crm_classes.js +3 -15
  16. data/app/assets/javascripts/crm_fields.js +3 -15
  17. data/app/assets/javascripts/crm_loginout.js +3 -15
  18. data/app/assets/javascripts/crm_textarea_autocomplete.js +3 -15
  19. data/app/assets/javascripts/datepicker.js.coffee +5 -0
  20. data/app/assets/javascripts/format_buttons.js.coffee +5 -0
  21. data/app/assets/javascripts/groups.js.coffee +5 -0
  22. data/app/assets/javascripts/jquery-noconflict.js +3 -15
  23. data/app/assets/javascripts/lists.js.coffee +6 -0
  24. data/app/assets/javascripts/search.js.coffee +5 -0
  25. data/app/assets/stylesheets/admin/fields.css.scss +10 -0
  26. data/app/assets/stylesheets/advanced_search.css.scss +5 -0
  27. data/app/assets/stylesheets/application.css.erb +3 -14
  28. data/app/assets/stylesheets/base.scss +3 -15
  29. data/app/assets/stylesheets/common.scss +3 -15
  30. data/app/assets/stylesheets/ffcrm_chosen.scss +5 -0
  31. data/app/assets/stylesheets/fields.scss +5 -0
  32. data/app/assets/stylesheets/format_buttons.css.scss +5 -0
  33. data/app/assets/stylesheets/groups.css.scss +5 -0
  34. data/app/assets/stylesheets/header.scss +3 -15
  35. data/app/assets/stylesheets/index_headers.css.scss +5 -0
  36. data/app/assets/stylesheets/lists.css.scss +5 -0
  37. data/app/assets/stylesheets/print.css.scss +3 -15
  38. data/app/assets/stylesheets/rails.scss +4 -16
  39. data/app/assets/stylesheets/safari.scss +3 -15
  40. data/app/assets/stylesheets/textarea_autocomplete.scss +5 -0
  41. data/app/controllers/admin/application_controller.rb +3 -15
  42. data/app/controllers/admin/field_groups_controller.rb +3 -15
  43. data/app/controllers/admin/fields_controller.rb +3 -15
  44. data/app/controllers/admin/groups_controller.rb +3 -15
  45. data/app/controllers/admin/plugins_controller.rb +3 -15
  46. data/app/controllers/admin/settings_controller.rb +3 -15
  47. data/app/controllers/admin/tags_controller.rb +3 -15
  48. data/app/controllers/admin/users_controller.rb +3 -15
  49. data/app/controllers/application_controller.rb +3 -15
  50. data/app/controllers/authentications_controller.rb +3 -15
  51. data/app/controllers/comments_controller.rb +6 -16
  52. data/app/controllers/emails_controller.rb +3 -15
  53. data/app/controllers/entities/accounts_controller.rb +4 -15
  54. data/app/controllers/entities/campaigns_controller.rb +4 -15
  55. data/app/controllers/entities/contacts_controller.rb +4 -15
  56. data/app/controllers/entities/leads_controller.rb +4 -15
  57. data/app/controllers/entities/opportunities_controller.rb +6 -16
  58. data/app/controllers/entities_controller.rb +3 -15
  59. data/app/controllers/home_controller.rb +3 -15
  60. data/app/controllers/lists_controller.rb +3 -15
  61. data/app/controllers/passwords_controller.rb +3 -15
  62. data/app/controllers/tasks_controller.rb +5 -16
  63. data/app/controllers/users_controller.rb +3 -15
  64. data/app/helpers/accounts_helper.rb +7 -17
  65. data/app/helpers/addresses_helper.rb +3 -15
  66. data/app/helpers/admin/application_helper.rb +3 -15
  67. data/app/helpers/admin/field_groups_helper.rb +3 -15
  68. data/app/helpers/admin/fields_helper.rb +3 -15
  69. data/app/helpers/admin/plugins_helper.rb +3 -15
  70. data/app/helpers/admin/settings_helper.rb +3 -15
  71. data/app/helpers/admin/tags_helper.rb +3 -15
  72. data/app/helpers/admin/users_helper.rb +3 -15
  73. data/app/helpers/application_helper.rb +12 -18
  74. data/app/helpers/authentications_helper.rb +3 -15
  75. data/app/helpers/campaigns_helper.rb +3 -15
  76. data/app/helpers/comments_helper.rb +3 -15
  77. data/app/helpers/contacts_helper.rb +3 -15
  78. data/app/helpers/emails_helper.rb +3 -15
  79. data/app/helpers/fields_helper.rb +3 -15
  80. data/app/helpers/groups_helper.rb +5 -0
  81. data/app/helpers/home_helper.rb +3 -15
  82. data/app/helpers/leads_helper.rb +3 -15
  83. data/app/helpers/lists_helper.rb +3 -15
  84. data/app/helpers/opportunities_helper.rb +3 -15
  85. data/app/helpers/passwords_helper.rb +3 -15
  86. data/app/helpers/tags_helper.rb +3 -15
  87. data/app/helpers/tasks_helper.rb +3 -15
  88. data/app/helpers/users_helper.rb +3 -15
  89. data/app/helpers/versions_helper.rb +3 -15
  90. data/app/inputs/{datepair_input.rb → date_pair_input.rb} +10 -21
  91. data/app/inputs/date_time_input.rb +13 -15
  92. data/app/inputs/datetime_pair_input.rb +26 -0
  93. data/app/inputs/text_input.rb +5 -15
  94. data/app/mailers/dropbox_mailer.rb +3 -15
  95. data/app/mailers/subscription_mailer.rb +9 -16
  96. data/app/mailers/user_mailer.rb +3 -15
  97. data/app/models/entities/account.rb +7 -17
  98. data/app/models/entities/account_contact.rb +6 -17
  99. data/app/models/entities/account_opportunity.rb +5 -15
  100. data/app/models/entities/campaign.rb +5 -15
  101. data/app/models/entities/contact.rb +15 -25
  102. data/app/models/entities/contact_opportunity.rb +5 -15
  103. data/app/models/entities/lead.rb +6 -16
  104. data/app/models/entities/opportunity.rb +6 -16
  105. data/app/models/fields/core_field.rb +5 -16
  106. data/app/models/fields/custom_field.rb +6 -16
  107. data/app/models/fields/custom_field_date_pair.rb +6 -21
  108. data/app/models/fields/custom_field_datetime_pair.rb +5 -19
  109. data/app/models/fields/custom_field_pair.rb +6 -16
  110. data/app/models/fields/field.rb +6 -17
  111. data/app/models/fields/field_group.rb +7 -17
  112. data/app/models/list.rb +4 -15
  113. data/app/models/observers/entity_observer.rb +5 -0
  114. data/app/models/observers/lead_observer.rb +3 -15
  115. data/app/models/observers/opportunity_observer.rb +3 -15
  116. data/app/models/observers/task_observer.rb +3 -15
  117. data/app/models/polymorphic/address.rb +5 -16
  118. data/app/models/polymorphic/avatar.rb +5 -16
  119. data/app/models/polymorphic/comment.rb +5 -15
  120. data/app/models/polymorphic/email.rb +5 -15
  121. data/app/models/polymorphic/tag.rb +6 -16
  122. data/app/models/polymorphic/tagging.rb +4 -15
  123. data/app/models/polymorphic/task.rb +6 -16
  124. data/app/models/setting.rb +5 -23
  125. data/app/models/users/ability.rb +9 -2
  126. data/app/models/users/authentication.rb +5 -16
  127. data/app/models/users/group.rb +7 -0
  128. data/app/models/users/permission.rb +5 -16
  129. data/app/models/users/preference.rb +4 -15
  130. data/app/models/users/user.rb +10 -19
  131. data/app/views/admin/fields/index.html.haml +2 -0
  132. data/app/views/comments/_edit.html.haml +0 -1
  133. data/app/views/comments/_new.html.haml +0 -1
  134. data/app/views/contacts/_contacts.html.haml +1 -1
  135. data/app/views/contacts/_sidebar_show.html.haml +19 -0
  136. data/app/views/contacts/_top_section.html.haml +3 -2
  137. data/app/views/entities/_search.html.haml +4 -3
  138. data/app/views/entities/contacts.js.rjs +1 -1
  139. data/app/views/entities/leads.js.rjs +1 -1
  140. data/app/views/entities/opportunities.js.rjs +1 -1
  141. data/app/views/fields/_edit_custom_field_group.html.haml +1 -1
  142. data/app/views/home/_task.html.haml +3 -1
  143. data/app/views/layouts/_footer.html.haml +1 -1
  144. data/app/views/leads/_leads.html.haml +1 -1
  145. data/app/views/leads/_sidebar_show.html.haml +7 -0
  146. data/app/views/leads/_top_section.html.haml +3 -2
  147. data/app/views/lists/_sidebar.html.haml +5 -5
  148. data/app/views/opportunities/_opportunities.html.haml +1 -1
  149. data/app/views/versions/_versions.html.haml +1 -1
  150. data/config/application.rb +11 -3
  151. data/config/boot.rb +5 -1
  152. data/config/deploy.example.rb +5 -0
  153. data/config/environment.rb +5 -0
  154. data/config/environments/development.rb +5 -0
  155. data/config/environments/production.rb +5 -0
  156. data/config/environments/staging.rb +5 -0
  157. data/config/environments/test.rb +6 -1
  158. data/config/initializers/action_mailer.rb +5 -0
  159. data/config/initializers/authlogic.rb +5 -0
  160. data/config/initializers/constants.rb +5 -0
  161. data/config/initializers/gravatar.rb +5 -0
  162. data/config/initializers/locale.rb +3 -15
  163. data/config/initializers/mime_types.rb +5 -0
  164. data/config/initializers/paginate_arrays.rb +5 -0
  165. data/config/initializers/paper_trail.rb +5 -0
  166. data/config/initializers/ransack.rb +6 -1
  167. data/config/initializers/relative_url_root.rb +3 -15
  168. data/config/initializers/sass.rb +5 -0
  169. data/config/initializers/secret_token.rb +6 -1
  170. data/config/initializers/simple_form.rb +5 -0
  171. data/config/initializers/views.rb +5 -0
  172. data/config/locales/de_fat_free_crm.yml +125 -7
  173. data/config/locales/en-US_fat_free_crm.yml +7 -2
  174. data/config/locales/th.rb +5 -0
  175. data/config/routes.rb +5 -0
  176. data/config/settings.default.yml +10 -18
  177. data/config/unicorn.rb +5 -0
  178. data/fat_free_crm.gemspec +6 -4
  179. data/lib/development_tasks/gem.rake +3 -15
  180. data/lib/development_tasks/license.rake +12 -32
  181. data/lib/development_tasks/rdoc.rake +3 -15
  182. data/lib/development_tasks/rspec.rake +3 -15
  183. data/lib/fat_free_crm.rb +6 -16
  184. data/lib/fat_free_crm/callback.rb +3 -15
  185. data/lib/fat_free_crm/comment_extensions.rb +5 -0
  186. data/lib/fat_free_crm/core_ext.rb +3 -15
  187. data/lib/fat_free_crm/core_ext/nil.rb +3 -15
  188. data/lib/fat_free_crm/core_ext/string.rb +3 -15
  189. data/lib/fat_free_crm/custom_fields.rb +12 -0
  190. data/lib/fat_free_crm/engine.rb +3 -15
  191. data/lib/fat_free_crm/errors.rb +3 -15
  192. data/lib/fat_free_crm/exceptions.rb +3 -15
  193. data/lib/fat_free_crm/export_csv.rb +35 -0
  194. data/lib/fat_free_crm/exportable.rb +3 -15
  195. data/lib/fat_free_crm/fields.rb +5 -17
  196. data/lib/fat_free_crm/gem_dependencies.rb +3 -15
  197. data/lib/fat_free_crm/gem_ext.rb +3 -15
  198. data/lib/fat_free_crm/gem_ext/action_controller/base.rb +3 -15
  199. data/lib/fat_free_crm/gem_ext/active_model/serializers/xml/serializer/attribute.rb +3 -15
  200. data/lib/fat_free_crm/gem_ext/active_record/schema_dumper.rb +3 -15
  201. data/lib/fat_free_crm/gem_ext/active_support/buffered_logger.rb +3 -15
  202. data/lib/fat_free_crm/gem_ext/authlogic/session/cookies.rb +3 -15
  203. data/lib/fat_free_crm/gem_ext/rails/engine.rb +3 -15
  204. data/lib/fat_free_crm/gem_ext/rails/text_helper.rb +3 -15
  205. data/lib/fat_free_crm/gem_ext/rake/task.rb +3 -15
  206. data/lib/fat_free_crm/gem_ext/simple_form/action_view_extensions/form_helper.rb +3 -15
  207. data/lib/fat_free_crm/i18n.rb +3 -15
  208. data/lib/fat_free_crm/load_settings.rb +20 -0
  209. data/lib/fat_free_crm/mail_processor/base.rb +20 -18
  210. data/lib/fat_free_crm/mail_processor/comment_replies.rb +3 -15
  211. data/lib/fat_free_crm/mail_processor/dropbox.rb +4 -16
  212. data/lib/fat_free_crm/permissions.rb +3 -15
  213. data/lib/fat_free_crm/plugin.rb +3 -15
  214. data/lib/fat_free_crm/plugin_dependencies.rb +3 -15
  215. data/lib/fat_free_crm/renderers.rb +6 -25
  216. data/lib/fat_free_crm/sortable.rb +3 -15
  217. data/lib/fat_free_crm/tabs.rb +3 -15
  218. data/lib/fat_free_crm/version.rb +5 -17
  219. data/lib/fat_free_crm/view_factory.rb +3 -15
  220. data/lib/missing_translation_detector.rb +50 -0
  221. data/lib/tasks/db/migrate.rake +3 -15
  222. data/lib/tasks/db/schema.rake +3 -15
  223. data/lib/tasks/ffcrm/comment_replies.rake +3 -15
  224. data/lib/tasks/ffcrm/config.rake +28 -16
  225. data/lib/tasks/ffcrm/demo.rake +3 -15
  226. data/lib/tasks/ffcrm/dropbox.rake +3 -15
  227. data/lib/tasks/ffcrm/missing_translations.rake +33 -0
  228. data/lib/tasks/ffcrm/settings.rake +3 -15
  229. data/lib/tasks/ffcrm/setup.rake +15 -24
  230. data/lib/tasks/ffcrm/update_data.rake +3 -15
  231. data/spec/controllers/admin/groups_controller_spec.rb +5 -0
  232. data/spec/controllers/admin/users_controller_spec.rb +5 -0
  233. data/spec/controllers/applications_controller_spec.rb +5 -0
  234. data/spec/controllers/authentications_controller_spec.rb +5 -0
  235. data/spec/controllers/comments_controller_spec.rb +5 -0
  236. data/spec/controllers/emails_controller_spec.rb +5 -0
  237. data/spec/controllers/entities/accounts_controller_spec.rb +5 -0
  238. data/spec/controllers/entities/campaigns_controller_spec.rb +5 -0
  239. data/spec/controllers/entities/contacts_controller_spec.rb +5 -0
  240. data/spec/controllers/entities/leads_controller_spec.rb +5 -0
  241. data/spec/controllers/entities/opportunities_controller_spec.rb +5 -0
  242. data/spec/controllers/entities_controller_spec.rb +5 -0
  243. data/spec/controllers/home_controller_spec.rb +5 -0
  244. data/spec/controllers/lists_controller_spec.rb +5 -0
  245. data/spec/controllers/passwords_controller_spec.rb +5 -0
  246. data/spec/controllers/tasks_controller_spec.rb +7 -6
  247. data/spec/controllers/users_controller_spec.rb +5 -0
  248. data/spec/factories/account_factories.rb +5 -0
  249. data/spec/factories/campaign_factories.rb +6 -1
  250. data/spec/factories/contact_factories.rb +6 -1
  251. data/spec/factories/field_factories.rb +6 -1
  252. data/spec/factories/lead_factories.rb +6 -1
  253. data/spec/factories/list_factories.rb +6 -1
  254. data/spec/factories/opportunity_factories.rb +16 -5
  255. data/spec/factories/sequences.rb +7 -1
  256. data/spec/factories/setting_factories.rb +6 -1
  257. data/spec/factories/shared_factories.rb +5 -0
  258. data/spec/factories/subscription_factories.rb +5 -0
  259. data/spec/factories/tag_factories.rb +6 -1
  260. data/spec/factories/task_factories.rb +6 -1
  261. data/spec/factories/user_factories.rb +5 -0
  262. data/spec/features/acceptance_helper.rb +9 -0
  263. data/spec/{acceptance → features}/accounts_spec.rb +14 -9
  264. data/spec/{acceptance → features}/admin/groups_spec.rb +5 -0
  265. data/spec/{acceptance → features}/admin/users_spec.rb +9 -4
  266. data/spec/{acceptance → features}/campaigns_spec.rb +14 -16
  267. data/spec/{acceptance → features}/contacts_spec.rb +13 -16
  268. data/spec/{acceptance → features}/dashboard_spec.rb +5 -0
  269. data/spec/{acceptance → features}/leads_spec.rb +11 -12
  270. data/spec/{acceptance → features}/opportunities_overview_spec.rb +5 -0
  271. data/spec/{acceptance → features}/opportunities_spec.rb +14 -16
  272. data/spec/features/support/browser.rb +18 -0
  273. data/spec/{acceptance → features}/support/headless.rb +5 -3
  274. data/spec/{acceptance → features}/support/helpers.rb +6 -1
  275. data/spec/features/support/maintain_sessions.rb +10 -0
  276. data/spec/{acceptance → features}/support/paths.rb +9 -4
  277. data/spec/{acceptance → features}/support/selector_helpers.rb +6 -1
  278. data/spec/{acceptance → features}/tasks_spec.rb +7 -5
  279. data/spec/helpers/accounts_helper_spec.rb +5 -0
  280. data/spec/helpers/admin/field_groups_helper_spec.rb +5 -0
  281. data/spec/helpers/admin/plugins_helper_spec.rb +5 -0
  282. data/spec/helpers/admin/settings_helper_spec.rb +5 -0
  283. data/spec/helpers/admin/users_helper_spec.rb +5 -0
  284. data/spec/helpers/application_helper_spec.rb +5 -0
  285. data/spec/helpers/authentications_helper_spec.rb +5 -0
  286. data/spec/helpers/campaigns_helper_spec.rb +5 -0
  287. data/spec/helpers/comments_helper_spec.rb +5 -0
  288. data/spec/helpers/contacts_helper_spec.rb +5 -0
  289. data/spec/helpers/emails_helper_spec.rb +5 -0
  290. data/spec/helpers/fields_helper_spec.rb +5 -0
  291. data/spec/helpers/groups_helper_spec.rb +6 -1
  292. data/spec/helpers/home_helper_spec.rb +5 -0
  293. data/spec/helpers/leads_helper_spec.rb +5 -0
  294. data/spec/helpers/lists_helper_spec.rb +6 -1
  295. data/spec/helpers/opportunities_helper_spec.rb +5 -0
  296. data/spec/helpers/passwords_helper_spec.rb +5 -0
  297. data/spec/helpers/tasks_helper_spec.rb +5 -0
  298. data/spec/helpers/users_helper_spec.rb +5 -0
  299. data/spec/lib/comment_extensions_spec.rb +5 -0
  300. data/spec/lib/core_ext/string_spec.rb +5 -0
  301. data/spec/lib/errors_spec.rb +5 -0
  302. data/spec/lib/fields_spec.rb +5 -0
  303. data/spec/lib/mail_processor/base_spec.rb +5 -0
  304. data/spec/lib/mail_processor/comment_replies_spec.rb +5 -0
  305. data/spec/lib/mail_processor/dropbox_spec.rb +5 -0
  306. data/spec/lib/mail_processor/sample_emails/dropbox.rb +5 -0
  307. data/spec/lib/permissions_spec.rb +5 -0
  308. data/spec/lib/view_factory_spec.rb +5 -0
  309. data/spec/mailers/subscription_mailer_spec.rb +19 -1
  310. data/spec/mailers/user_mailer_spec.rb +6 -1
  311. data/spec/models/entities/account_contact_spec.rb +5 -0
  312. data/spec/models/entities/account_opportunity_spec.rb +5 -0
  313. data/spec/models/entities/account_spec.rb +6 -1
  314. data/spec/models/entities/campaign_spec.rb +5 -0
  315. data/spec/models/entities/contact_opportunity_spec.rb +5 -0
  316. data/spec/models/entities/contact_spec.rb +5 -0
  317. data/spec/models/entities/lead_spec.rb +5 -0
  318. data/spec/models/entities/opportunity_spec.rb +15 -2
  319. data/spec/models/fields/custom_field_date_pair_spec.rb +3 -15
  320. data/spec/models/fields/custom_field_pair_spec.rb +3 -15
  321. data/spec/models/fields/custom_field_spec.rb +5 -0
  322. data/spec/models/fields/field_group_spec.rb +5 -0
  323. data/spec/models/fields/field_spec.rb +5 -0
  324. data/spec/models/list_spec.rb +5 -0
  325. data/spec/models/observers/entity_observer_spec.rb +5 -0
  326. data/spec/models/polymorphic/address_spec.rb +5 -0
  327. data/spec/models/polymorphic/avatar_spec.rb +5 -0
  328. data/spec/models/polymorphic/comment_spec.rb +5 -0
  329. data/spec/models/polymorphic/email_spec.rb +5 -0
  330. data/spec/models/polymorphic/task_spec.rb +5 -0
  331. data/spec/models/polymorphic/version_spec.rb +26 -22
  332. data/spec/models/setting_spec.rb +5 -0
  333. data/spec/models/users/authentication_spec.rb +5 -0
  334. data/spec/models/users/group_spec.rb +6 -1
  335. data/spec/models/users/permission_spec.rb +5 -0
  336. data/spec/models/users/preference_spec.rb +5 -0
  337. data/spec/models/users/user_spec.rb +6 -1
  338. data/spec/routing/accounts_routing_spec.rb +5 -0
  339. data/spec/routing/admin/users_routing_spec.rb +5 -0
  340. data/spec/routing/campaigns_routing_spec.rb +5 -0
  341. data/spec/routing/comments_routing_spec.rb +5 -0
  342. data/spec/routing/contacts_routing_spec.rb +5 -0
  343. data/spec/routing/emails_routing_spec.rb +5 -0
  344. data/spec/routing/leads_routing_spec.rb +5 -0
  345. data/spec/routing/opportunities_routing_spec.rb +5 -0
  346. data/spec/routing/tasks_routing_spec.rb +5 -0
  347. data/spec/routing/users_routing_spec.rb +5 -0
  348. data/spec/shared/controllers.rb +8 -3
  349. data/spec/shared/models.rb +110 -105
  350. data/spec/spec_helper.rb +40 -22
  351. data/spec/support/assert_select.rb +5 -0
  352. data/spec/support/auth_macros.rb +5 -0
  353. data/spec/support/macros.rb +5 -0
  354. data/spec/support/mail_processor_mocks.rb +5 -0
  355. data/spec/support/rjs_support.rb +6 -1
  356. data/spec/support/uploaded_file.rb +5 -0
  357. data/spec/views/accounts/_edit.haml_spec.rb +5 -0
  358. data/spec/views/accounts/_new.haml_spec.rb +5 -0
  359. data/spec/views/accounts/create.rjs_spec.rb +5 -0
  360. data/spec/views/accounts/destroy.rjs_spec.rb +5 -0
  361. data/spec/views/accounts/edit.rjs_spec.rb +5 -0
  362. data/spec/views/accounts/index.haml_spec.rb +5 -0
  363. data/spec/views/accounts/index.rjs_spec.rb +5 -0
  364. data/spec/views/accounts/new.rjs_spec.rb +5 -0
  365. data/spec/views/accounts/show.haml_spec.rb +5 -0
  366. data/spec/views/accounts/update.rjs_spec.rb +5 -0
  367. data/spec/views/admin/users/_create.haml_spec.rb +5 -0
  368. data/spec/views/admin/users/create.rjs_spec.rb +5 -0
  369. data/spec/views/admin/users/destroy.rjs_spec.rb +5 -0
  370. data/spec/views/admin/users/edit.rjs_spec.rb +5 -0
  371. data/spec/views/admin/users/index.haml_spec.rb +5 -0
  372. data/spec/views/admin/users/index.rjs_spec.rb +5 -0
  373. data/spec/views/admin/users/new.rjs_spec.rb +5 -0
  374. data/spec/views/admin/users/reactivate.rjs_spec.rb +5 -0
  375. data/spec/views/admin/users/show.haml_spec.rb +5 -0
  376. data/spec/views/admin/users/suspend.rjs_spec.rb +5 -0
  377. data/spec/views/admin/users/update.rjs_spec.rb +5 -0
  378. data/spec/views/application/auto_complete.haml_spec.rb +5 -0
  379. data/spec/views/authentications/new.haml_spec.rb +5 -0
  380. data/spec/views/campaigns/_edit.haml_spec.rb +8 -2
  381. data/spec/views/campaigns/_new.haml_spec.rb +5 -0
  382. data/spec/views/campaigns/create.rjs_spec.rb +5 -0
  383. data/spec/views/campaigns/destroy.rjs_spec.rb +5 -0
  384. data/spec/views/campaigns/edit.rjs_spec.rb +5 -0
  385. data/spec/views/campaigns/index.haml_spec.rb +5 -0
  386. data/spec/views/campaigns/index.rjs_spec.rb +5 -0
  387. data/spec/views/campaigns/new.rjs_spec.rb +5 -0
  388. data/spec/views/campaigns/show.haml_spec.rb +5 -0
  389. data/spec/views/campaigns/update.rjs_spec.rb +5 -0
  390. data/spec/views/comments/new.rjs_spec.rb +5 -0
  391. data/spec/views/contacts/_edit.haml_spec.rb +5 -0
  392. data/spec/views/contacts/_new.haml_spec.rb +5 -0
  393. data/spec/views/contacts/create.rjs_spec.rb +5 -0
  394. data/spec/views/contacts/destroy.rjs_spec.rb +5 -0
  395. data/spec/views/contacts/edit.rjs_spec.rb +5 -0
  396. data/spec/views/contacts/index.haml_spec.rb +5 -0
  397. data/spec/views/contacts/index.rjs_spec.rb +5 -0
  398. data/spec/views/contacts/new.rjs_spec.rb +5 -0
  399. data/spec/views/contacts/show.haml_spec.rb +5 -0
  400. data/spec/views/contacts/update.rjs_spec.rb +5 -0
  401. data/spec/views/home/index.haml_spec.rb +5 -0
  402. data/spec/views/home/index.rjs_spec.rb +5 -0
  403. data/spec/views/home/options.rjs_spec.rb +5 -0
  404. data/spec/views/leads/_convert.haml_spec.rb +5 -0
  405. data/spec/views/leads/_edit.haml_spec.rb +5 -0
  406. data/spec/views/leads/_new.haml_spec.rb +5 -0
  407. data/spec/views/leads/_sidebar_show.haml_spec.rb +5 -0
  408. data/spec/views/leads/convert.rjs_spec.rb +5 -0
  409. data/spec/views/leads/create.rjs_spec.rb +5 -0
  410. data/spec/views/leads/destroy.rjs_spec.rb +5 -0
  411. data/spec/views/leads/edit.rjs_spec.rb +5 -0
  412. data/spec/views/leads/index.haml_spec.rb +5 -0
  413. data/spec/views/leads/index.rjs_spec.rb +5 -0
  414. data/spec/views/leads/new.rjs_spec.rb +5 -0
  415. data/spec/views/leads/promote.rjs_spec.rb +5 -0
  416. data/spec/views/leads/reject.rjs_spec.rb +5 -0
  417. data/spec/views/leads/show.haml_spec.rb +5 -0
  418. data/spec/views/leads/update.rjs_spec.rb +5 -0
  419. data/spec/views/opportunities/_edit.haml_spec.rb +5 -0
  420. data/spec/views/opportunities/_new.haml_spec.rb +5 -0
  421. data/spec/views/opportunities/create.rjs_spec.rb +5 -0
  422. data/spec/views/opportunities/destroy.rjs_spec.rb +5 -0
  423. data/spec/views/opportunities/edit.rjs_spec.rb +5 -0
  424. data/spec/views/opportunities/index.haml_spec.rb +5 -0
  425. data/spec/views/opportunities/index.rjs_spec.rb +5 -0
  426. data/spec/views/opportunities/new.rjs_spec.rb +5 -0
  427. data/spec/views/opportunities/show.haml_spec.rb +5 -0
  428. data/spec/views/opportunities/update.rjs_spec.rb +5 -0
  429. data/spec/views/tasks/_edit.haml_spec.rb +5 -0
  430. data/spec/views/tasks/complete.rjs_spec.rb +5 -0
  431. data/spec/views/tasks/create.rjs_spec.rb +5 -0
  432. data/spec/views/tasks/destroy.rjs_spec.rb +5 -0
  433. data/spec/views/tasks/edit.rjs_spec.rb +5 -0
  434. data/spec/views/tasks/index.haml_spec.rb +5 -0
  435. data/spec/views/tasks/new.rjs_spec.rb +5 -0
  436. data/spec/views/tasks/update.rjs_spec.rb +5 -0
  437. data/spec/views/users/avatar.rjs_spec.rb +5 -0
  438. data/spec/views/users/change_password.rjs_spec.rb +5 -0
  439. data/spec/views/users/edit.rjs_spec.rb +5 -0
  440. data/spec/views/users/password.rjs_spec.rb +5 -0
  441. data/spec/views/users/update.rjs_spec.rb +5 -0
  442. data/spec/views/users/upload_avatar.rjs_spec.rb +5 -0
  443. metadata +45 -101
  444. data/LICENSE +0 -620
  445. data/app/inputs/datetimepair_input.rb +0 -37
  446. data/config/initializers/custom_fields.rb +0 -21
  447. data/lib/fat_free_crm/core_ext/array.rb +0 -75
  448. data/lib/fat_free_crm/syck_yaml.rb +0 -21
  449. data/spec/acceptance/acceptance_helper.rb +0 -8
  450. data/spec/acceptance/support/browser.rb +0 -13
  451. data/spec/acceptance/support/maintain_sessions.rb +0 -5
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
7
 
3
8
  describe TasksController do
@@ -74,9 +79,7 @@ describe TasksController do
74
79
 
75
80
  it "should render all tasks as JSON for #{view} view" do
76
81
  @tasks = produce_tasks(current_user, view)
77
-
78
- request.env["HTTP_ACCEPT"] = "application/json"
79
- get :index, :view => view
82
+ get :index, :view => view, :format => :json
80
83
 
81
84
  (assigns[:tasks].keys.map(&:to_sym) - @tasks.keys).should == []
82
85
  (assigns[:tasks].values.flatten - @tasks.values.flatten).should == []
@@ -93,9 +96,7 @@ describe TasksController do
93
96
 
94
97
  it "should render all tasks as xml for #{view} view" do
95
98
  @tasks = produce_tasks(current_user, view)
96
-
97
- request.env["HTTP_ACCEPT"] = "application/xml"
98
- get :index, :view => view
99
+ get :index, :view => view, :format => :xml
99
100
 
100
101
  (assigns[:tasks].keys.map(&:to_sym) - @tasks.keys).should == []
101
102
  (assigns[:tasks].values.flatten - @tasks.values.flatten).should == []
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
7
 
3
8
  describe UsersController do
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :account do
3
8
  user
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :campaign do
3
8
  user
@@ -20,4 +25,4 @@ FactoryGirl.define do
20
25
  updated_at { FactoryGirl.generate(:time) }
21
26
  created_at { FactoryGirl.generate(:time) }
22
27
  end
23
- end
28
+ end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :contact do
3
8
  user
@@ -36,4 +41,4 @@ FactoryGirl.define do
36
41
  updated_at { FactoryGirl.generate(:time) }
37
42
  created_at { FactoryGirl.generate(:time) }
38
43
  end
39
- end
44
+ end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  sequence :klass_name do |x|
3
8
  ["Contact", "Account", "Opportunity", "Lead", "Campaign"].sample
@@ -31,4 +36,4 @@ FactoryGirl.define do
31
36
  factory :custom_field do
32
37
  type "CustomField"
33
38
  end
34
- end
39
+ end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :lead do
3
8
  user
@@ -26,4 +31,4 @@ FactoryGirl.define do
26
31
  updated_at { FactoryGirl.generate(:time) }
27
32
  created_at { FactoryGirl.generate(:time) }
28
33
  end
29
- end
34
+ end
@@ -1,6 +1,11 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :list do
3
8
  name "Foo List"
4
9
  url "/controller/action"
5
10
  end
6
- end
11
+ end
@@ -1,4 +1,18 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
7
+
8
+ sequence :opportunity_status do |s|
9
+ %w(prospecting analysis presentation proposal negotiation final_review won lost).sample
10
+ end
11
+
12
+ sequence :opportunity_open_status do |s|
13
+ %w(prospecting analysis presentation proposal negotiation final_review).sample
14
+ end
15
+
2
16
  factory :opportunity do
3
17
  user
4
18
  campaign
@@ -7,7 +21,7 @@ FactoryGirl.define do
7
21
  name { Faker::Lorem.sentence[0,64] }
8
22
  access "Public"
9
23
  source { %w(campaign cold_call conference online referral self web word_of_mouth other).sample }
10
- stage { OPPORTUNITY_STATUSES.sample }
24
+ stage { FactoryGirl.generate(:opportunity_status) }
11
25
  probability { rand(50) }
12
26
  amount { rand(1000) }
13
27
  discount { rand(100) }
@@ -19,10 +33,7 @@ FactoryGirl.define do
19
33
  end
20
34
 
21
35
  factory :opportunity_in_pipeline, :parent => :opportunity do
22
- stage { OPPORTUNITY_STATUSES.sample }
36
+ stage { FactoryGirl.generate(:opportunity_open_status) }
23
37
  end
24
38
 
25
- factory :open_opportunity, :parent => :opportunity do
26
- stage { OPPORTUNITY_STATUSES.sample }
27
- end
28
39
  end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  sequence :address do |n|
3
8
  Faker::Address.street_address + " " + Faker::Address.secondary_address + "\n"
@@ -23,4 +28,5 @@ FactoryGirl.define do
23
28
  sequence :date do |n|
24
29
  Date.today - n.days
25
30
  end
26
- end
31
+
32
+ end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :setting do
3
8
  name "foo"
@@ -5,4 +10,4 @@ FactoryGirl.define do
5
10
  updated_at { FactoryGirl.generate(:time) }
6
11
  created_at { FactoryGirl.generate(:time) }
7
12
  end
8
- end
13
+ end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :version do
3
8
  whodunnit ""
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  # Read about factories at https://github.com/thoughtbot/factory_girl
2
7
 
3
8
  FactoryGirl.define do
@@ -1,5 +1,10 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :tag do
3
8
  name { Faker::Internet.user_name }
4
9
  end
5
- end
10
+ end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :task do
3
8
  user
@@ -19,4 +24,4 @@ FactoryGirl.define do
19
24
  factory :completed_task, :parent => :task do
20
25
  completed_at { Date.yesterday }
21
26
  end
22
- end
27
+ end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  FactoryGirl.define do
2
7
  factory :user do
3
8
  username { FactoryGirl.generate(:username) }
@@ -0,0 +1,9 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
6
+ require 'spec_helper'
7
+
8
+ # Put your acceptance spec helpers inside /spec/features/support
9
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
@@ -1,4 +1,9 @@
1
- require File.expand_path("../acceptance_helper.rb", __FILE__)
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
6
+ require 'features/acceptance_helper'
2
7
 
3
8
  feature 'Accounts', %q{
4
9
  In order to increase customer satisfaction
@@ -31,8 +36,8 @@ feature 'Accounts', %q{
31
36
  fill_in 'comment_body', :with => 'This account is very important'
32
37
  click_button 'Create Account'
33
38
 
34
- page.should have_content('My new account')
35
- click_link 'My new account'
39
+ find('div#accounts').should have_content('My new account')
40
+ find('div#accounts').click_link('My new account') # avoid recent items link
36
41
  page.should have_content('+1 2345 6789')
37
42
  page.should have_content('http://www.example.com')
38
43
  page.should have_content('This account is very important')
@@ -58,10 +63,10 @@ feature 'Accounts', %q{
58
63
  page.should have_field("comment_body", :with => 'This account is very important')
59
64
  end
60
65
 
61
- scenario 'should view and edit an account', :js => true do
66
+ scenario 'should view and edit an account', :js => true, :versioning => true do
62
67
  FactoryGirl.create(:account, :name => "A new account")
63
68
  visit accounts_page
64
- click_link 'A new account'
69
+ find('div#accounts').click_link('A new account')
65
70
  page.should have_content('A new account')
66
71
  click_link 'Edit'
67
72
  fill_in 'account_name', :with => 'A new account *editted*'
@@ -75,7 +80,7 @@ feature 'Accounts', %q{
75
80
  scenario 'should delete an account', :js => true do
76
81
  FactoryGirl.create(:account, :name => "My new account")
77
82
  visit accounts_page
78
- click_link 'My new account'
83
+ find('div#accounts').click_link('My new account')
79
84
  click_link 'Delete?'
80
85
  page.should have_content('Are you sure you want to delete this account?')
81
86
  click_link 'Yes'
@@ -89,12 +94,12 @@ feature 'Accounts', %q{
89
94
  find('#accounts').should have_content("Account 1")
90
95
  fill_in 'query', :with => "Account 0"
91
96
  find('#accounts').should have_content("Account 0")
92
- find('#accounts').has_selector?('li', :count => 1)
97
+ find('#accounts').should_not have_content("Account 1")
93
98
  fill_in 'query', :with => "Account"
94
99
  find('#accounts').should have_content("Account 0")
95
100
  find('#accounts').should have_content("Account 1")
96
- find('#accounts').has_selector?('li', :count => 2)
97
101
  fill_in 'query', :with => "Contact"
98
- find('#accounts').has_selector?('li', :count => 0)
102
+ find('#accounts').should_not have_content("Account 0")
103
+ find('#accounts').should_not have_content("Account 1")
99
104
  end
100
105
  end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  require File.expand_path("../../acceptance_helper.rb", __FILE__)
2
7
 
3
8
  feature 'Groups tab', %q{
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  require File.expand_path("../../acceptance_helper.rb", __FILE__)
2
7
 
3
8
  feature 'Users tab', %q{
@@ -24,10 +29,10 @@ feature 'Users tab', %q{
24
29
  chosen_select('Superheroes', :from => 'user_group_ids')
25
30
 
26
31
  click_button 'Create User'
27
- page.should have_content('Captain Thunder')
28
- page.should have_content('Weather Inc.')
29
- page.should have_content('Superheroes')
30
- page.should have_content('lightning@example.com')
32
+ find('#users').should have_content('Captain Thunder')
33
+ find('#users').should have_content('Weather Inc.')
34
+ find('#users').should have_content('Superheroes')
35
+ find('#users').should have_content('lightning@example.com')
31
36
 
32
37
  end
33
38
 
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  require File.expand_path("../acceptance_helper.rb", __FILE__)
2
7
 
3
8
  feature 'Campaigns', %q{
@@ -32,7 +37,7 @@ feature 'Campaigns', %q{
32
37
  page.should have_content('Cool Campaign')
33
38
  page.should have_content('On Hold')
34
39
 
35
- click_link 'Cool Campaign'
40
+ find('div#campaigns').click_link 'Cool Campaign'
36
41
  page.should have_content('This campaign is very important')
37
42
 
38
43
  click_link "Dashboard"
@@ -48,7 +53,7 @@ feature 'Campaigns', %q{
48
53
  fill_in 'comment_body', :with => 'This campaign is very important'
49
54
  click_button 'Create Campaign'
50
55
 
51
- page.should have_field("comment_body", :with => 'This campaign is very important')
56
+ find('#comment_body').should have_content('This campaign is very important')
52
57
  end
53
58
 
54
59
  scenario 'should view and edit a campaign', :js => true do
@@ -60,9 +65,7 @@ feature 'Campaigns', %q{
60
65
  select 'Started', :from => 'campaign_status'
61
66
  click_button 'Save Campaign'
62
67
  page.should have_content('My Even Cooler Campaign')
63
- click_link 'Campaigns'
64
- page.should have_content('My Even Cooler Campaign')
65
-
68
+ page.should have_content('My Even Cooler Campaign')
66
69
  click_link 'Dashboard'
67
70
  page.should have_content("Bill Murray updated campaign My Even Cooler Campaign")
68
71
  end
@@ -75,27 +78,22 @@ feature 'Campaigns', %q{
75
78
  page.should have_content('Are you sure you want to delete this campaign?')
76
79
  click_link 'Yes'
77
80
  page.should have_content('Old Campaign has been deleted.')
78
- click_link 'Campaigns'
79
- page.should_not have_content('Old Campaign')
81
+ find('div#campaigns').should_not have_content('Old Campaign')
80
82
  end
81
83
 
82
84
  scenario 'should search for a campaign', :js => true do
83
- 4.times { |i| FactoryGirl.create(:campaign, :name => "Campaign #{i}") }
85
+ 2.times { |i| FactoryGirl.create(:campaign, :name => "Campaign #{i}") }
84
86
  visit campaigns_page
85
87
  find('#campaigns').should have_content("Campaign 0")
86
88
  find('#campaigns').should have_content("Campaign 1")
87
- find('#campaigns').should have_content("Campaign 2")
88
- find('#campaigns').should have_content("Campaign 3")
89
89
  fill_in 'query', :with => "Campaign 0"
90
90
  find('#campaigns').should have_content("Campaign 0")
91
- find('#campaigns').has_selector?('li', :count => 1)
91
+ find('#campaigns').should_not have_content("Campaign 1")
92
92
  fill_in 'query', :with => "Campaign"
93
93
  find('#campaigns').should have_content("Campaign 0")
94
94
  find('#campaigns').should have_content("Campaign 1")
95
- find('#campaigns').should have_content("Campaign 2")
96
- find('#campaigns').should have_content("Campaign 3")
97
- find('#campaigns').has_selector?('li', :count => 4)
98
- fill_in 'query', :with => "False campaign"
99
- find('#campaigns').has_selector?('li', :count => 0)
95
+ fill_in 'query', :with => "False"
96
+ find('#campaigns').should_not have_content("Campaign 0")
97
+ find('#campaigns').should_not have_content("Campaign 1")
100
98
  end
101
99
  end
@@ -1,3 +1,8 @@
1
+ # Copyright (c) 2008-2013 Michael Dvorkin and contributors.
2
+ #
3
+ # Fat Free CRM is freely distributable under the terms of MIT license.
4
+ # See MIT-LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
+ #------------------------------------------------------------------------------
1
6
  require File.expand_path("../acceptance_helper.rb", __FILE__)
2
7
 
3
8
  feature 'Contacts', %q{
@@ -31,11 +36,9 @@ feature 'Contacts', %q{
31
36
  click_link 'Comment'
32
37
  fill_in 'comment_body', :with => 'This is a very important person.'
33
38
  click_button 'Create Contact'
34
- page.should have_content('Testy McTest')
35
-
36
- click_link 'Testy McTest'
39
+ find('div#contacts').should have_content('Testy McTest')
40
+ find('div#contacts').click_link 'Testy McTest'
37
41
  page.should have_content('This is a very important person.')
38
-
39
42
  click_link "Dashboard"
40
43
  page.should have_content('Bill Murray created contact Testy McTest')
41
44
  page.should have_content('Bill Murray created comment on Testy McTest')
@@ -62,9 +65,6 @@ feature 'Contacts', %q{
62
65
  fill_in 'contact_email', :with => "test.subject@example.com"
63
66
  click_button 'Save Contact'
64
67
  page.should have_content('Test Subject')
65
- click_link 'Contacts'
66
- page.should have_content('Test Subject')
67
-
68
68
  click_link 'Dashboard'
69
69
  page.should have_content("Bill Murray updated contact Test Subject")
70
70
  end
@@ -77,25 +77,22 @@ feature 'Contacts', %q{
77
77
  page.should have_content('Are you sure you want to delete this contact?')
78
78
  click_link 'Yes'
79
79
  page.should have_content('Test Subject has been deleted.')
80
- click_link('Contacts')
81
80
  page.should_not have_content('Test Subject')
82
81
  end
83
82
 
84
83
  scenario 'should search for a contact', :js => true do
85
- 3.times { |i| FactoryGirl.create(:contact, :first_name => "Test", :last_name => "Subject \##{i}") }
84
+ 2.times { |i| FactoryGirl.create(:contact, :first_name => "Test", :last_name => "Subject \##{i}") }
86
85
  visit contacts_page
87
86
  find('#contacts').should have_content('Test Subject #0')
88
87
  find('#contacts').should have_content('Test Subject #1')
89
- find('#contacts').should have_content('Test Subject #2')
90
- fill_in 'query', :with => 'Test Subject #2'
91
- find('#contacts').should have_content('Test Subject #2')
92
- find('#contacts').has_selector?('li', :count => 1)
88
+ fill_in 'query', :with => 'Test Subject #1'
89
+ find('#contacts').should have_content('Test Subject #1')
90
+ find('#contacts').should_not have_content('Test Subject #0')
93
91
  fill_in 'query', :with => 'Test Subject'
94
92
  find('#contacts').should have_content('Test Subject #0')
95
93
  find('#contacts').should have_content('Test Subject #1')
96
- find('#contacts').should have_content('Test Subject #2')
97
- find('#contacts').has_selector?('li', :count => 3)
98
94
  fill_in 'query', :with => "Fake contact"
99
- find('#contacts').has_selector?('li', :count => 0)
95
+ find('#contacts').should_not have_content('Test Subject #0')
96
+ find('#contacts').should_not have_content('Test Subject #1')
100
97
  end
101
98
  end