ccls-ccls_engine 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. data/README.rdoc +182 -0
  2. data/app/models/abstract.rb +181 -0
  3. data/app/models/abstract_search.rb +50 -0
  4. data/app/models/abstract_validations.rb +324 -0
  5. data/app/models/address.rb +70 -0
  6. data/app/models/address_type.rb +15 -0
  7. data/app/models/addressing.rb +147 -0
  8. data/app/models/aliquot.rb +44 -0
  9. data/app/models/aliquot_sample_format.rb +13 -0
  10. data/app/models/analysis.rb +14 -0
  11. data/app/models/bc_request.rb +20 -0
  12. data/app/models/candidate_control.rb +101 -0
  13. data/app/models/context.rb +23 -0
  14. data/app/models/context_data_source.rb +4 -0
  15. data/app/models/county.rb +16 -0
  16. data/app/models/data_source.rb +24 -0
  17. data/app/models/diagnosis.rb +23 -0
  18. data/app/models/document_type.rb +16 -0
  19. data/app/models/document_version.rb +27 -0
  20. data/app/models/enrollment.rb +78 -0
  21. data/app/models/enrollment_validations.rb +167 -0
  22. data/app/models/follow_up.rb +16 -0
  23. data/app/models/follow_up_type.rb +18 -0
  24. data/app/models/gift_card.rb +22 -0
  25. data/app/models/gift_card_search.rb +137 -0
  26. data/app/models/home_exposure_response.rb +24 -0
  27. data/app/models/homex_outcome.rb +75 -0
  28. data/app/models/hospital.rb +22 -0
  29. data/app/models/icf_master_id.rb +30 -0
  30. data/app/models/icf_master_tracker.rb +217 -0
  31. data/app/models/icf_master_tracker_change.rb +9 -0
  32. data/app/models/icf_master_tracker_update.rb +50 -0
  33. data/app/models/ineligible_reason.rb +26 -0
  34. data/app/models/instrument.rb +26 -0
  35. data/app/models/instrument_type.rb +17 -0
  36. data/app/models/instrument_version.rb +28 -0
  37. data/app/models/interview.rb +122 -0
  38. data/app/models/interview_method.rb +17 -0
  39. data/app/models/interview_outcome.rb +16 -0
  40. data/app/models/language.rb +28 -0
  41. data/app/models/live_birth_data_update.rb +142 -0
  42. data/app/models/operational_event.rb +99 -0
  43. data/app/models/operational_event_type.rb +31 -0
  44. data/app/models/organization.rb +28 -0
  45. data/app/models/patient.rb +63 -0
  46. data/app/models/patient_validations.rb +118 -0
  47. data/app/models/person.rb +28 -0
  48. data/app/models/phone_number.rb +105 -0
  49. data/app/models/phone_type.rb +15 -0
  50. data/app/models/project.rb +39 -0
  51. data/app/models/project_outcome.rb +19 -0
  52. data/app/models/race.rb +31 -0
  53. data/app/models/refusal_reason.rb +23 -0
  54. data/app/models/sample.rb +168 -0
  55. data/app/models/sample_kit.rb +14 -0
  56. data/app/models/sample_outcome.rb +16 -0
  57. data/app/models/sample_temperature.rb +14 -0
  58. data/app/models/sample_type.rb +37 -0
  59. data/app/models/search.rb +195 -0
  60. data/app/models/section.rb +18 -0
  61. data/app/models/state.rb +25 -0
  62. data/app/models/study_subject.rb +237 -0
  63. data/app/models/study_subject_abstracts.rb +47 -0
  64. data/app/models/study_subject_addresses.rb +34 -0
  65. data/app/models/study_subject_associations.rb +38 -0
  66. data/app/models/study_subject_duplicates.rb +111 -0
  67. data/app/models/study_subject_enrollments.rb +17 -0
  68. data/app/models/study_subject_homex_outcome.rb +22 -0
  69. data/app/models/study_subject_identifier.rb +153 -0
  70. data/app/models/study_subject_interviews.rb +25 -0
  71. data/app/models/study_subject_languages.rb +21 -0
  72. data/app/models/study_subject_operational_events.rb +66 -0
  73. data/app/models/study_subject_patient.rb +177 -0
  74. data/app/models/study_subject_pii.rb +74 -0
  75. data/app/models/study_subject_races.rb +25 -0
  76. data/app/models/study_subject_search.rb +260 -0
  77. data/app/models/study_subject_validations.rb +116 -0
  78. data/app/models/subject_language.rb +11 -0
  79. data/app/models/subject_race.rb +11 -0
  80. data/app/models/subject_relationship.rb +21 -0
  81. data/app/models/subject_type.rb +22 -0
  82. data/app/models/tracing_status.rb +20 -0
  83. data/app/models/transfer.rb +40 -0
  84. data/app/models/unit.rb +14 -0
  85. data/app/models/vital_status.rb +19 -0
  86. data/app/models/zip_code.rb +36 -0
  87. data/config/abstract_fields.yml +1038 -0
  88. data/config/abstract_sections.yml +77 -0
  89. data/config/home_exposure_response_fields.yml +583 -0
  90. data/config/icf_master_tracker_update.yml +56 -0
  91. data/config/live_birth_data_update.yml +56 -0
  92. data/config/shared_use_db.yml +4 -0
  93. data/generators/ccls_engine/USAGE +2 -0
  94. data/generators/ccls_engine/ccls_engine_generator.rb +123 -0
  95. data/generators/ccls_engine/templates/autotest_ccls_engine.rb +3 -0
  96. data/generators/ccls_engine/templates/ccls_engine.rake +12 -0
  97. data/generators/ccls_engine/templates/fixtures/address_types.yml +30 -0
  98. data/generators/ccls_engine/templates/fixtures/context_data_sources.yml +54 -0
  99. data/generators/ccls_engine/templates/fixtures/contexts.yml +19 -0
  100. data/generators/ccls_engine/templates/fixtures/data_sources.yml +40 -0
  101. data/generators/ccls_engine/templates/fixtures/diagnoses.yml +40 -0
  102. data/generators/ccls_engine/templates/fixtures/document_types.yml +65 -0
  103. data/generators/ccls_engine/templates/fixtures/document_versions.csv +155 -0
  104. data/generators/ccls_engine/templates/fixtures/follow_up_types.yml +16 -0
  105. data/generators/ccls_engine/templates/fixtures/hospitals.yml +114 -0
  106. data/generators/ccls_engine/templates/fixtures/ineligible_reasons.yml +35 -0
  107. data/generators/ccls_engine/templates/fixtures/instrument_types.yml +26 -0
  108. data/generators/ccls_engine/templates/fixtures/instrument_versions.yml +22 -0
  109. data/generators/ccls_engine/templates/fixtures/instruments.yml +22 -0
  110. data/generators/ccls_engine/templates/fixtures/interview_methods.yml +30 -0
  111. data/generators/ccls_engine/templates/fixtures/interview_outcomes.yml +31 -0
  112. data/generators/ccls_engine/templates/fixtures/languages.yml +34 -0
  113. data/generators/ccls_engine/templates/fixtures/operational_event_types.yml +141 -0
  114. data/generators/ccls_engine/templates/fixtures/organizations.yml +198 -0
  115. data/generators/ccls_engine/templates/fixtures/people.yml +130 -0
  116. data/generators/ccls_engine/templates/fixtures/phone_types.yml +30 -0
  117. data/generators/ccls_engine/templates/fixtures/project_outcomes.yml +25 -0
  118. data/generators/ccls_engine/templates/fixtures/projects.yml +59 -0
  119. data/generators/ccls_engine/templates/fixtures/races.yml +52 -0
  120. data/generators/ccls_engine/templates/fixtures/refusal_reasons.yml +55 -0
  121. data/generators/ccls_engine/templates/fixtures/sample_outcomes.yml +36 -0
  122. data/generators/ccls_engine/templates/fixtures/sample_temperatures.yml +16 -0
  123. data/generators/ccls_engine/templates/fixtures/sample_types.yml +147 -0
  124. data/generators/ccls_engine/templates/fixtures/sections.yml +31 -0
  125. data/generators/ccls_engine/templates/fixtures/states.yml +363 -0
  126. data/generators/ccls_engine/templates/fixtures/subject_relationships.yml +46 -0
  127. data/generators/ccls_engine/templates/fixtures/subject_types.yml +30 -0
  128. data/generators/ccls_engine/templates/fixtures/tracing_statuses.yml +30 -0
  129. data/generators/ccls_engine/templates/fixtures/units.yml +13 -0
  130. data/generators/ccls_engine/templates/fixtures/vital_statuses.yml +28 -0
  131. data/generators/ccls_engine/templates/functional/roles_controller_test.rb +142 -0
  132. data/generators/ccls_engine/templates/functional/sessions_controller_test.rb +19 -0
  133. data/generators/ccls_engine/templates/functional/users_controller_test.rb +94 -0
  134. data/generators/ccls_engine/templates/images/sort_down.png +0 -0
  135. data/generators/ccls_engine/templates/images/sort_up.png +0 -0
  136. data/generators/ccls_engine/templates/initializer.rb +28 -0
  137. data/generators/ccls_engine/templates/javascripts/ccls_engine.js +24 -0
  138. data/generators/ccls_engine/templates/javascripts/jquery-ui.js +763 -0
  139. data/generators/ccls_engine/templates/javascripts/jquery.js +154 -0
  140. data/generators/ccls_engine/templates/javascripts/jrails.js +1 -0
  141. data/generators/ccls_engine/templates/migrations/create_user_invitations.rb +18 -0
  142. data/generators/ccls_engine/templates/migrations/create_users.rb +33 -0
  143. data/generators/ccls_engine/templates/migrations/drop_user_invitations.rb +18 -0
  144. data/generators/ccls_engine/templates/stylesheets/ccls_engine.css +180 -0
  145. data/generators/ccls_engine/templates/stylesheets/user.css +35 -0
  146. data/generators/ccls_engine/templates/stylesheets/users.css +23 -0
  147. data/generators/ccls_engine/templates/unit/core_extension_test.rb +18 -0
  148. data/generators/ccls_engine/templates/unit/role_test.rb +30 -0
  149. data/generators/ccls_engine/templates/unit/user_test.rb +321 -0
  150. data/lib/ccls-ccls_engine.rb +1 -0
  151. data/lib/ccls_engine.rb +135 -0
  152. data/lib/ccls_engine/action_view_extension.rb +3 -0
  153. data/lib/ccls_engine/action_view_extension/base.rb +53 -0
  154. data/lib/ccls_engine/action_view_extension/form_builder.rb +39 -0
  155. data/lib/ccls_engine/active_record_extension.rb +2 -0
  156. data/lib/ccls_engine/active_record_extension/base.rb +70 -0
  157. data/lib/ccls_engine/active_record_shared.rb +8 -0
  158. data/lib/ccls_engine/assertions.rb +69 -0
  159. data/lib/ccls_engine/autotest.rb +54 -0
  160. data/lib/ccls_engine/ccls_user.rb +117 -0
  161. data/lib/ccls_engine/core_extension.rb +14 -0
  162. data/lib/ccls_engine/date_and_time_formats.rb +30 -0
  163. data/lib/ccls_engine/factories.rb +880 -0
  164. data/lib/ccls_engine/factory_test_helper.rb +276 -0
  165. data/lib/ccls_engine/helper.rb +112 -0
  166. data/lib/ccls_engine/icf_master_tracker_update_test_helper.rb +121 -0
  167. data/lib/ccls_engine/live_birth_data_update_test_helper.rb +110 -0
  168. data/lib/ccls_engine/package_test_helper.rb +49 -0
  169. data/lib/ccls_engine/shared_database.rb +20 -0
  170. data/lib/ccls_engine/tasks.rb +1 -0
  171. data/lib/ccls_engine/test_tasks.rb +52 -0
  172. data/lib/ccls_engine/translation_table.rb +86 -0
  173. data/lib/shared_migration.rb +5 -0
  174. data/lib/surveyor/survey_extensions.rb +125 -0
  175. data/lib/tasks/application.rake +286 -0
  176. data/lib/tasks/calnet_authenticated.rake +6 -0
  177. data/lib/tasks/common_lib.rake +7 -0
  178. data/lib/tasks/database.rake +288 -0
  179. data/lib/tasks/documentation.rake +71 -0
  180. data/lib/tasks/homex_import.rake +723 -0
  181. data/lib/tasks/odms_import.rake +1116 -0
  182. data/lib/tasks/simply_authorized.rake +6 -0
  183. data/lib/tasks/ucb_ccls_engine_tasks.rake +4 -0
  184. data/lib/tasks/use_db.rake +4 -0
  185. data/rails/init.rb +4 -0
  186. data/test/unit/ccls/abstract_search_test.rb +150 -0
  187. data/test/unit/ccls/abstract_test.rb +674 -0
  188. data/test/unit/ccls/address_test.rb +155 -0
  189. data/test/unit/ccls/address_type_test.rb +25 -0
  190. data/test/unit/ccls/addressing_test.rb +466 -0
  191. data/test/unit/ccls/aliquot_sample_format_test.rb +20 -0
  192. data/test/unit/ccls/aliquot_test.rb +156 -0
  193. data/test/unit/ccls/analysis_test.rb +31 -0
  194. data/test/unit/ccls/bc_request_test.rb +43 -0
  195. data/test/unit/ccls/candidate_control_test.rb +712 -0
  196. data/test/unit/ccls/context_data_source_test.rb +26 -0
  197. data/test/unit/ccls/context_test.rb +40 -0
  198. data/test/unit/ccls/core_extension_test.rb +17 -0
  199. data/test/unit/ccls/county_test.rb +34 -0
  200. data/test/unit/ccls/data_source_test.rb +41 -0
  201. data/test/unit/ccls/diagnosis_test.rb +51 -0
  202. data/test/unit/ccls/document_type_test.rb +35 -0
  203. data/test/unit/ccls/document_version_test.rb +68 -0
  204. data/test/unit/ccls/enrollment_test.rb +575 -0
  205. data/test/unit/ccls/follow_up_test.rb +23 -0
  206. data/test/unit/ccls/follow_up_type_test.rb +34 -0
  207. data/test/unit/ccls/gift_card_search_test.rb +153 -0
  208. data/test/unit/ccls/gift_card_test.rb +40 -0
  209. data/test/unit/ccls/home_exposure_response_test.rb +83 -0
  210. data/test/unit/ccls/homex_outcome_test.rb +199 -0
  211. data/test/unit/ccls/hospital_test.rb +102 -0
  212. data/test/unit/ccls/icf_master_id_test.rb +30 -0
  213. data/test/unit/ccls/icf_master_tracker_change_test.rb +14 -0
  214. data/test/unit/ccls/icf_master_tracker_test.rb +132 -0
  215. data/test/unit/ccls/icf_master_tracker_update_test.rb +176 -0
  216. data/test/unit/ccls/ineligible_reason_test.rb +48 -0
  217. data/test/unit/ccls/instrument_test.rb +62 -0
  218. data/test/unit/ccls/instrument_type_test.rb +39 -0
  219. data/test/unit/ccls/instrument_version_test.rb +71 -0
  220. data/test/unit/ccls/interview_method_test.rb +44 -0
  221. data/test/unit/ccls/interview_outcome_test.rb +34 -0
  222. data/test/unit/ccls/interview_test.rb +298 -0
  223. data/test/unit/ccls/language_test.rb +47 -0
  224. data/test/unit/ccls/live_birth_data_update_test.rb +358 -0
  225. data/test/unit/ccls/operational_event_test.rb +187 -0
  226. data/test/unit/ccls/operational_event_type_test.rb +51 -0
  227. data/test/unit/ccls/organization_test.rb +64 -0
  228. data/test/unit/ccls/patient_test.rb +538 -0
  229. data/test/unit/ccls/person_test.rb +55 -0
  230. data/test/unit/ccls/phone_number_test.rb +244 -0
  231. data/test/unit/ccls/phone_type_test.rb +32 -0
  232. data/test/unit/ccls/project_outcome_test.rb +34 -0
  233. data/test/unit/ccls/project_test.rb +60 -0
  234. data/test/unit/ccls/race_test.rb +37 -0
  235. data/test/unit/ccls/refusal_reason_test.rb +52 -0
  236. data/test/unit/ccls/role_test.rb +26 -0
  237. data/test/unit/ccls/sample_kit_test.rb +35 -0
  238. data/test/unit/ccls/sample_outcome_test.rb +34 -0
  239. data/test/unit/ccls/sample_temperature_test.rb +25 -0
  240. data/test/unit/ccls/sample_test.rb +363 -0
  241. data/test/unit/ccls/sample_type_test.rb +58 -0
  242. data/test/unit/ccls/section_test.rb +34 -0
  243. data/test/unit/ccls/state_test.rb +31 -0
  244. data/test/unit/ccls/study_subject_abstracts_test.rb +115 -0
  245. data/test/unit/ccls/study_subject_addresses_test.rb +93 -0
  246. data/test/unit/ccls/study_subject_duplicates_test.rb +407 -0
  247. data/test/unit/ccls/study_subject_enrollments_test.rb +65 -0
  248. data/test/unit/ccls/study_subject_homex_outcome_test.rb +64 -0
  249. data/test/unit/ccls/study_subject_identifier_test.rb +439 -0
  250. data/test/unit/ccls/study_subject_interviews_test.rb +26 -0
  251. data/test/unit/ccls/study_subject_languages_test.rb +142 -0
  252. data/test/unit/ccls/study_subject_operational_events_test.rb +53 -0
  253. data/test/unit/ccls/study_subject_patient_test.rb +249 -0
  254. data/test/unit/ccls/study_subject_pii_test.rb +278 -0
  255. data/test/unit/ccls/study_subject_races_test.rb +203 -0
  256. data/test/unit/ccls/study_subject_search_test.rb +704 -0
  257. data/test/unit/ccls/study_subject_test.rb +770 -0
  258. data/test/unit/ccls/subject_language_test.rb +43 -0
  259. data/test/unit/ccls/subject_race_test.rb +35 -0
  260. data/test/unit/ccls/subject_relationship_test.rb +43 -0
  261. data/test/unit/ccls/subject_type_test.rb +40 -0
  262. data/test/unit/ccls/tracing_status_test.rb +32 -0
  263. data/test/unit/ccls/transfer_test.rb +81 -0
  264. data/test/unit/ccls/translation_table_test.rb +40 -0
  265. data/test/unit/ccls/unit_test.rb +21 -0
  266. data/test/unit/ccls/user_test.rb +156 -0
  267. data/test/unit/ccls/vital_status_test.rb +36 -0
  268. data/test/unit/ccls/zip_code_test.rb +55 -0
  269. metadata +633 -0
