586586 u = UCPath ::User . new ( id )
587587 expect ( u . eligible? ) . to be ( false )
588588 end
589+
590+ it 'skips with zero Percentage of FullTime' do
591+ id = '10725310'
592+ stub_ucpath_user ( id )
593+ stub_ucpath_jobs ( id )
594+
595+ u = UCPath ::User . new ( id )
596+ expect ( u . eligible? ) . to be ( false )
597+ end
589598end
590599
591600describe UCPath ::Jobs do
@@ -603,7 +612,7 @@ def eligible(job)
603612 # Minimal structs to stand in for your “job” objects
604613 let ( :choose_job_struct ) { Struct . new ( :expected_end_date ) }
605614 let ( :eligible_job_struct ) do
606- Struct . new ( :hr_status_code , :expected_end_date , :org_relationship_code , :job_code , :percent_of_fulltime )
615+ Struct . new ( :hr_status_code , :expected_end_date , :org_relationship_code , :job_code , :percent_of_fulltime , :percent_of_fulltime_job )
607616 end
608617
609618 describe '#choose_job' do
@@ -651,56 +660,80 @@ def eligible(job)
651660 allow ( Date ) . to receive ( :today ) . and_return ( today )
652661 end
653662
663+ # context 'when position percentOfFullTime (in both position and job) is zero' do
664+ # let(:job) { eligible_job_struct.new('A', '', '', 'ANY', 0.0, 0.0) }
665+
666+ # it 'returns false' do
667+ # expect(eligible(job)).to be(false)
668+ # end
669+ # end
670+
671+ # context 'when position percentOfFullTime is zero in position but not zero in job' do
672+ # let(:job) { eligible_job_struct.new('A', '', '', 'ANY', 0.0, 0.1) }
673+
674+ # it 'returns true' do
675+ # expect(eligible(job)).to be(true)
676+ # end
677+ # end
678+
679+ # context 'when position percentOfFullTime is zero in job but not position' do
680+ # let(:job) { eligible_job_struct.new('A', '', '', 'ANY', 0.5, 0.0) }
681+
682+ # it 'returns true' do
683+ # expect(eligible(job)).to be(true)
684+ # end
685+ # end
686+
654687 context "when hr_status_code is not 'A'" do
655- let ( :job ) { eligible_job_struct . new ( 'I' , '' , '' , 'ANY' , 1.0 ) }
688+ let ( :job ) { eligible_job_struct . new ( 'I' , '' , '' , 'ANY' , 1.0 , 0.0 ) }
656689
657690 it 'returns false' do
658691 expect ( eligible ( job ) ) . to be ( false )
659692 end
660693 end
661694
662695 context "when hr_status_code is 'A' and expected_end_date is blank" do
663- let ( :job ) { eligible_job_struct . new ( 'A' , '' , '' , 'ANY' , 1.0 ) }
696+ let ( :job ) { eligible_job_struct . new ( 'A' , '' , '' , 'ANY' , 1.0 , 0.0 ) }
664697
665698 it 'returns true' do
666699 expect ( eligible ( job ) ) . to be ( true )
667700 end
668701 end
669702
670703 context "when hr_status_code is 'A' and expected_end_date is after today" do
671- let ( :job ) { eligible_job_struct . new ( 'A' , '2026-03-01' , '' , 'ANY' , 1.0 ) }
704+ let ( :job ) { eligible_job_struct . new ( 'A' , '2026-03-01' , '' , 'ANY' , 1.0 , 0.0 ) }
672705
673706 it 'returns true' do
674707 expect ( eligible ( job ) ) . to be ( true )
675708 end
676709 end
677710
678711 context "when hr_status_code is 'A' and expected_end_date is today" do
679- let ( :job ) { eligible_job_struct . new ( 'A' , '2026-02-23' , '' , 'ANY' , 1.0 ) }
712+ let ( :job ) { eligible_job_struct . new ( 'A' , '2026-02-23' , '' , 'ANY' , 1.0 , 0.0 ) }
680713
681714 it 'returns false (<= today is not eligible per implementation)' do
682715 expect ( eligible ( job ) ) . to be ( false )
683716 end
684717 end
685718
686719 context "when hr_status_code is 'A' and expected_end_date is before today" do
687- let ( :job ) { eligible_job_struct . new ( 'A' , '2026-02-01' , '' , 'ANY' , 1.0 ) }
720+ let ( :job ) { eligible_job_struct . new ( 'A' , '2026-02-01' , '' , 'ANY' , 1.0 , 0.0 ) }
688721
689722 it 'returns false' do
690723 expect ( eligible ( job ) ) . to be ( false )
691724 end
692725 end
693726
694727 context 'when org_relationship_code is blank and other conditions pass' do
695- let ( :job ) { eligible_job_struct . new ( 'A' , '' , '' , 'ANY' , 1.0 ) }
728+ let ( :job ) { eligible_job_struct . new ( 'A' , '' , '' , 'ANY' , 1.0 , 0.0 ) }
696729
697730 it 'returns true' do
698731 expect ( eligible ( job ) ) . to be ( true )
699732 end
700733 end
701734
702735 context "when org_relationship_code is 'CWR' and job_code is NOT in either allowlist" do
703- let ( :job ) { eligible_job_struct . new ( 'A' , '' , 'CWR' , 'NOT_ALLOWED' , 1.0 ) }
736+ let ( :job ) { eligible_job_struct . new ( 'A' , '' , 'CWR' , 'NOT_ALLOWED' , 1.0 , 0.0 ) }
704737
705738 before do
706739 allow ( Config ) . to receive ( :check_ucpath_code )
@@ -718,7 +751,7 @@ def eligible(job)
718751 end
719752
720753 context "when org_relationship_code is 'CWR' and job_code IS in visiting_scholar_job_code" do
721- let ( :job ) { eligible_job_struct . new ( 'A' , '' , 'CWR' , 'ALLOWED' , 1.0 ) }
754+ let ( :job ) { eligible_job_struct . new ( 'A' , '' , 'CWR' , 'ALLOWED' , 1.0 , 0.0 ) }
722755
723756 before do
724757 allow ( Config ) . to receive ( :check_ucpath_code )
@@ -736,7 +769,7 @@ def eligible(job)
736769 end
737770
738771 context "when org_relationship_code is 'CWR' and job_code IS in ucb_academic_dept_affiliate_code" do
739- let ( :job ) { eligible_job_struct . new ( 'A' , '' , 'CWR' , 'ALLOWED' , 1.0 ) }
772+ let ( :job ) { eligible_job_struct . new ( 'A' , '' , 'CWR' , 'ALLOWED' , 1.0 , 0.0 ) }
740773
741774 before do
742775 allow ( Config ) . to receive ( :check_ucpath_code )
0 commit comments