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,110 @@
|
|
|
1
|
+
module Ccls::LiveBirthDataUpdateTestHelper
|
|
2
|
+
|
|
3
|
+
def create_test_file_and_live_birth_data_update(options={})
|
|
4
|
+
create_live_birth_data_update_test_file(options)
|
|
5
|
+
live_birth_data_update = create_live_birth_data_update_with_file
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def create_live_birth_data_update_with_file
|
|
9
|
+
live_birth_data_update = Factory(:live_birth_data_update,
|
|
10
|
+
:csv_file => File.open(csv_test_file_name) )
|
|
11
|
+
assert_not_nil live_birth_data_update.csv_file_file_name
|
|
12
|
+
live_birth_data_update
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def cleanup_live_birth_data_update_and_test_file(live_birth_data_update=nil)
|
|
16
|
+
if live_birth_data_update
|
|
17
|
+
live_birth_data_update_file = live_birth_data_update.csv_file.path
|
|
18
|
+
# explicit destroy to remove attachment
|
|
19
|
+
live_birth_data_update.destroy
|
|
20
|
+
unless live_birth_data_update_file.blank?
|
|
21
|
+
assert !File.exists?(live_birth_data_update_file)
|
|
22
|
+
end
|
|
23
|
+
if File.exists?("test/live_birth_data_update/#{live_birth_data_update.id}") &&
|
|
24
|
+
File.directory?("test/live_birth_data_update/#{live_birth_data_update.id}")
|
|
25
|
+
Dir.delete("test/live_birth_data_update/#{live_birth_data_update.id}")
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
if File.exists?(csv_test_file_name)
|
|
29
|
+
# explicit delete to remove test file
|
|
30
|
+
File.delete(csv_test_file_name)
|
|
31
|
+
end
|
|
32
|
+
assert !File.exists?(csv_test_file_name)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def create_case_for_live_birth_data_update
|
|
36
|
+
icf_master_id = Factory(:icf_master_id,:icf_master_id => '1234FAKE')
|
|
37
|
+
study_subject = Factory(:complete_case_study_subject)
|
|
38
|
+
study_subject.assign_icf_master_id
|
|
39
|
+
assert_equal '1234FAKE', study_subject.icf_master_id
|
|
40
|
+
study_subject
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def csv_file_header_array
|
|
44
|
+
%w{masterid ca_co_status biomom biodad date mother_full_name mother_maiden_name father_full_name child_full_name child_dobm child_dobd child_doby child_gender birthplace_country birthplace_state birthplace_city mother_hispanicity mother_hispanicity_mex mother_race mother_race_other father_hispanicity father_hispanicity_mex father_race father_race_other}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def csv_file_header
|
|
48
|
+
csv_file_header_array.collect{|s|"\"#{s}\""}.join(',')
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def csv_file_unknown
|
|
52
|
+
"1234FAKE,unknown,1,,1/18/2012,Jane Smith,Jones,John Smith,Jimmy Smith,1,6,2009,M,United States,CA,Bakersfield,2,2,1,,2,2,1,"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def csv_file_case_study_subject
|
|
56
|
+
"1234FAKE,case,1,,1/18/2012,Jane Smith,Jones,John Smith,Jimmy Smith,1,6,2009,M,United States,CA,Bakersfield,2,2,1,,2,2,1,"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def csv_file_control(options={})
|
|
60
|
+
c = control.merge(options)
|
|
61
|
+
csv_file_header_array.collect{|s|"\"#{c[s.to_sym]}\""}.join(',')
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def create_live_birth_data_update_test_file(options={})
|
|
65
|
+
File.open(csv_test_file_name,'w'){|f|
|
|
66
|
+
f.puts csv_file_header
|
|
67
|
+
f.puts csv_file_case_study_subject
|
|
68
|
+
f.puts csv_file_control(options) }
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# broke it down like this so that can access and compare the attributes
|
|
72
|
+
def control
|
|
73
|
+
{ :masterid => '1234FAKE',
|
|
74
|
+
:ca_co_status => 'control',
|
|
75
|
+
:biomom => 1,
|
|
76
|
+
:biodad => nil,
|
|
77
|
+
:date => nil,
|
|
78
|
+
:mother_full_name => 'Jill Johnson',
|
|
79
|
+
:mother_maiden_name => 'Jackson',
|
|
80
|
+
:father_full_name => 'Jack Johnson',
|
|
81
|
+
:child_full_name => 'Michael Johnson',
|
|
82
|
+
:child_dobm => 1,
|
|
83
|
+
:child_dobd => 6,
|
|
84
|
+
:child_doby => 2009,
|
|
85
|
+
:child_gender => 'M',
|
|
86
|
+
:birthplace_country => 'United States',
|
|
87
|
+
:birthplace_state => 'CA',
|
|
88
|
+
:birthplace_city => 'Oakland',
|
|
89
|
+
:mother_hispanicity => 2,
|
|
90
|
+
:mother_hispanicity_mex => 2,
|
|
91
|
+
:mother_race => 1,
|
|
92
|
+
:mother_race_other => nil,
|
|
93
|
+
:father_hispanicity => 2,
|
|
94
|
+
:father_hispanicity_mex => 2,
|
|
95
|
+
:father_race => 1,
|
|
96
|
+
:father_race_other => nil }
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def turn_off_paperclip_logging
|
|
100
|
+
# Is there I way to silence the paperclip output? Yes...
|
|
101
|
+
Paperclip.options[:log] = false
|
|
102
|
+
# Is there I way to capture the paperclip output for comparison? Don't know.
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# shouldn't be called test_... as makes it a test method!
|
|
106
|
+
def csv_test_file_name
|
|
107
|
+
"live_birth_data_update_test_file.csv"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Ccls::PackageTestHelper
|
|
2
|
+
#
|
|
3
|
+
# def stub_package_for_in_transit(options={})
|
|
4
|
+
# stub_package_for_successful_event(:event => 'Departed')
|
|
5
|
+
# stub_package_tracking_info
|
|
6
|
+
# end
|
|
7
|
+
#
|
|
8
|
+
# def stub_package_for_successful_delivery(options={})
|
|
9
|
+
# stub_package_for_successful_event
|
|
10
|
+
# stub_package_tracking_info
|
|
11
|
+
# end
|
|
12
|
+
#
|
|
13
|
+
# def stub_package_for_failure(options={})
|
|
14
|
+
# ActiveMerchant::Shipping::FedEx.any_instance.stubs(
|
|
15
|
+
# :find_tracking_info).raises(
|
|
16
|
+
# ActiveMerchant::Shipping::ResponseError)
|
|
17
|
+
# end
|
|
18
|
+
#
|
|
19
|
+
#protected
|
|
20
|
+
#
|
|
21
|
+
# def stub_package_for_successful_event(options={})
|
|
22
|
+
# shipment_event = shipment_event(options)
|
|
23
|
+
# ActiveMerchant::Shipping::TrackingResponse.any_instance.stubs(
|
|
24
|
+
# :shipment_events).returns([shipment_event])
|
|
25
|
+
# ActiveMerchant::Shipping::TrackingResponse.any_instance.stubs(
|
|
26
|
+
# :latest_event).returns(shipment_event)
|
|
27
|
+
# end
|
|
28
|
+
#
|
|
29
|
+
# def shipment_event(options={})
|
|
30
|
+
# ActiveMerchant::Shipping::ShipmentEvent.new(
|
|
31
|
+
# options[:event]||'Delivered',
|
|
32
|
+
# Time.now,
|
|
33
|
+
# ActiveMerchant::Shipping::Location.new({
|
|
34
|
+
# :city => 'BERKELEY',
|
|
35
|
+
# :state => 'CA',
|
|
36
|
+
# :zip => '94703'
|
|
37
|
+
# })
|
|
38
|
+
# )
|
|
39
|
+
# end
|
|
40
|
+
#
|
|
41
|
+
# def stub_package_tracking_info
|
|
42
|
+
# ActiveMerchant::Shipping::FedEx.any_instance.stubs(
|
|
43
|
+
# :find_tracking_info).returns(
|
|
44
|
+
# ActiveMerchant::Shipping::TrackingResponse.new(true ,'hello')
|
|
45
|
+
# )
|
|
46
|
+
# end
|
|
47
|
+
#
|
|
48
|
+
end
|
|
49
|
+
#ActiveSupport::TestCase.send(:include, Ccls::PackageTestHelper)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'active_record'
|
|
2
|
+
require 'use_db'
|
|
3
|
+
|
|
4
|
+
shared_db_file = File.join( Rails.root,'config','shared_database.yml')
|
|
5
|
+
if File.exists?(shared_db_file)
|
|
6
|
+
puts "Loading shared database mods."
|
|
7
|
+
USE_DB_CONFIG = File.join(File.dirname(__FILE__),'..','..','config','shared_use_db.yml')
|
|
8
|
+
OTHER_DB_FILES = [shared_db_file]
|
|
9
|
+
|
|
10
|
+
class ActiveSupport::TestCase
|
|
11
|
+
unless defined?(CLONED_DB_FOR_CCLS_TEST)
|
|
12
|
+
UseDbTest.prepare_test_db
|
|
13
|
+
UseDbTest.prepare_test_db(:prefix => "shared_")
|
|
14
|
+
CLONED_DB_FOR_CCLS_TEST = true
|
|
15
|
+
end
|
|
16
|
+
end if Rails.env == 'test'
|
|
17
|
+
else
|
|
18
|
+
puts "*\n* Expected, but didn't find, #{shared_db_file}"
|
|
19
|
+
puts "* Probably gonna crash now.\n*"
|
|
20
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Dir["#{File.dirname(__FILE__)}/../tasks/**/*.rake"].sort.each { |ext| load ext }
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module Ccls;end
|
|
2
|
+
|
|
3
|
+
namespace :test do
|
|
4
|
+
namespace :units do
|
|
5
|
+
Rake::TestTask.new(:ccls_engine => "db:test:prepare") do |t|
|
|
6
|
+
t.pattern = File.expand_path(File.join(
|
|
7
|
+
File.dirname(__FILE__),'/../../test/unit/ccls/*_test.rb'))
|
|
8
|
+
t.libs << "test"
|
|
9
|
+
t.verbose = true
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
# namespace :functionals do
|
|
13
|
+
# Rake::TestTask.new(:ccls_engine => "db:test:prepare") do |t|
|
|
14
|
+
# t.pattern = File.expand_path(File.join(
|
|
15
|
+
# File.dirname(__FILE__),'/../../test/functional/ccls/*_test.rb'))
|
|
16
|
+
# t.libs << "test"
|
|
17
|
+
# t.verbose = true
|
|
18
|
+
# end
|
|
19
|
+
# end
|
|
20
|
+
end
|
|
21
|
+
#Rake::Task['test:functionals'].prerequisites.unshift(
|
|
22
|
+
# "test:functionals:ccls_engine" )
|
|
23
|
+
Rake::Task['test:units'].prerequisites.unshift(
|
|
24
|
+
"test:units:ccls_engine" )
|
|
25
|
+
|
|
26
|
+
# I thought of possibly just including this file
|
|
27
|
+
# but that would make __FILE__ different.
|
|
28
|
+
# Hmmm
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# used in simply_helpful's rake test:coverage to run gem's
|
|
32
|
+
# tests in the context of the application
|
|
33
|
+
#
|
|
34
|
+
@gem_test_dirs ||= []
|
|
35
|
+
#@gem_test_dirs << File.expand_path(File.join(File.dirname(__FILE__),
|
|
36
|
+
# '/../../test/unit/ccls/'))
|
|
37
|
+
#@gem_test_dirs << File.expand_path(File.join(File.dirname(__FILE__),
|
|
38
|
+
# '/../../test/unit/ccls/helpers/'))
|
|
39
|
+
#@gem_test_dirs << File.expand_path(File.join(File.dirname(__FILE__),
|
|
40
|
+
# '/../../test/functional/ccls/'))
|
|
41
|
+
|
|
42
|
+
#
|
|
43
|
+
# More flexible. Find all test files, pick out their dir, uniq 'em and add.
|
|
44
|
+
#
|
|
45
|
+
Dir.glob(
|
|
46
|
+
File.expand_path(File.join(File.dirname(__FILE__),
|
|
47
|
+
'/../../test/*/ccls/**/*_test.rb'))
|
|
48
|
+
).collect{|f|
|
|
49
|
+
File.dirname(f)
|
|
50
|
+
}.uniq.each{ |dir|
|
|
51
|
+
@gem_test_dirs << dir
|
|
52
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
class TranslationTable
|
|
2
|
+
|
|
3
|
+
def self.[](key=nil)
|
|
4
|
+
short(key) || value(key) || nil
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# DO NOT MEMORIZE HERE. IT ENDS UP IN ALL SUBCLASSES
|
|
8
|
+
# Doesn't really seem necessary. It isn't that complicated.
|
|
9
|
+
|
|
10
|
+
# [1,2,999]
|
|
11
|
+
def self.valid_values
|
|
12
|
+
# @@valid_values ||= table.collect{ |x| x[:value] }
|
|
13
|
+
table.collect{ |x| x[:value] }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# [['Yes',1],['No',2],["Don't Know",999]]
|
|
17
|
+
def self.selector_options
|
|
18
|
+
# @@selector_options ||= table.collect{|x| [x[:long],x[:value]] }
|
|
19
|
+
table.collect{|x| [x[:long],x[:value]] }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
protected
|
|
23
|
+
|
|
24
|
+
def self.short(key)
|
|
25
|
+
index = table.find_index{|x| x[:short] == key.to_s }
|
|
26
|
+
( index.nil? ) ? nil : table[index][:value]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.value(key)
|
|
30
|
+
index = table.find_index{|x| x[:value] == key.to_i }
|
|
31
|
+
( index.nil? ) ? nil : table[index][:long]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.table
|
|
35
|
+
[]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class YNDK < TranslationTable
|
|
41
|
+
# unique translation table
|
|
42
|
+
def self.table
|
|
43
|
+
@@table ||= [
|
|
44
|
+
{ :value => 1, :short => 'yes', :long => "Yes" },
|
|
45
|
+
{ :value => 2, :short => 'no', :long => "No" },
|
|
46
|
+
{ :value => 999, :short => 'dk', :long => "Don't Know" }
|
|
47
|
+
]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
#
|
|
51
|
+
# YNDK[1] => 'Yes'
|
|
52
|
+
# YNDK['1'] => 'Yes'
|
|
53
|
+
# YNDK['yes'] => 1
|
|
54
|
+
# YNDK[:yes] => 1
|
|
55
|
+
# YNDK[:asdf] => nil
|
|
56
|
+
#
|
|
57
|
+
class YNODK < TranslationTable
|
|
58
|
+
def self.table
|
|
59
|
+
@@table ||= [
|
|
60
|
+
{ :value => 1, :short => 'yes', :long => "Yes" },
|
|
61
|
+
{ :value => 2, :short => 'no', :long => "No" },
|
|
62
|
+
{ :value => 3, :short => 'other', :long => "Other" },
|
|
63
|
+
{ :value => 999, :short => 'dk', :long => "Don't Know" }
|
|
64
|
+
]
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
class YNRDK < TranslationTable
|
|
68
|
+
def self.table
|
|
69
|
+
@@table ||= [
|
|
70
|
+
{ :value => 1, :short => 'yes', :long => "Yes" },
|
|
71
|
+
{ :value => 2, :short => 'no', :long => "No" },
|
|
72
|
+
{ :value => 999, :short => 'dk', :long => "Don't Know" },
|
|
73
|
+
{ :value => 888, :short => 'refused', :long => "Refused" }
|
|
74
|
+
]
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
class ADNA < TranslationTable
|
|
78
|
+
def self.table
|
|
79
|
+
@@table ||= [
|
|
80
|
+
{ :value => 1, :short => 'agree', :long => "Agree" },
|
|
81
|
+
{ :value => 2, :short => 'disagree', :long => "Do Not Agree" },
|
|
82
|
+
{ :value => 555, :short => 'na', :long => "N/A" },
|
|
83
|
+
{ :value => 999, :short => 'dk', :long => "Don't Know" }
|
|
84
|
+
]
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
#if surveyor_gem = Gem.searcher.find('surveyor')
|
|
2
|
+
#
|
|
3
|
+
# http://github.com/breakpointer/surveyor/issues/issue/45
|
|
4
|
+
#
|
|
5
|
+
# Survey access_code not guaranteed to be unique
|
|
6
|
+
#
|
|
7
|
+
# As there is no model validation or unique index in the
|
|
8
|
+
# database, there is no guarantee that your survey access_code
|
|
9
|
+
# will be unique. It is just a normalized version of your
|
|
10
|
+
# survey title.
|
|
11
|
+
#
|
|
12
|
+
#Running ...
|
|
13
|
+
#<pre>
|
|
14
|
+
# rake surveyor FILE=surveys/kitchen_sink_survey.rb APPEND=true
|
|
15
|
+
# rake surveyor FILE=surveys/kitchen_sink_survey.rb APPEND=true
|
|
16
|
+
# script/console
|
|
17
|
+
# Survey.all.collect(&:access_code)
|
|
18
|
+
#</pre>
|
|
19
|
+
#should show this to be true.
|
|
20
|
+
#
|
|
21
|
+
#This will show both surveys as able to be taken, but will
|
|
22
|
+
# only allow the first one when the attempt is made as the
|
|
23
|
+
# survey is found by
|
|
24
|
+
#
|
|
25
|
+
#<pre>
|
|
26
|
+
#@survey = Survey.find_by_access_code(params[:survey_code])
|
|
27
|
+
#</pre>
|
|
28
|
+
#
|
|
29
|
+
#In addition, adding a unique index to the db and model will
|
|
30
|
+
# make a mess when running
|
|
31
|
+
#<pre>
|
|
32
|
+
#rake surveyor FILE=surveys/kitchen_sink_survey.rb APPEND=true
|
|
33
|
+
#rake surveyor FILE=surveys/kitchen_sink_survey.rb APPEND=true
|
|
34
|
+
#</pre>
|
|
35
|
+
#as the access_code is not unique and the survey fixtures are
|
|
36
|
+
# loaded last, leaving the associations with an invalid survey_id.
|
|
37
|
+
# To avoid this, the survey fixture should probably be attempted first.
|
|
38
|
+
#
|
|
39
|
+
#
|
|
40
|
+
#Update...
|
|
41
|
+
#
|
|
42
|
+
#Adding something like ...
|
|
43
|
+
#<pre>
|
|
44
|
+
#def access_code=(value)
|
|
45
|
+
# counter = 2
|
|
46
|
+
# original_value = value
|
|
47
|
+
# while( ( survey = Survey.find_by_access_code(value) ) &&
|
|
48
|
+
# ( self.id != survey.id ) )
|
|
49
|
+
# value = [original_value,"_",counter].join
|
|
50
|
+
# counter += 1
|
|
51
|
+
# end
|
|
52
|
+
# super
|
|
53
|
+
#end
|
|
54
|
+
#</pre>
|
|
55
|
+
#... to Survey seems to provide a "fix" for this "problem",
|
|
56
|
+
# although I don't know how kosher it is.
|
|
57
|
+
#
|
|
58
|
+
#It works in my test environment, but does not actually work
|
|
59
|
+
# in the "rake surveyor" task as the survey is built from a
|
|
60
|
+
# different Survey model completely and then loaded into the
|
|
61
|
+
# database and not created though the application.
|
|
62
|
+
#
|
|
63
|
+
#My final "fix" was to add
|
|
64
|
+
#<pre>
|
|
65
|
+
#require 'lib/surveyor/survey_extensions'
|
|
66
|
+
#</pre>
|
|
67
|
+
#to my Rakefile and create the file
|
|
68
|
+
#<pre>
|
|
69
|
+
## > cat lib/surveyor/survey_extensions.rb
|
|
70
|
+
#if surveyor_gem = Gem.searcher.find('surveyor')
|
|
71
|
+
# require surveyor_gem.full_gem_path + '/script/surveyor/parser'
|
|
72
|
+
# require surveyor_gem.full_gem_path + '/script/surveyor/survey'
|
|
73
|
+
#end
|
|
74
|
+
#
|
|
75
|
+
#module SurveyParser
|
|
76
|
+
#module SurveyExtensions
|
|
77
|
+
# def self.included(base)
|
|
78
|
+
# base.class_eval do
|
|
79
|
+
# def initialize_with_unique_access_code(obj, args, opts)
|
|
80
|
+
# initialize_without_unique_access_code(obj, args, opts)
|
|
81
|
+
# counter = 2
|
|
82
|
+
# ac = self.access_code
|
|
83
|
+
# original_ac = self.access_code
|
|
84
|
+
# while( survey = ::Survey.find_by_access_code(ac) )
|
|
85
|
+
# ac = [original_ac,"_",counter].join
|
|
86
|
+
# counter += 1
|
|
87
|
+
# end
|
|
88
|
+
# self.access_code = ac
|
|
89
|
+
# end
|
|
90
|
+
# alias_method_chain :initialize, :unique_access_code
|
|
91
|
+
# end
|
|
92
|
+
# end
|
|
93
|
+
#end
|
|
94
|
+
#end
|
|
95
|
+
#SurveyParser::Survey.send(:include, SurveyParser::SurveyExtensions)
|
|
96
|
+
#</pre>
|
|
97
|
+
#It is not as clean as I would've liked, but works.
|
|
98
|
+
#
|
|
99
|
+
module SurveyParser
|
|
100
|
+
module SurveyExtensions
|
|
101
|
+
def self.included(base)
|
|
102
|
+
base.class_eval do
|
|
103
|
+
def initialize_with_unique_access_code(obj, args, opts)
|
|
104
|
+
initialize_without_unique_access_code(obj, args, opts)
|
|
105
|
+
counter = 2
|
|
106
|
+
ac = self.access_code
|
|
107
|
+
original_ac = self.access_code
|
|
108
|
+
while( survey = ::Survey.find_by_access_code(ac) )
|
|
109
|
+
ac = [original_ac,"_",counter].join
|
|
110
|
+
counter += 1
|
|
111
|
+
end
|
|
112
|
+
self.access_code = ac
|
|
113
|
+
end
|
|
114
|
+
alias_method_chain :initialize, :unique_access_code
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
# need in rvm/jruby
|
|
120
|
+
#require 'vendor/plugins/surveyor/script/surveyor/parser'
|
|
121
|
+
if surveyor_gem = Gem.source_index.find_name('ccls-surveyor').last
|
|
122
|
+
require surveyor_gem.full_gem_path + '/script/surveyor/parser'
|
|
123
|
+
require surveyor_gem.full_gem_path + '/script/surveyor/survey'
|
|
124
|
+
SurveyParser::Survey.send(:include, SurveyParser::SurveyExtensions)
|
|
125
|
+
end
|