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.
- data/README.rdoc +182 -0
- data/app/models/abstract.rb +181 -0
- data/app/models/abstract_search.rb +50 -0
- data/app/models/abstract_validations.rb +324 -0
- data/app/models/address.rb +70 -0
- data/app/models/address_type.rb +15 -0
- data/app/models/addressing.rb +147 -0
- data/app/models/aliquot.rb +44 -0
- data/app/models/aliquot_sample_format.rb +13 -0
- data/app/models/analysis.rb +14 -0
- data/app/models/bc_request.rb +20 -0
- data/app/models/candidate_control.rb +101 -0
- data/app/models/context.rb +23 -0
- data/app/models/context_data_source.rb +4 -0
- data/app/models/county.rb +16 -0
- data/app/models/data_source.rb +24 -0
- data/app/models/diagnosis.rb +23 -0
- data/app/models/document_type.rb +16 -0
- data/app/models/document_version.rb +27 -0
- data/app/models/enrollment.rb +78 -0
- data/app/models/enrollment_validations.rb +167 -0
- data/app/models/follow_up.rb +16 -0
- data/app/models/follow_up_type.rb +18 -0
- data/app/models/gift_card.rb +22 -0
- data/app/models/gift_card_search.rb +137 -0
- data/app/models/home_exposure_response.rb +24 -0
- data/app/models/homex_outcome.rb +75 -0
- data/app/models/hospital.rb +22 -0
- data/app/models/icf_master_id.rb +30 -0
- data/app/models/icf_master_tracker.rb +217 -0
- data/app/models/icf_master_tracker_change.rb +9 -0
- data/app/models/icf_master_tracker_update.rb +50 -0
- data/app/models/ineligible_reason.rb +26 -0
- data/app/models/instrument.rb +26 -0
- data/app/models/instrument_type.rb +17 -0
- data/app/models/instrument_version.rb +28 -0
- data/app/models/interview.rb +122 -0
- data/app/models/interview_method.rb +17 -0
- data/app/models/interview_outcome.rb +16 -0
- data/app/models/language.rb +28 -0
- data/app/models/live_birth_data_update.rb +142 -0
- data/app/models/operational_event.rb +99 -0
- data/app/models/operational_event_type.rb +31 -0
- data/app/models/organization.rb +28 -0
- data/app/models/patient.rb +63 -0
- data/app/models/patient_validations.rb +118 -0
- data/app/models/person.rb +28 -0
- data/app/models/phone_number.rb +105 -0
- data/app/models/phone_type.rb +15 -0
- data/app/models/project.rb +39 -0
- data/app/models/project_outcome.rb +19 -0
- data/app/models/race.rb +31 -0
- data/app/models/refusal_reason.rb +23 -0
- data/app/models/sample.rb +168 -0
- data/app/models/sample_kit.rb +14 -0
- data/app/models/sample_outcome.rb +16 -0
- data/app/models/sample_temperature.rb +14 -0
- data/app/models/sample_type.rb +37 -0
- data/app/models/search.rb +195 -0
- data/app/models/section.rb +18 -0
- data/app/models/state.rb +25 -0
- data/app/models/study_subject.rb +237 -0
- data/app/models/study_subject_abstracts.rb +47 -0
- data/app/models/study_subject_addresses.rb +34 -0
- data/app/models/study_subject_associations.rb +38 -0
- data/app/models/study_subject_duplicates.rb +111 -0
- data/app/models/study_subject_enrollments.rb +17 -0
- data/app/models/study_subject_homex_outcome.rb +22 -0
- data/app/models/study_subject_identifier.rb +153 -0
- data/app/models/study_subject_interviews.rb +25 -0
- data/app/models/study_subject_languages.rb +21 -0
- data/app/models/study_subject_operational_events.rb +66 -0
- data/app/models/study_subject_patient.rb +177 -0
- data/app/models/study_subject_pii.rb +74 -0
- data/app/models/study_subject_races.rb +25 -0
- data/app/models/study_subject_search.rb +260 -0
- data/app/models/study_subject_validations.rb +116 -0
- data/app/models/subject_language.rb +11 -0
- data/app/models/subject_race.rb +11 -0
- data/app/models/subject_relationship.rb +21 -0
- data/app/models/subject_type.rb +22 -0
- data/app/models/tracing_status.rb +20 -0
- data/app/models/transfer.rb +40 -0
- data/app/models/unit.rb +14 -0
- data/app/models/vital_status.rb +19 -0
- data/app/models/zip_code.rb +36 -0
- data/config/abstract_fields.yml +1038 -0
- data/config/abstract_sections.yml +77 -0
- data/config/home_exposure_response_fields.yml +583 -0
- data/config/icf_master_tracker_update.yml +56 -0
- data/config/live_birth_data_update.yml +56 -0
- data/config/shared_use_db.yml +4 -0
- data/generators/ccls_engine/USAGE +2 -0
- data/generators/ccls_engine/ccls_engine_generator.rb +123 -0
- data/generators/ccls_engine/templates/autotest_ccls_engine.rb +3 -0
- data/generators/ccls_engine/templates/ccls_engine.rake +12 -0
- data/generators/ccls_engine/templates/fixtures/address_types.yml +30 -0
- data/generators/ccls_engine/templates/fixtures/context_data_sources.yml +54 -0
- data/generators/ccls_engine/templates/fixtures/contexts.yml +19 -0
- data/generators/ccls_engine/templates/fixtures/data_sources.yml +40 -0
- data/generators/ccls_engine/templates/fixtures/diagnoses.yml +40 -0
- data/generators/ccls_engine/templates/fixtures/document_types.yml +65 -0
- data/generators/ccls_engine/templates/fixtures/document_versions.csv +155 -0
- data/generators/ccls_engine/templates/fixtures/follow_up_types.yml +16 -0
- data/generators/ccls_engine/templates/fixtures/hospitals.yml +114 -0
- data/generators/ccls_engine/templates/fixtures/ineligible_reasons.yml +35 -0
- data/generators/ccls_engine/templates/fixtures/instrument_types.yml +26 -0
- data/generators/ccls_engine/templates/fixtures/instrument_versions.yml +22 -0
- data/generators/ccls_engine/templates/fixtures/instruments.yml +22 -0
- data/generators/ccls_engine/templates/fixtures/interview_methods.yml +30 -0
- data/generators/ccls_engine/templates/fixtures/interview_outcomes.yml +31 -0
- data/generators/ccls_engine/templates/fixtures/languages.yml +34 -0
- data/generators/ccls_engine/templates/fixtures/operational_event_types.yml +141 -0
- data/generators/ccls_engine/templates/fixtures/organizations.yml +198 -0
- data/generators/ccls_engine/templates/fixtures/people.yml +130 -0
- data/generators/ccls_engine/templates/fixtures/phone_types.yml +30 -0
- data/generators/ccls_engine/templates/fixtures/project_outcomes.yml +25 -0
- data/generators/ccls_engine/templates/fixtures/projects.yml +59 -0
- data/generators/ccls_engine/templates/fixtures/races.yml +52 -0
- data/generators/ccls_engine/templates/fixtures/refusal_reasons.yml +55 -0
- data/generators/ccls_engine/templates/fixtures/sample_outcomes.yml +36 -0
- data/generators/ccls_engine/templates/fixtures/sample_temperatures.yml +16 -0
- data/generators/ccls_engine/templates/fixtures/sample_types.yml +147 -0
- data/generators/ccls_engine/templates/fixtures/sections.yml +31 -0
- data/generators/ccls_engine/templates/fixtures/states.yml +363 -0
- data/generators/ccls_engine/templates/fixtures/subject_relationships.yml +46 -0
- data/generators/ccls_engine/templates/fixtures/subject_types.yml +30 -0
- data/generators/ccls_engine/templates/fixtures/tracing_statuses.yml +30 -0
- data/generators/ccls_engine/templates/fixtures/units.yml +13 -0
- data/generators/ccls_engine/templates/fixtures/vital_statuses.yml +28 -0
- data/generators/ccls_engine/templates/functional/roles_controller_test.rb +142 -0
- data/generators/ccls_engine/templates/functional/sessions_controller_test.rb +19 -0
- data/generators/ccls_engine/templates/functional/users_controller_test.rb +94 -0
- data/generators/ccls_engine/templates/images/sort_down.png +0 -0
- data/generators/ccls_engine/templates/images/sort_up.png +0 -0
- data/generators/ccls_engine/templates/initializer.rb +28 -0
- data/generators/ccls_engine/templates/javascripts/ccls_engine.js +24 -0
- data/generators/ccls_engine/templates/javascripts/jquery-ui.js +763 -0
- data/generators/ccls_engine/templates/javascripts/jquery.js +154 -0
- data/generators/ccls_engine/templates/javascripts/jrails.js +1 -0
- data/generators/ccls_engine/templates/migrations/create_user_invitations.rb +18 -0
- data/generators/ccls_engine/templates/migrations/create_users.rb +33 -0
- data/generators/ccls_engine/templates/migrations/drop_user_invitations.rb +18 -0
- data/generators/ccls_engine/templates/stylesheets/ccls_engine.css +180 -0
- data/generators/ccls_engine/templates/stylesheets/user.css +35 -0
- data/generators/ccls_engine/templates/stylesheets/users.css +23 -0
- data/generators/ccls_engine/templates/unit/core_extension_test.rb +18 -0
- data/generators/ccls_engine/templates/unit/role_test.rb +30 -0
- data/generators/ccls_engine/templates/unit/user_test.rb +321 -0
- data/lib/ccls-ccls_engine.rb +1 -0
- data/lib/ccls_engine.rb +135 -0
- data/lib/ccls_engine/action_view_extension.rb +3 -0
- data/lib/ccls_engine/action_view_extension/base.rb +53 -0
- data/lib/ccls_engine/action_view_extension/form_builder.rb +39 -0
- data/lib/ccls_engine/active_record_extension.rb +2 -0
- data/lib/ccls_engine/active_record_extension/base.rb +70 -0
- data/lib/ccls_engine/active_record_shared.rb +8 -0
- data/lib/ccls_engine/assertions.rb +69 -0
- data/lib/ccls_engine/autotest.rb +54 -0
- data/lib/ccls_engine/ccls_user.rb +117 -0
- data/lib/ccls_engine/core_extension.rb +14 -0
- data/lib/ccls_engine/date_and_time_formats.rb +30 -0
- data/lib/ccls_engine/factories.rb +880 -0
- data/lib/ccls_engine/factory_test_helper.rb +276 -0
- data/lib/ccls_engine/helper.rb +112 -0
- data/lib/ccls_engine/icf_master_tracker_update_test_helper.rb +121 -0
- data/lib/ccls_engine/live_birth_data_update_test_helper.rb +110 -0
- data/lib/ccls_engine/package_test_helper.rb +49 -0
- data/lib/ccls_engine/shared_database.rb +20 -0
- data/lib/ccls_engine/tasks.rb +1 -0
- data/lib/ccls_engine/test_tasks.rb +52 -0
- data/lib/ccls_engine/translation_table.rb +86 -0
- data/lib/shared_migration.rb +5 -0
- data/lib/surveyor/survey_extensions.rb +125 -0
- data/lib/tasks/application.rake +286 -0
- data/lib/tasks/calnet_authenticated.rake +6 -0
- data/lib/tasks/common_lib.rake +7 -0
- data/lib/tasks/database.rake +288 -0
- data/lib/tasks/documentation.rake +71 -0
- data/lib/tasks/homex_import.rake +723 -0
- data/lib/tasks/odms_import.rake +1116 -0
- data/lib/tasks/simply_authorized.rake +6 -0
- data/lib/tasks/ucb_ccls_engine_tasks.rake +4 -0
- data/lib/tasks/use_db.rake +4 -0
- data/rails/init.rb +4 -0
- data/test/unit/ccls/abstract_search_test.rb +150 -0
- data/test/unit/ccls/abstract_test.rb +674 -0
- data/test/unit/ccls/address_test.rb +155 -0
- data/test/unit/ccls/address_type_test.rb +25 -0
- data/test/unit/ccls/addressing_test.rb +466 -0
- data/test/unit/ccls/aliquot_sample_format_test.rb +20 -0
- data/test/unit/ccls/aliquot_test.rb +156 -0
- data/test/unit/ccls/analysis_test.rb +31 -0
- data/test/unit/ccls/bc_request_test.rb +43 -0
- data/test/unit/ccls/candidate_control_test.rb +712 -0
- data/test/unit/ccls/context_data_source_test.rb +26 -0
- data/test/unit/ccls/context_test.rb +40 -0
- data/test/unit/ccls/core_extension_test.rb +17 -0
- data/test/unit/ccls/county_test.rb +34 -0
- data/test/unit/ccls/data_source_test.rb +41 -0
- data/test/unit/ccls/diagnosis_test.rb +51 -0
- data/test/unit/ccls/document_type_test.rb +35 -0
- data/test/unit/ccls/document_version_test.rb +68 -0
- data/test/unit/ccls/enrollment_test.rb +575 -0
- data/test/unit/ccls/follow_up_test.rb +23 -0
- data/test/unit/ccls/follow_up_type_test.rb +34 -0
- data/test/unit/ccls/gift_card_search_test.rb +153 -0
- data/test/unit/ccls/gift_card_test.rb +40 -0
- data/test/unit/ccls/home_exposure_response_test.rb +83 -0
- data/test/unit/ccls/homex_outcome_test.rb +199 -0
- data/test/unit/ccls/hospital_test.rb +102 -0
- data/test/unit/ccls/icf_master_id_test.rb +30 -0
- data/test/unit/ccls/icf_master_tracker_change_test.rb +14 -0
- data/test/unit/ccls/icf_master_tracker_test.rb +132 -0
- data/test/unit/ccls/icf_master_tracker_update_test.rb +176 -0
- data/test/unit/ccls/ineligible_reason_test.rb +48 -0
- data/test/unit/ccls/instrument_test.rb +62 -0
- data/test/unit/ccls/instrument_type_test.rb +39 -0
- data/test/unit/ccls/instrument_version_test.rb +71 -0
- data/test/unit/ccls/interview_method_test.rb +44 -0
- data/test/unit/ccls/interview_outcome_test.rb +34 -0
- data/test/unit/ccls/interview_test.rb +298 -0
- data/test/unit/ccls/language_test.rb +47 -0
- data/test/unit/ccls/live_birth_data_update_test.rb +358 -0
- data/test/unit/ccls/operational_event_test.rb +187 -0
- data/test/unit/ccls/operational_event_type_test.rb +51 -0
- data/test/unit/ccls/organization_test.rb +64 -0
- data/test/unit/ccls/patient_test.rb +538 -0
- data/test/unit/ccls/person_test.rb +55 -0
- data/test/unit/ccls/phone_number_test.rb +244 -0
- data/test/unit/ccls/phone_type_test.rb +32 -0
- data/test/unit/ccls/project_outcome_test.rb +34 -0
- data/test/unit/ccls/project_test.rb +60 -0
- data/test/unit/ccls/race_test.rb +37 -0
- data/test/unit/ccls/refusal_reason_test.rb +52 -0
- data/test/unit/ccls/role_test.rb +26 -0
- data/test/unit/ccls/sample_kit_test.rb +35 -0
- data/test/unit/ccls/sample_outcome_test.rb +34 -0
- data/test/unit/ccls/sample_temperature_test.rb +25 -0
- data/test/unit/ccls/sample_test.rb +363 -0
- data/test/unit/ccls/sample_type_test.rb +58 -0
- data/test/unit/ccls/section_test.rb +34 -0
- data/test/unit/ccls/state_test.rb +31 -0
- data/test/unit/ccls/study_subject_abstracts_test.rb +115 -0
- data/test/unit/ccls/study_subject_addresses_test.rb +93 -0
- data/test/unit/ccls/study_subject_duplicates_test.rb +407 -0
- data/test/unit/ccls/study_subject_enrollments_test.rb +65 -0
- data/test/unit/ccls/study_subject_homex_outcome_test.rb +64 -0
- data/test/unit/ccls/study_subject_identifier_test.rb +439 -0
- data/test/unit/ccls/study_subject_interviews_test.rb +26 -0
- data/test/unit/ccls/study_subject_languages_test.rb +142 -0
- data/test/unit/ccls/study_subject_operational_events_test.rb +53 -0
- data/test/unit/ccls/study_subject_patient_test.rb +249 -0
- data/test/unit/ccls/study_subject_pii_test.rb +278 -0
- data/test/unit/ccls/study_subject_races_test.rb +203 -0
- data/test/unit/ccls/study_subject_search_test.rb +704 -0
- data/test/unit/ccls/study_subject_test.rb +770 -0
- data/test/unit/ccls/subject_language_test.rb +43 -0
- data/test/unit/ccls/subject_race_test.rb +35 -0
- data/test/unit/ccls/subject_relationship_test.rb +43 -0
- data/test/unit/ccls/subject_type_test.rb +40 -0
- data/test/unit/ccls/tracing_status_test.rb +32 -0
- data/test/unit/ccls/transfer_test.rb +81 -0
- data/test/unit/ccls/translation_table_test.rb +40 -0
- data/test/unit/ccls/unit_test.rb +21 -0
- data/test/unit/ccls/user_test.rb +156 -0
- data/test/unit/ccls/vital_status_test.rb +36 -0
- data/test/unit/ccls/zip_code_test.rb +55 -0
- 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'
|
data/lib/ccls_engine.rb
ADDED
|
@@ -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
|