about summary refs log tree commit diff
path: root/spec/controllers/settings/aliases_controller_spec.rb
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2023-04-16 17:52:44 +0200
committerClaire <claire.github-309c@sitedethib.com>2023-04-16 17:52:44 +0200
commitf9a9f9344bd6e1dbe653feaf316abdf51633f587 (patch)
treead1fef974e50279b9ffa54b504b9107f3f6f66c0 /spec/controllers/settings/aliases_controller_spec.rb
parentf28942cef991c9285236ea3ecace98c9b65c5242 (diff)
parentaf49d93fd6168c089530240a9ab4eccb975b8c42 (diff)
Merge branch 'main' into glitch-soc/merge-upstream
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