diff --git a/app/services/graduation_service.rb b/app/services/graduation_service.rb index beed31e5..0aaf5c8e 100644 --- a/app/services/graduation_service.rb +++ b/app/services/graduation_service.rb @@ -65,7 +65,7 @@ def confirm_registrar_status(candidate_etds) # Search registrar data for a student record with matching PPID, School, and Degree # @param [Hash] etd_solr_doc - Solr doc hash for corresponding ETD record - # @return [String, Hash] + # @return Array[Time, Hash{String->String}] # grad_date - ISO formatted date if the student has graduated; # grad_record - the corresponding registrar record def find_registrar_match(etd_solr_doc) @@ -73,8 +73,9 @@ def find_registrar_match(etd_solr_doc) school = SCHOOL_MAP[etd_solr_doc['school_tesim']&.first] degree = DEGREE_MAP[etd_solr_doc['degree_tesim']&.first] registrar_index = "#{ppid}-#{school}-#{degree}" + dual_major_index = "#{ppid}-UBUS-BBA" if school=='UCOL' && degree=='BBA' - grad_record = @registrar_data[registrar_index] || { 'degree status descr' => 'Unmatched' } + grad_record = @registrar_data[registrar_index] || @registrar_data[dual_major_index] || { 'degree status descr' => 'Unmatched' } grad_date = extract_date(grad_record) log_registrar_match(etd_solr_doc, registrar_index, grad_record, grad_date) [grad_date, grad_record] diff --git a/spec/fixtures/registrar_sample.json b/spec/fixtures/registrar_sample.json index 7dd2dd4c..5ed50563 100644 --- a/spec/fixtures/registrar_sample.json +++ b/spec/fixtures/registrar_sample.json @@ -1,7 +1,8 @@ -{"P0000001-GSAS-PHD":{"etd record key":"P0000001-GSAS-PHD","public person id":"P0000001","directory last name":"Doe","directory first name":"John","directory middle name":" ","preferred email address":"jdoe@example.com","home address 1":"123 Fake St","home address 2":" ","home address 3":" ","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"GSAS","acad career descr":"School of Graduate Studies","acad program code":"PHD","acad program descr":"Doctor of Philosophy","primary acad plan code":"BBSPHD","primary acad plan descr":"Biological and Biomedical Sci.","program status descr":"AC"}, -"P0000002-UCOL-LIBAS":{"etd record key":"P0000002-UCOL-LIBAS","public person id":"P0000002","directory last name":"Smith","directory first name":"Jane","directory middle name":"Cinderlla","preferred email address":"jsmith@example.com","home address 1":"321 Ash Way","home address 2":" ","home address 3":" ","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"UCOL","acad career descr":"Undergraduate Emory College","acad program code":"LIBAS","acad program descr":"Liberal Arts & Sciences","primary acad plan code":"POLISCIBA","primary acad plan descr":"Political Science","secondary acad plan code":"LACSND","secondary acad plan descr":"Latin Amer. & Caribbean Stu.","program status descr":"AC","degree code":"BS","degree status descr":"Awarded","degree status date":"2017-05-18"}, -"P0000003-UCOL-LIBAS":{"etd record key":"P0000003-UCOL-LIBAS","public person id":"P0000003","directory last name":"Hood","directory first name":"Riding","directory middle name":"Red","preferred email address":"rhood@example.com","home address 1":"12 Nana Ct","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"UCOL","acad career descr":"Undergraduate Emory College","acad program code":"LIBAS","acad program descr":"Liberal Arts & Sciences","primary acad plan code":"MATHCSBS","primary acad plan descr":"Mathematics & Computer Science","program status descr":"CM","degree code":"BS","degree status descr":"Awarded","degree status date":"2017-03-16"}, -"P0000004-THEO-MDV":{"etd record key":"P0000004-THEO-MDV","public person id":"P0000004","directory last name":"Smith","directory first name":"Jim","directory middle name":"James","preferred email address":"jim.s@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"THEO","acad career descr":"Theology","acad program code":"MDV","acad program descr":"Master of Divinity","primary acad plan code":"MDVDIVIN","primary acad plan descr":"Divinity","program status descr":"CM","degree code":"MDV","degree status descr":"Awarded","degree status date":"2018-01-12"}, -"P0000004-THEO-THD":{"etd record key":"P0000004-THEO-THD","public person id":"P0000004","directory last name":"Smith","directory first name":"Jim","directory middle name":"James","preferred email address":"jim.s@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"THEO","acad career descr":"Theology","acad program code":"THD","acad program descr":"Doctor of Theology","primary acad plan code":"THDCOUNSEL","primary acad plan descr":"Pastoral Counseling","program status descr":"AC","degree code":"THD","degree status descr":"Awarded","degree status date":"2020-05-23"}, -"P0000005-GSAS-PHD":{"etd record key":"P0000005-GSAS-PHD","public person id":"P0000005","directory last name":"Anderson","directory first name":"John","directory middle name":" ","preferred email address":"janders@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"GSAS","acad career descr":"School of Graduate Studies","acad program code":"PHD","acad program descr":"Doctor of Philosophy","primary acad plan code":"CHEMPHD","primary acad plan descr":"Chemistry","program status descr":"CM","degree status date":"2020-05-25","degree status descr":"Awarded"} +{"P0000001-GSAS-PHD": {"etd record key":"P0000001-GSAS-PHD", "public person id":"P0000001", "acad career code":"GSAS", "acad career descr":"School of Graduate Studies", "acad program code":"PHD", "acad program descr":"Doctor of Philosophy", "degree code":"PHD", "degree status date":" ", "degree status descr":" ", "primary acad plan code":"BBSPHD", "primary acad plan descr":"Biological and Biomedical Sci.", "program status descr":"AC", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Doe", "directory first name":"John","directory middle name":" ","preferred email address":"jdoe@example.com","home address 1":"123 Fake St","home address 2":" ","home address 3":" ","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"}, +"P0000002-UCOL-LIBAS":{"etd record key":"P0000002-UCOL-LIBAS","public person id":"P0000002", "acad career code":"UCOL", "acad career descr":"Undergraduate Emory College", "acad program code":"LIBAS", "acad program descr":"Liberal Arts & Sciences", "degree code":"BS", "degree status date":"2017-05-18", "degree status descr":"Awarded", "primary acad plan code":"POLISCIBA", "primary acad plan descr":"Political Science", "program status descr":"AC", "secondary acad plan code":"LACSND","secondary acad plan descr":"Latin Amer. & Caribbean Stu.", "directory last name":"Smith", "directory first name":"Jane","directory middle name":"Cinderlla","preferred email address":"jsmith@example.com","home address 1":"321 Ash Way","home address 2":" ","home address 3":" ","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"}, +"P0000003-UCOL-LIBAS":{"etd record key":"P0000003-UCOL-LIBAS","public person id":"P0000003", "acad career code":"UCOL", "acad career descr":"Undergraduate Emory College", "acad program code":"LIBAS", "acad program descr":"Liberal Arts & Sciences", "degree code":"BS", "degree status date":"2017-03-16", "degree status descr":"Awarded", "primary acad plan code":"MATHCSBS", "primary acad plan descr":"Mathematics & Computer Science", "program status descr":"CM", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Hood", "directory first name":"Riding","directory middle name":"Red","preferred email address":"rhood@example.com","home address 1":"12 Nana Ct","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"}, +"P0000004-THEO-MDV": {"etd record key":"P0000004-THEO-MDV", "public person id":"P0000004", "acad career code":"THEO", "acad career descr":"Theology", "acad program code":"MDV", "acad program descr":"Master of Divinity", "degree code":"MDV", "degree status date":"2018-01-12", "degree status descr":"Awarded", "primary acad plan code":"MDVDIVIN", "primary acad plan descr":"Divinity", "program status descr":"CM", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Smith", "directory first name":"Jim","directory middle name":"James","preferred email address":"jim.s@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"}, +"P0000004-THEO-THD": {"etd record key":"P0000004-THEO-THD", "public person id":"P0000004", "acad career code":"THEO", "acad career descr":"Theology", "acad program code":"THD", "acad program descr":"Doctor of Theology", "degree code":"THD", "degree status date":"2020-05-23", "degree status descr":"Awarded", "primary acad plan code":"THDCOUNSEL", "primary acad plan descr":"Pastoral Counseling", "program status descr":"AC", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Smith", "directory first name":"Jim","directory middle name":"James","preferred email address":"jim.s@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"}, +"P0000005-GSAS-PHD": {"etd record key":"P0000005-GSAS-PHD", "public person id":"P0000005", "acad career code":"GSAS", "acad career descr":"School of Graduate Studies", "acad program code":"PHD", "acad program descr":"Doctor of Philosophy", "degree code":"PHD", "degree status date":"2020-05-25", "degree status descr":"Awarded", "primary acad plan code":"CHEMPHD", "primary acad plan descr":"Chemistry", "program status descr":"CM", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Anderson", "directory first name":"John","directory middle name":" ","preferred email address":"janders@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"}, +"P0000006-UBUS-BBA": {"etd record key":"P0000006-UBUS-BBA", "public person id":"P0000006", "acad career code":"UBUS", "acad career descr":"Undergraduate Business", "acad program code":"BBA", "acad program descr":"Bachelor of Business Admin", "degree code":"BBA", "degree status date":"2022-05-25", "degree status descr":"Awarded", "primary acad plan code":"BUSBBA", "primary acad plan descr":"Business Administration", "program status descr":"CM", "secondary acad plan code":"BUSMUSIC","secondary acad plan descr":"Music", "directory last name":"Dieu-le-Veut","directory first name":"Anne","directory middle name":"","preferred email address":"adv@example.com","home address 1":"50 Rue de Mer","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"} } diff --git a/spec/services/graduation_service_spec.rb b/spec/services/graduation_service_spec.rb index 8d67e16d..f2fca0c0 100644 --- a/spec/services/graduation_service_spec.rb +++ b/spec/services/graduation_service_spec.rb @@ -66,6 +66,13 @@ end end end + describe "for undergrad business dual majors" do + let(:etd_solr_doc) { { 'id' => 'MatchingETD', 'depositor_ssim' => ['P0000006'], 'school_tesim' => ['Emory College'], 'degree_tesim' => ['B.B.A.'] } } + it 'accepts UBUS as relaxed match for UCOL' do + grad_date = grad_service.find_registrar_match(etd_solr_doc)[0] + expect(grad_date).to eq '2022-05-25'.to_time + end + end describe "for non-matches" do let(:etd_solr_doc) { { 'id' => 'UnmatchedETD', 'depositor_ssim' => ['P0000004'], 'school_tesim' => ['Emory College'], 'degree_tesim' => ['B.S.'] } } it 'logs warnings for near matches with the same PPID', :aggregate_failures do