@@ -0,0 +1,18 @@
1
+ #require File.dirname(__FILE__) + '/../../test_helper'
2
+ require 'test_helper'
3
+
4
+ class Ccls::CoreExtensionTest < ActiveSupport::TestCase
5
+
6
+ test "this class exists" do
7
+ assert class_exists?('Ccls::CoreExtensionTest')
8
+ end
9
+
10
+ test "non class exists but is not a class" do
11
+ assert !class_exists?('Ccls::UcbCclsEngineHelper')
12
+ end
13
+
14
+ test "bogus class does not exist" do
15
+ assert !class_exists?('SomeBogusClass')
16
+ end
17
+
18
+ end
@@ -0,0 +1,30 @@
1
+ #require File.dirname(__FILE__) + '/../../test_helper'
2
+ require 'test_helper'
3
+
4
+ class Ccls::RoleTest < ActiveSupport::TestCase
5
+
6
+ assert_should_act_as_list(:model => 'Role')
7
+ assert_should_require(:name,
8
+ :model => 'Role')
9
+ assert_should_require_unique(:name,
10
+ :model => 'Role')
11
+ assert_should_habtm(:users,
12
+ :model => 'Role')
13
+
14
+ test "should create role" do
15
+ assert_difference('Role.count',1) do
16
+ object = create_object
17
+ assert !object.new_record?,
18
+ "#{object.errors.full_messages.to_sentence}"
19
+ end
20
+ end
21
+
22
+ protected
23
+
24
+ def create_object(options = {})
25
+ record = Factory.build(:role,options)
26
+ record.save
27
+ record
28
+ end
29
+
30
+ end
@@ -0,0 +1,321 @@
1
+ #require File.dirname(__FILE__) + '/../../test_helper'
2
+ require 'test_helper'
3
+
4
+ class Ccls::UserTest < ActiveSupport::TestCase
5
+
6
+ assert_should_require(:uid,
7
+ :model => 'User')
8
+ assert_should_require_unique(:uid,
9
+ :model => 'User')
10
+ assert_should_habtm(:roles,
11
+ :model => 'User')
12
+
13
+ test "should create user" do
14
+ assert_difference 'User.count' do
15
+ user = create_user
16
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
17
+ assert !user.may_administrate?
18
+ end
19
+ end
20
+
21
+ test "should create reader" do
22
+ assert_difference 'User.count' do
23
+ user = create_user
24
+ user.roles << Role.find_by_name('reader')
25
+ assert user.is_reader?
26
+ assert user.may_read?
27
+ assert !user.is_administrator?
28
+ assert !user.may_administrate?
29
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
30
+ end
31
+ end
32
+
33
+ test "should create interviewer" do
34
+ assert_difference 'User.count' do
35
+ user = create_user
36
+ user.roles << Role.find_by_name('interviewer')
37
+ assert user.is_interviewer?
38
+ assert user.may_interview?
39
+ assert user.may_read?
40
+ assert !user.is_administrator?
41
+ assert !user.may_administrate?
42
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
43
+ end
44
+ end
45
+
46
+ test "should create editor" do
47
+ assert_difference 'User.count' do
48
+ user = create_user
49
+ user.roles << Role.find_by_name('editor')
50
+ assert user.is_editor?
51
+ assert user.may_edit?
52
+ assert user.may_interview?
53
+ assert user.may_read?
54
+ assert !user.is_administrator?
55
+ assert !user.may_administrate?
56
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
57
+ end
58
+ end
59
+
60
+ test "should create administrator" do
61
+ assert_difference 'User.count' do
62
+ user = create_user
63
+ user.roles << Role.find_by_name('administrator')
64
+ assert user.is_administrator?
65
+ assert user.may_edit?
66
+ assert user.may_interview?
67
+ assert user.may_read?
68
+ assert user.may_administrate?
69
+
70
+ assert user.may_view_permissions?
71
+ assert user.may_create_user_invitations?
72
+ assert user.may_view_users?
73
+ assert user.may_assign_roles?
74
+ # assert user.may_edit_subjects?
75
+ # assert user.may_moderate?
76
+ # assert user.moderator?
77
+ # assert user.editor?
78
+ assert user.may_maintain_pages?
79
+ # assert user.may_view_home_page_pics?
80
+ # assert user.may_view_calendar?
81
+ # assert user.may_view_packages?
82
+ # assert user.may_view_subjects?
83
+ # assert user.may_view_dust_kits?
84
+ # assert user.may_view_home_exposures?
85
+ # assert user.may_edit_addresses?
86
+ # assert user.may_edit_enrollments?
87
+ # assert user.employee?
88
+ # assert user.may_view_responses?
89
+ # assert user.may_take_surveys?
90
+ # assert user.may_view_study_events?
91
+ # assert user.may_create_survey_invitations?
92
+ assert user.may_view_user?
93
+ assert user.is_user?(user)
94
+ assert user.may_be_user?(user)
95
+ assert user.may_share_document?('document')
96
+ assert user.may_view_document?('document')
97
+
98
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
99
+ end
100
+ end
101
+
102
+ test "should create superuser" do
103
+ assert_difference 'User.count' do
104
+ user = create_user
105
+ user.roles << Role.find_by_name('superuser')
106
+ assert user.is_superuser?
107
+ assert user.is_super_user?
108
+ assert user.may_administrate?
109
+ assert user.may_edit?
110
+ assert user.may_interview?
111
+ assert user.may_read?
112
+ assert user.may_administrate?
113
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
114
+ end
115
+ end
116
+
117
+ # We are using UCB CAS for authentication so this is unused.
118
+ # If Authlogic or other is reused, uncomment all this.
119
+ #
120
+ # test "should require password matching confirmation" do
121
+ # assert_no_difference 'User.count' do
122
+ # u = create_user(
123
+ # :password => 'alpha',
124
+ # :password_confirmation => 'beta')
125
+ # assert u.errors.on(:password)
126
+ # end
127
+ # end
128
+ #
129
+ # test "should require password_confirmation" do
130
+ # assert_no_difference 'User.count' do
131
+ # u = create_user(:password_confirmation => nil)
132
+ # assert u.errors.on(:password_confirmation)
133
+ # end
134
+ # end
135
+ #
136
+ # test "should require password" do
137
+ # assert_no_difference 'User.count' do
138
+ # u = create_user(:password => nil)
139
+ # assert u.errors.on(:password)
140
+ # end
141
+ # end
142
+ #
143
+ # test "should require password with at least 8 chars" do
144
+ # invalid_password = "1nV@l!d"
145
+ # assert_no_difference 'User.count' do
146
+ # u = create_user(:password => invalid_password,
147
+ # :password_confirmation => invalid_password)
148
+ # assert u.errors.on(:password)
149
+ # end
150
+ # end
151
+ #
152
+ # test "should require password with symbol" do
153
+ # invalid_password = Factory.attributes_for(:user
154
+ # )[:password].gsub(/\W/,'a')
155
+ # assert_no_difference 'User.count' do
156
+ # u = create_user(:password => invalid_password,
157
+ # :password_confirmation => invalid_password)
158
+ # assert u.errors.on(:password)
159
+ # end
160
+ # end
161
+ #
162
+ # test "should require password with number" do
163
+ # invalid_password = Factory.attributes_for(:user
164
+ # )[:password].gsub(/\d/,'a')
165
+ # assert_no_difference 'User.count' do
166
+ # u = create_user(:password => invalid_password,
167
+ # :password_confirmation => invalid_password)
168
+ # assert u.errors.on(:password)
169
+ # end
170
+ # end
171
+ #
172
+ # test "should require password with lowercase letter" do
173
+ # invalid_password = Factory.attributes_for(:user)[:password].upcase
174
+ # assert_no_difference 'User.count' do
175
+ # u = create_user(:password => invalid_password,
176
+ # :password_confirmation => invalid_password)
177
+ # assert u.errors.on(:password)
178
+ # end
179
+ # end
180
+ #
181
+ # test "should require password with uppercase letter" do
182
+ # invalid_password = Factory.attributes_for(:user)[:password].downcase
183
+ # assert_no_difference 'User.count' do
184
+ # u = create_user(:password => invalid_password,
185
+ # :password_confirmation => invalid_password)
186
+ # assert u.errors.on(:password)
187
+ # end
188
+ # end
189
+ #
190
+ # test "should require properly formated email address" do
191
+ # assert_no_difference 'User.count' do
192
+ # u = create_user(:email => 'blah blah blah')
193
+ # assert u.errors.on(:email)
194
+ # end
195
+ # end
196
+ #
197
+ # test "should require email" do
198
+ # assert_no_difference 'User.count' do
199
+ # u = create_user(:email => nil)
200
+ # assert u.errors.on(:email)
201
+ # end
202
+ # end
203
+ #
204
+ # test "should require unique email" do
205
+ # user = create_user
206
+ # assert_no_difference 'User.count' do
207
+ # u = create_user(:email => user.email)
208
+ # assert u.errors.on(:email)
209
+ # end
210
+ # end
211
+ #
212
+ # test "should require username" do
213
+ # assert_no_difference 'User.count' do
214
+ # u = create_user(:username => nil)
215
+ # assert u.errors.on(:username)
216
+ # end
217
+ # end
218
+ #
219
+ # test "should require unique username" do
220
+ # user = create_user
221
+ # assert_no_difference 'User.count' do
222
+ # u = create_user(:username => user.username)
223
+ # assert u.errors.on(:username)
224
+ # end
225
+ # end
226
+ #
227
+ # test "should require unique perishable token" do
228
+ # user = create_user
229
+ # user.reload
230
+ # assert_not_nil user.perishable_token
231
+ # Authlogic::Random.stubs(:friendly_token).returns(user.perishable_token)
232
+ # User.stubs(:find_by_perishable_token).returns(nil)
233
+ # assert_difference('User.count',0) do
234
+ # # Just build the user
235
+ # u = Factory.build(:user)
236
+ # # Then force the perishable token
237
+ # u.reset_perishable_token
238
+ # # Then save which will validate and raise a
239
+ # # validation error.
240
+ # assert_not_nil u.perishable_token
241
+ # u.save
242
+ # assert u.errors.on(:perishable_token)
243
+ # end
244
+ # end
245
+ #
246
+ # test "should require unique persistence token" do
247
+ # user = create_user
248
+ # user.reload
249
+ # assert_not_nil user.persistence_token
250
+ # Authlogic::Random.stubs(:hex_token).returns(user.persistence_token)
251
+ # User.stubs(:find_by_persistence_token).returns(nil)
252
+ # assert_difference('User.count',0) do
253
+ # u = create_user
254
+ # assert_not_nil u.persistence_token
255
+ # assert u.errors.on(:persistence_token)
256
+ # end
257
+ # end
258
+ #
259
+ # test "should respond to extended methods" do
260
+ # user = create_user
261
+ # assert user.respond_to?(:reset_persistence_token_with_uniqueness)
262
+ # assert user.respond_to?(:reset_perishable_token_with_uniqueness)
263
+ # assert user.respond_to?(:reset_persistence_token_without_uniqueness)
264
+ # assert user.respond_to?(:reset_perishable_token_without_uniqueness)
265
+ # end
266
+
267
+
268
+ test "should deputize to create administrator" do
269
+ u = create_user
270
+ assert !u.role_names.include?('administrator')
271
+ u.deputize
272
+ assert u.role_names.include?('administrator')
273
+ end
274
+
275
+ # test "should return non-nil email" do
276
+ # user = create_user
277
+ # assert_not_nil user.email
278
+ # end
279
+
280
+ test "should return non-nil mail" do
281
+ user = create_user
282
+ assert_not_nil user.mail
283
+ end
284
+
285
+ test "should return non-nil gravatar_url" do
286
+ user = create_user
287
+ assert_not_nil user.gravatar_url
288
+ end
289
+
290
+ test "should respond to roles" do
291
+ user = create_user
292
+ assert user.respond_to?(:roles)
293
+ end
294
+
295
+ test "should have many roles" do
296
+ u = create_user
297
+ assert_equal 0, u.roles.length
298
+ roles = Role.all
299
+ assert roles.length > 0
300
+ roles.each do |role|
301
+ assert_difference("User.find(#{u.id}).role_names.length") {
302
+ assert_difference("User.find(#{u.id}).roles.length") {
303
+ u.roles << role
304
+ } }
305
+ end
306
+ end
307
+
308
+ protected
309
+
310
+ #
311
+ # This method is used so that an invalid user produces errors
312
+ # rather than raises exceptions which will cause the tests to fail.
313
+ #
314
+ def create_user(options = {})
315
+ record = Factory.build(:user,options)
316
+ record.save
317
+ record
318
+ end
319
+ alias_method :create_object, :create_user
320
+
321
+ end
@@ -0,0 +1 @@
1
+ require 'ccls_engine'
@@ -0,0 +1,135 @@
1
+ require 'ccls_engine/shared_database'
2
+
3
+ #gem 'delayed_job', '~>2.0.4'
4
+ #Delayed::Backend::ActiveRecord::Job.class_eval do
5
+ # use_db :prefix => "shared_"
6
+ #end
7
+
8
+ require 'active_record'
9
+ require 'active_support'
10
+ require 'action_controller'
11
+
12
+ gem 'ccls-common_lib'
13
+ require 'common_lib'
14
+
15
+ gem 'ccls-calnet_authenticated', '>= 1.1.4'
16
+ require 'ccls-calnet_authenticated'
17
+
18
+ gem 'rubycas-client', '>= 2.2.1'
19
+ require 'rubycas-client'
20
+
21
+ require 'casclient'
22
+ require 'casclient/frameworks/rails/filter'
23
+
24
+ gem 'ucb_ldap', '>= 1.4.2'
25
+ require 'ucb_ldap'
26
+
27
+ gem 'ccls-simply_authorized'
28
+ require 'simply_authorized'
29
+
30
+ gem 'ryanb-acts-as-list'
31
+ require 'acts_as_list'
32
+
33
+ module Ccls
34
+ # predefine namespace
35
+ end
36
+
37
+
38
+ #
39
+ # As this gem has controllers, which are subclasses of ApplicationController,
40
+ # in development mode, ApplicationController loads and unloads, which will
41
+ # cause the following error after the first request. I'd really prefer
42
+ # to find a better solution. The basic problem is creating a class in this
43
+ # gem that is a subclass of a class defined in the app.
44
+ # This is really only needed in development mode. I'm not sure what'll
45
+ # happen in production, but should work as well.
46
+ # It does mean that if you change application_controller in dev mode,
47
+ # you'll need to restart the app to see the changes as it won't reload.
48
+ #
49
+ # A better solution would be to add the controllers, views and routes
50
+ # to the generator installation and actually have them in the app.
51
+ # Or just put them their by hand. But now they won't be DRY. BooHoo.
52
+ #
53
+ #
54
+ # Processing ZipCodesController#index to json (for 169.229.196.225 at 2011-11-15 13:50:34) [GET]
55
+ # Parameters: {"q"=>"1785"}
56
+ #
57
+ # ArgumentError (A copy of ApplicationController has been removed from the module tree but is still active!):
58
+ # app/controllers/application_controller.rb:121:in `get_guidance'
59
+ # Rendered rescues/_trace (99.8ms)
60
+ # Rendered rescues/_request_and_response (1.2ms)
61
+ # Rendering rescues/layout (internal_server_error)
62
+ #require 'application_controller'
63
+
64
+
65
+ # This doesn't seem necessary. Removing it doesn't seem to do anything.
66
+ # And having it doesn't seem to do anything?
67
+ # Maybe the latest rails gem does this automagically?
68
+ #%w{models controllers}.each do |dir|
69
+ # path = File.expand_path(File.join(File.dirname(__FILE__), '../app', dir))
70
+ # ActiveSupport::Dependencies.autoload_paths << path
71
+ # ActiveSupport::Dependencies.autoload_once_paths << path
72
+ #end
73
+
74
+
75
+
76
+
77
+ HTML::WhiteListSanitizer.allowed_attributes.merge(%w(
78
+ id class style
79
+ ))
80
+
81
+ require 'ccls_engine/date_and_time_formats'
82
+ require 'ccls_engine/core_extension'
83
+ require 'ccls_engine/active_record_shared'
84
+ require 'ccls_engine/ccls_user'
85
+ require 'ccls_engine/translation_table'
86
+ require 'ccls_engine/helper'
87
+ require 'ccls_engine/active_record_extension'
88
+ require 'ccls_engine/action_view_extension'
89
+
90
+ if defined?(Rails) && Rails.env == 'test' && Rails.class_variable_defined?("@@configuration")
91
+ require 'active_support/test_case'
92
+ require 'ccls_engine/factory_test_helper'
93
+ require 'ccls_engine/package_test_helper'
94
+ require 'ccls_engine/assertions'
95
+ require 'factory_girl'
96
+ require 'ccls_engine/factories'
97
+
98
+ # These are not automatically included as they
99
+ # contain duplicate methods names.
100
+ # They must be explicitly included in the test classes
101
+ # that use them.
102
+ require 'ccls_engine/icf_master_tracker_update_test_helper'
103
+ require 'ccls_engine/live_birth_data_update_test_helper'
104
+ end
105
+
106
+ ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion(
107
+ :ccls => ['scaffold','ccls_engine','application'] )
108
+ ActionView::Helpers::AssetTagHelper.register_javascript_expansion(
109
+ :ccls => ['jquery','jquery-ui','jrails','application'] )
110
+
111
+
112
+ #ActionController::Routing::Routes.add_configuration_file(
113
+ # File.expand_path(
114
+ # File.join(
115
+ # File.dirname(__FILE__), '../config/routes.rb')))
116
+ #
117
+ #ActionController::Base.view_paths <<
118
+ # File.expand_path(
119
+ # File.join(
120
+ # File.dirname(__FILE__), '../app/views'))
121
+
122
+
123
+
124
+ gem 'paperclip', '= 2.4.2'
125
+ require 'paperclip'
126
+ if defined? ::Paperclip::Glue
127
+ ActiveRecord::Base.send(:include, ::Paperclip::Glue)
128
+ else
129
+ ActiveRecord::Base.send(:include, ::Paperclip)
130
+ end
131
+
132
+ ## methods or constants?
133
+ def valid_sex_values
134
+ %w( M F DK )
135
+ end