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,43 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::SubjectLanguageTest < ActiveSupport::TestCase
4
+
5
+ assert_should_create_default_object
6
+ assert_should_initially_belong_to( :study_subject, :language )
7
+ assert_should_protect( :study_subject_id, :study_subject )
8
+
9
+ test "explicit Factory subject_language test" do
10
+ assert_difference('Language.count',1) {
11
+ assert_difference('StudySubject.count',1) {
12
+ assert_difference('SubjectLanguage.count',1) {
13
+ subject_language = Factory(:subject_language)
14
+ assert_not_nil subject_language.study_subject
15
+ assert_not_nil subject_language.language
16
+ } } }
17
+ end
18
+
19
+ test "should require other if language == other" do
20
+ assert_difference( "SubjectLanguage.count", 0 ) do
21
+ subject_language = create_subject_language(
22
+ :language_id => Language['other'].id )
23
+ assert subject_language.errors.on_attr_and_type?(:other,:blank)
24
+ end
25
+ end
26
+
27
+ test "should not require other if language != other" do
28
+ assert_difference( "SubjectLanguage.count", 1 ) do
29
+ subject_language = create_subject_language(
30
+ :language_id => Language['ENglish'].id )
31
+ assert !subject_language.errors.on_attr_and_type?(:other,:blank)
32
+ end
33
+ end
34
+
35
+ #protected
36
+ #
37
+ # def create_subject_language(options={})
38
+ # subject_language = Factory.build(:subject_language,options)
39
+ # subject_language.save
40
+ # subject_language
41
+ # end
42
+
43
+ end
@@ -0,0 +1,35 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::SubjectRaceTest < ActiveSupport::TestCase
4
+
5
+ assert_should_create_default_object
6
+ assert_should_initially_belong_to( :study_subject, :race )
7
+ assert_should_protect( :study_subject_id, :study_subject )
8
+
9
+ test "explicit Factory subject_race test" do
10
+ assert_difference('Race.count',1) {
11
+ assert_difference('StudySubject.count',1) {
12
+ assert_difference('SubjectRace.count',1) {
13
+ subject_race = Factory(:subject_race)
14
+ assert_not_nil subject_race.study_subject
15
+ assert_not_nil subject_race.race
16
+ } } }
17
+ end
18
+
19
+ test "should require other if race == other" do
20
+ assert_difference( "SubjectRace.count", 0 ) do
21
+ subject_race = create_subject_race(
22
+ :race_id => Race['other'].id )
23
+ assert subject_race.errors.on_attr_and_type?(:other,:blank)
24
+ end
25
+ end
26
+
27
+ test "should not require other if race != other" do
28
+ assert_difference( "SubjectRace.count", 1 ) do
29
+ subject_race = create_subject_race(
30
+ :race_id => Race['white'].id )
31
+ assert !subject_race.errors.on_attr_and_type?(:other,:blank)
32
+ end
33
+ end
34
+
35
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::SubjectRelationshipTest < ActiveSupport::TestCase
4
+
5
+ assert_should_behave_like_a_hash
6
+
7
+ assert_should_create_default_object
8
+ assert_should_act_as_list
9
+ assert_should_not_require_attributes( :position )
10
+
11
+ test "explicit Factory subject_relationship test" do
12
+ assert_difference('SubjectRelationship.count',1) {
13
+ subject_relationship = Factory(:subject_relationship)
14
+ assert_match /Key\d*/, subject_relationship.key
15
+ assert_match /Desc\d*/, subject_relationship.description
16
+ }
17
+ end
18
+
19
+ test "should return description as to_s" do
20
+ subject_relationship = create_subject_relationship
21
+ assert_equal subject_relationship.description, "#{subject_relationship}"
22
+ end
23
+
24
+ test "should find random" do
25
+ subject_relationship = SubjectRelationship.random()
26
+ assert subject_relationship.is_a?(SubjectRelationship)
27
+ end
28
+
29
+ test "should return nil on random when no records" do
30
+ SubjectRelationship.stubs(:count).returns(0)
31
+ subject_relationship = SubjectRelationship.random()
32
+ assert_nil subject_relationship
33
+ end
34
+
35
+ #protected
36
+ #
37
+ # def create_subject_relationship(options={})
38
+ # subject_relationship = Factory.build(:subject_relationship,options)
39
+ # subject_relationship.save
40
+ # subject_relationship
41
+ # end
42
+
43
+ end
@@ -0,0 +1,40 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::SubjectTypeTest < ActiveSupport::TestCase
4
+
5
+ assert_should_behave_like_a_hash
6
+
7
+ assert_should_create_default_object
8
+ assert_should_act_as_list
9
+ assert_should_have_many(:study_subjects)
10
+ assert_should_not_require_attributes( :position, :related_case_control_type )
11
+
12
+ test "explicit Factory subject_type test" do
13
+ assert_difference('SubjectType.count',1) {
14
+ subject_type = Factory(:subject_type)
15
+ assert_match /Key\d*/, subject_type.key
16
+ assert_match /Desc\d*/, subject_type.description
17
+ }
18
+ end
19
+
20
+ test "should return description as name" do
21
+ subject_type = create_subject_type
22
+ assert_equal subject_type.description,
23
+ subject_type.name
24
+ end
25
+
26
+ test "should return description as to_s" do
27
+ subject_type = create_subject_type
28
+ assert_equal subject_type.description,
29
+ "#{subject_type}"
30
+ end
31
+
32
+ #protected
33
+ #
34
+ # def create_subject_type(options={})
35
+ # subject_type = Factory.build(:subject_type,options)
36
+ # subject_type.save
37
+ # subject_type
38
+ # end
39
+
40
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::TracingStatusTest < ActiveSupport::TestCase
4
+
5
+ assert_should_behave_like_a_hash
6
+
7
+ assert_should_create_default_object
8
+ assert_should_act_as_list
9
+ assert_should_have_many(:enrollments)
10
+ assert_should_not_require_attributes( :position )
11
+
12
+ test "explicit Factory tracing_status test" do
13
+ assert_difference('TracingStatus.count',1) {
14
+ tracing_status = Factory(:tracing_status)
15
+ assert_match /Key\d*/, tracing_status.key
16
+ assert_match /Desc\d*/, tracing_status.description
17
+ }
18
+ end
19
+
20
+ # test "should return description as name" do
21
+ # tracing_status = create_tracing_status
22
+ # assert_equal tracing_status.description,
23
+ # tracing_status.name
24
+ # end
25
+
26
+ test "should return description as to_s" do
27
+ tracing_status = create_tracing_status
28
+ assert_equal tracing_status.description,
29
+ "#{tracing_status}"
30
+ end
31
+
32
+ end
@@ -0,0 +1,81 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::TransferTest < ActiveSupport::TestCase
4
+
5
+ assert_should_create_default_object
6
+ assert_should_initially_belong_to( :aliquot )
7
+ assert_should_initially_belong_to( :to_organization, :from_organization,
8
+ :class_name => 'Organization' )
9
+ # assert_should_require_attributes( :aliquot_id,
10
+ # :from_organization_id, :to_organization_id )
11
+ assert_should_not_require_attributes( :position, :amount, :reason, :is_permanent )
12
+ assert_should_require_attribute_length( :reason, :maximum => 250 )
13
+
14
+ test "explicit Factory transfer test" do
15
+ assert_difference('Organization.count',3) { # aliquot also creates an Organization
16
+ assert_difference('Aliquot.count',1) {
17
+ assert_difference('Transfer.count',1) {
18
+ transfer = Factory(:transfer)
19
+ assert_not_nil transfer.aliquot
20
+ assert_not_nil transfer.from_organization
21
+ assert_not_nil transfer.to_organization
22
+ } } }
23
+ end
24
+
25
+ test "should require aliquot" do
26
+ assert_difference( "Transfer.count", 0 ) do
27
+ transfer = create_transfer( :aliquot => nil)
28
+ assert !transfer.errors.on(:aliquot)
29
+ assert transfer.errors.on_attr_and_type?(:aliquot_id,:blank)
30
+ end
31
+ end
32
+
33
+ test "should require valid aliquot" do
34
+ assert_difference( "Transfer.count", 0 ) do
35
+ transfer = create_transfer( :aliquot_id => 0)
36
+ assert !transfer.errors.on(:aliquot_id)
37
+ assert transfer.errors.on_attr_and_type?(:aliquot,:blank)
38
+ end
39
+ end
40
+
41
+ test "should require from_organization" do
42
+ assert_difference( "Transfer.count", 0 ) do
43
+ transfer = create_transfer( :from_organization => nil)
44
+ assert !transfer.errors.on(:from_organization)
45
+ assert transfer.errors.on_attr_and_type?(:from_organization_id,:blank)
46
+ end
47
+ end
48
+
49
+ test "should require valid from_organization" do
50
+ assert_difference( "Transfer.count", 0 ) do
51
+ transfer = create_transfer( :from_organization_id => 0)
52
+ assert !transfer.errors.on(:from_organization_id)
53
+ assert transfer.errors.on_attr_and_type?(:from_organization,:blank)
54
+ end
55
+ end
56
+
57
+ test "should require to_organization" do
58
+ assert_difference( "Transfer.count", 0 ) do
59
+ transfer = create_transfer( :to_organization => nil)
60
+ assert !transfer.errors.on(:to_organization)
61
+ assert transfer.errors.on_attr_and_type?(:to_organization_id,:blank)
62
+ end
63
+ end
64
+
65
+ test "should require valid to_organization" do
66
+ assert_difference( "Transfer.count", 0 ) do
67
+ transfer = create_transfer( :to_organization_id => 0)
68
+ assert !transfer.errors.on(:to_organization_id)
69
+ assert transfer.errors.on_attr_and_type?(:to_organization,:blank)
70
+ end
71
+ end
72
+
73
+ #protected
74
+ #
75
+ # def create_transfer(options={})
76
+ # transfer = Factory.build(:transfer,options)
77
+ # transfer.save
78
+ # transfer
79
+ # end
80
+
81
+ end
@@ -0,0 +1,40 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::TranslationTableTest < ActiveSupport::TestCase
4
+
5
+ test "YNDK valid values" do
6
+ assert_equal YNDK.valid_values, [1,2,999]
7
+ end
8
+
9
+ test "YNDK selector options" do
10
+ assert_equal YNDK.selector_options, [['Yes',1],['No',2],["Don't Know",999]]
11
+ end
12
+
13
+ test "YNODK valid values" do
14
+ assert_equal YNODK.valid_values, [1,2,3,999]
15
+ end
16
+
17
+ test "YNODK selector options" do
18
+ assert_equal YNODK.selector_options,
19
+ [['Yes',1],['No',2],['Other',3],["Don't Know",999]]
20
+ end
21
+
22
+ test "YNRDK valid values" do
23
+ assert_equal YNRDK.valid_values, [1,2,999,888]
24
+ end
25
+
26
+ test "YNRDK selector options" do
27
+ assert_equal YNRDK.selector_options,
28
+ [['Yes',1],['No',2],["Don't Know",999],['Refused',888]]
29
+ end
30
+
31
+ test "ADNA valid values" do
32
+ assert_equal ADNA.valid_values, [1,2,555,999]
33
+ end
34
+
35
+ test "ADNA selector options" do
36
+ assert_equal ADNA.selector_options,
37
+ [['Agree',1],['Do Not Agree',2],['N/A',555],["Don't Know",999]]
38
+ end
39
+
40
+ end
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::UnitTest < ActiveSupport::TestCase
4
+
5
+ assert_should_behave_like_a_hash
6
+
7
+ assert_should_create_default_object
8
+ assert_should_act_as_list
9
+ assert_should_have_many( :aliquots, :samples )
10
+ assert_should_belong_to( :context )
11
+ assert_should_not_require_attributes( :position, :context_id )
12
+
13
+ test "explicit Factory unit test" do
14
+ assert_difference('Unit.count',1) {
15
+ unit = Factory(:unit)
16
+ assert_match /Key\d*/, unit.key
17
+ assert_match /Desc\d*/, unit.description
18
+ }
19
+ end
20
+
21
+ end
@@ -0,0 +1,156 @@
1
+ require 'test_helper'
2
+
3
+ class Ccls::UserTest < ActiveSupport::TestCase
4
+
5
+ assert_should_require(:uid)
6
+ assert_should_require_unique(:uid)
7
+ assert_should_habtm(:roles)
8
+
9
+ test "should create user" do
10
+ assert_difference 'User.count' do
11
+ user = create_user
12
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
13
+ assert !user.may_administrate?
14
+ end
15
+ end
16
+
17
+ test "should create reader" do
18
+ assert_difference 'User.count' do
19
+ user = create_user
20
+ user.roles << Role.find_by_name('reader')
21
+ assert user.is_reader?
22
+ assert user.may_read?
23
+ assert !user.is_administrator?
24
+ assert !user.may_administrate?
25
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
26
+ end
27
+ end
28
+
29
+ test "should create interviewer" do
30
+ assert_difference 'User.count' do
31
+ user = create_user
32
+ user.roles << Role.find_by_name('interviewer')
33
+ assert user.is_interviewer?
34
+ assert user.may_interview?
35
+ assert user.may_read?
36
+ assert !user.is_administrator?
37
+ assert !user.may_administrate?
38
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
39
+ end
40
+ end
41
+
42
+ test "should create editor" do
43
+ assert_difference 'User.count' do
44
+ user = create_user
45
+ user.roles << Role.find_by_name('editor')
46
+ assert user.is_editor?
47
+ assert user.may_edit?
48
+ assert user.may_interview?
49
+ assert user.may_read?
50
+ assert !user.is_administrator?
51
+ assert !user.may_administrate?
52
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
53
+ end
54
+ end
55
+
56
+ test "should create administrator" do
57
+ assert_difference 'User.count' do
58
+ user = create_user
59
+ user.roles << Role.find_by_name('administrator')
60
+ assert user.is_administrator?
61
+ assert user.may_edit?
62
+ assert user.may_interview?
63
+ assert user.may_read?
64
+ assert user.may_administrate?
65
+
66
+ assert user.may_view_permissions?
67
+ assert user.may_create_user_invitations?
68
+ assert user.may_view_users?
69
+ assert user.may_assign_roles?
70
+ # assert user.may_edit_subjects?
71
+ # assert user.may_moderate?
72
+ # assert user.moderator?
73
+ # assert user.editor?
74
+ assert user.may_maintain_pages?
75
+ # assert user.may_view_home_page_pics?
76
+ # assert user.may_view_calendar?
77
+ # assert user.may_view_packages?
78
+ # assert user.may_view_subjects?
79
+ # assert user.may_view_dust_kits?
80
+ # assert user.may_view_home_exposures?
81
+ # assert user.may_edit_addresses?
82
+ # assert user.may_edit_enrollments?
83
+ # assert user.employee?
84
+ # assert user.may_view_responses?
85
+ # assert user.may_take_surveys?
86
+ # assert user.may_view_study_events?
87
+ # assert user.may_create_survey_invitations?
88
+ assert user.may_view_user?
89
+ assert user.is_user?(user)
90
+ assert user.may_be_user?(user)
91
+ assert user.may_share_document?('document')
92
+ assert user.may_view_document?('document')
93
+
94
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
95
+ end
96
+ end
97
+
98
+ test "should create superuser" do
99
+ assert_difference 'User.count' do
100
+ user = create_user
101
+ user.roles << Role.find_by_name('superuser')
102
+ assert user.is_superuser?
103
+ assert user.is_super_user?
104
+ assert user.may_administrate?
105
+ assert user.may_edit?
106
+ assert user.may_interview?
107
+ assert user.may_read?
108
+ assert user.may_administrate?
109
+ assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"
110
+ end
111
+ end
112
+
113
+ test "should deputize to create administrator" do
114
+ u = create_user
115
+ assert !u.role_names.include?('administrator')
116
+ u.deputize
117
+ assert u.role_names.include?('administrator')
118
+ end
119
+
120
+ test "should return non-nil mail" do
121
+ user = create_user
122
+ assert_not_nil user.mail
123
+ end
124
+ test "should respond to roles" do
125
+ user = create_user
126
+ assert user.respond_to?(:roles)
127
+ end
128
+
129
+ test "should have many roles" do
130
+ u = create_user
131
+ assert_equal 0, u.roles.length
132
+ roles = Role.all
133
+ assert roles.length > 0
134
+ roles.each do |role|
135
+ assert_difference("User.find(#{u.id}).role_names.length") {
136
+ assert_difference("User.find(#{u.id}).roles.length") {
137
+ u.roles << role
138
+ } }
139
+ end
140
+ end
141
+
142
+ test "should return displayname as to_s" do
143
+ user = create_user(:displayname => "Mr Test")
144
+ assert_equal user.displayname, "Mr Test"
145
+ assert_equal user.displayname, "#{user}"
146
+ end
147
+
148
+ #protected
149
+ #
150
+ # def create_user(options = {})
151
+ # user = Factory.build(:user,options)
152
+ # user.save
153
+ # user
154
+ # end
155
+
156
+ end