diff --git a/app/models/member.rb b/app/models/member.rb index 9650494..77c9e52 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -48,4 +48,8 @@ def self.filter_by_can_rent(filter_can_rent = false) end end + def senior? + date_of_birth.present? && date_of_birth < 60.years.ago.to_date + end + end diff --git a/app/views/members/index.html.erb b/app/views/members/index.html.erb index df059a5..5a1654b 100644 --- a/app/views/members/index.html.erb +++ b/app/views/members/index.html.erb @@ -41,11 +41,16 @@ <%= member.custom_number %> <%= member.tamil_name %> - <% if policy(member).edit? %> - <%= link_to member.name, edit_member_path(member), class: 'link-primary' %> - <% else %> - <%= member.name %> - <% end %> +
+ <% if policy(member).edit? %> + <%= link_to member.name, edit_member_path(member), class: 'link-primary' %> + <% else %> + <%= member.name %> + <% end %> + <% if member.senior? %> + <%= t('senior_member') %> + <% end %> +
<%= member.personal_number %> <%= member.section %> diff --git a/config/locales/en.yml b/config/locales/en.yml index e53d271..fa21f1a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,5 +1,6 @@ en: members: "Members" + senior_member: "Senior" new_member: "New Member" search_by_name_id_or_personal_number: "Search by name, ID or personal number" search: "Search" diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 2269ad7..dcb7549 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -1,5 +1,6 @@ ta: members: "உறுப்பினர்கள்" + senior_member: "மூத்த உறுப்பினர்" new_member: "புதிய உறுப்பினர்" search_by_name_id_or_personal_number: "உறுப்பினர் எண், பெயர் அல்லது நிரந்தர எண் மூலம் தேடவும்" search: "தேடு" diff --git a/test/controllers/members_controller_test.rb b/test/controllers/members_controller_test.rb index d20296c..d617a2a 100644 --- a/test/controllers/members_controller_test.rb +++ b/test/controllers/members_controller_test.rb @@ -156,6 +156,17 @@ class MembersControllerTest < ActionDispatch::IntegrationTest assert_select 'td', text: member.name end + test 'member list marks members older than 60 as senior' do + member = members(:johnny) + member.update!(date_of_birth: 61.years.ago.to_date) + log_in_as(staffs(:admino)) + + get members_path + + assert_response :success + assert_select 'span', text: I18n.t('senior_member'), count: 1 + end + test 'should throw flash when creating a second member with same mobile number' do log_in_as staffs(:admino) assert_difference 'Member.count' do diff --git a/test/models/member_test.rb b/test/models/member_test.rb index 4c02f97..540915d 100644 --- a/test/models/member_test.rb +++ b/test/models/member_test.rb @@ -122,4 +122,23 @@ def setup Member.expects(:all).once Member.filter_by_can_rent('false') end + + test 'senior? is true only when the member is older than 60' do + travel_to Date.new(2026, 8, 31) do + @member.date_of_birth = Date.new(1966, 8, 30) + assert_predicate @member, :senior? + + @member.date_of_birth = Date.new(1966, 8, 31) + assert_not_predicate @member, :senior? + + @member.date_of_birth = Date.new(1966, 9, 1) + assert_not_predicate @member, :senior? + end + end + + test 'senior? is false when the date of birth is missing' do + @member.date_of_birth = nil + + assert_not_predicate @member, :senior? + end end