• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

codebar / planner / 28025002936

23 Jun 2026 12:07PM UTC coverage: 95.333% (+0.01%) from 95.32%
28025002936

push

github

web-flow
Merge pull request #2664 from codebar/feature/extract-subscription-callbacks

refactor: extract subscription mailing list callbacks to service

23 of 24 new or added lines in 3 files covered. (95.83%)

3554 of 3728 relevant lines covered (95.33%)

37.42 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.3
/app/controllers/subscriptions_controller.rb
1
class SubscriptionsController < ApplicationController
6✔
2
  before_action :has_access?
6✔
3

4
  def index
6✔
5
    @mailing_list = MailingListForm.new
33✔
6
    @groups = Group.includes(:chapter).references(:chapter).order('chapters.city')
33✔
7
    @member = MemberPresenter.new(current_user)
33✔
8
  end
9

10
  def create
6✔
11
    subscription = Subscription.new(group_id: group_id, member: current_user)
13✔
12

13
    if subscription.save
13✔
14
      SubscriptionMailingListService.subscribe(subscription)
13✔
15
      send_welcome_email(current_user, subscription)
13✔
16
      flash[:notice] = I18n.t('subscriptions.messages.group.subscribe', chapter: subscription.group.chapter.city,
13✔
17
                                                                        role: subscription.group.name)
18
    else
NEW
19
      flash[:notice] = subscription.errors.inspect
×
20
    end
21
    redirect_back fallback_location: root_path
13✔
22
  end
23

24
  def destroy
6✔
25
    # Don't error if subscription is not found
26
    subscription = current_user.subscriptions.find_by(group_id: group_id)
3✔
27
    SubscriptionMailingListService.unsubscribe(subscription) if subscription
3✔
28
    subscription&.destroy
3✔
29

30
    # Instead, rely on the group's existence (rather than the subscription)
31
    group = Group.find(group_id)
3✔
32
    flash[:notice] = I18n.t('subscriptions.messages.group.unsubscribe',
3✔
33
                            chapter: group.chapter.city,
34
                            role: group.name)
35

36
    redirect_back fallback_location: root_path
3✔
37
  end
38

39
  private
6✔
40

41
  def group_id
6✔
42
    params.expect(subscription: [:group_id])[:group_id]
19✔
43
  end
44

45
  def send_welcome_email(member, subscription)
6✔
46
    return if member.received_welcome_for?(subscription)
13✔
47

48
    MemberMailer.welcome_for_subscription(subscription).deliver_now
9✔
49
  end
50
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc