diff --git a/spec/lib/mastodon/cli/accounts_spec.rb b/spec/lib/mastodon/cli/accounts_spec.rb
index 709400db315f6603deccfa472944dfbe2088f9a3..bcb353aeeeccb64127599bc0b686f31baa8e514c 100644
--- a/spec/lib/mastodon/cli/accounts_spec.rb
+++ b/spec/lib/mastodon/cli/accounts_spec.rb
@@ -532,4 +532,49 @@ describe Mastodon::CLI::Accounts do
       end
     end
   end
+
+  describe '#follow' do
+    context 'when the given username is not found' do
+      let(:arguments) { ['non_existent_username'] }
+
+      it 'exits with an error message indicating that no account with the given username was found' do
+        expect { cli.invoke(:follow, arguments) }.to output(
+          a_string_including('No such account')
+        ).to_stdout
+          .and raise_error(SystemExit)
+      end
+    end
+
+    context 'when the given username is found' do
+      let!(:target_account)   { Fabricate(:account) }
+      let!(:follower_bob)     { Fabricate(:account, username: 'bob') }
+      let!(:follower_rony)    { Fabricate(:account, username: 'rony') }
+      let!(:follower_charles) { Fabricate(:account, username: 'charles') }
+      let(:follow_service)    { instance_double(FollowService, call: nil) }
+      let(:scope)             { Account.local.without_suspended }
+
+      before do
+        allow(cli).to receive(:parallelize_with_progress).and_yield(follower_bob)
+                                                         .and_yield(follower_rony)
+                                                         .and_yield(follower_charles)
+                                                         .and_return([3, nil])
+        allow(FollowService).to receive(:new).and_return(follow_service)
+      end
+
+      it 'makes all local accounts follow the target account' do
+        cli.follow(target_account.username)
+
+        expect(cli).to have_received(:parallelize_with_progress).with(scope).once
+        expect(follow_service).to have_received(:call).with(follower_bob, target_account, any_args).once
+        expect(follow_service).to have_received(:call).with(follower_rony, target_account, any_args).once
+        expect(follow_service).to have_received(:call).with(follower_charles, target_account, any_args).once
+      end
+
+      it 'displays a successful message' do
+        expect { cli.follow(target_account.username) }.to output(
+          a_string_including('OK, followed target from 3 accounts')
+        ).to_stdout
+      end
+    end
+  end
 end