about summary refs log tree commit diff
path: root/spec/controllers/settings/aliases_controller_spec.rb
diff options
context:
space:
mode:
authorMatt Jankowski <matt@jankowski.online>2023-04-11 11:35:39 +0200
committerGitHub <noreply@github.com>2023-04-11 11:35:39 +0200
commit36eeb70d5315be045a638d77f8ff0a71dce61076 (patch)
tree923f26358c714c41fa0b525bba6c5a4036480473 /spec/controllers/settings/aliases_controller_spec.rb
parenta2a66300d99ed53d63a7f065ffbed53d2ce074e3 (diff)
Spec coverage on Settings/ controllers specs (#24221)
Diffstat (limited to 'spec/controllers/settings/aliases_controller_spec.rb')
-rw-r--r--spec/controllers/settings/aliases_controller_spec.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/controllers/settings/aliases_controller_spec.rb b/spec/controllers/settings/aliases_controller_spec.rb
index 805f65988..ef8724faf 100644
--- a/spec/controllers/settings/aliases_controller_spec.rb
+++ b/spec/controllers/settings/aliases_controller_spec.rb
@@ -18,4 +18,50 @@ describe Settings::AliasesController do
       expect(response).to have_http_status(200)
     end
   end
+
+  describe 'POST #create' do
+    context 'with valid alias' do
+      before { stub_resolver }
+
+      it 'creates an alias for the user' do
+        expect do
+          post :create, params: { account_alias: { acct: 'new@example.com' } }
+        end.to change(AccountAlias, :count).by(1)
+
+        expect(response).to redirect_to(settings_aliases_path)
+      end
+    end
+
+    context 'with invalid alias' do
+      it 'does not create an alias for the user' do
+        expect do
+          post :create, params: { account_alias: { acct: 'format-wrong' } }
+        end.to_not change(AccountAlias, :count)
+
+        expect(response).to have_http_status(200)
+      end
+    end
+  end
+
+  describe 'DELETE #destroy' do
+    let(:account_alias) do
+      AccountAlias.new(account: user.account, acct: 'new@example.com').tap do |account_alias|
+        account_alias.save(validate: false)
+      end
+    end
+
+    it 'removes an alias' do
+      delete :destroy, params: { id: account_alias.id }
+
+      expect(response).to redirect_to(settings_aliases_path)
+      expect { account_alias.reload }.to raise_error(ActiveRecord::RecordNotFound)
+    end
+  end
+
+  private
+
+  def stub_resolver
+    resolver = instance_double(ResolveAccountService, call: Fabricate(:account))
+    allow(ResolveAccountService).to receive(:new).and_return(resolver)
+  end
 end