forked from mastodon/mastodon
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Export and import
hide_notifications
alongside user mutes (mastodon…
…#10335) * Export hide_notifications along with user mutes * Import hide_notifications along with muted users list * Add headers for CSV exports
- Loading branch information
1 parent
beec5ee
commit e315428
Showing
8 changed files
with
121 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
bob | ||
|
||
eve@example.com | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Account address,Hide notifications | ||
bob,true | ||
eve@example.com,false | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
require 'rails_helper' | ||
|
||
RSpec.describe ImportService, type: :service do | ||
let!(:account) { Fabricate(:account) } | ||
let!(:bob) { Fabricate(:account, username: 'bob') } | ||
let!(:eve) { Fabricate(:account, username: 'eve', domain: 'example.com') } | ||
|
||
context 'import old-style list of muted users' do | ||
subject { ImportService.new } | ||
|
||
let(:csv) { attachment_fixture('mute-imports.txt') } | ||
|
||
describe 'when no accounts are muted' do | ||
let(:import) { Import.create(account: account, type: 'muting', data: csv) } | ||
it 'mutes the listed accounts, including notifications' do | ||
subject.call(import) | ||
expect(account.muting.count).to eq 2 | ||
expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true | ||
end | ||
end | ||
|
||
describe 'when some accounts are muted and overwrite is not set' do | ||
let(:import) { Import.create(account: account, type: 'muting', data: csv) } | ||
|
||
it 'mutes the listed accounts, including notifications' do | ||
account.mute!(bob, notifications: false) | ||
subject.call(import) | ||
expect(account.muting.count).to eq 2 | ||
expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true | ||
end | ||
end | ||
|
||
describe 'when some accounts are muted and overwrite is set' do | ||
let(:import) { Import.create(account: account, type: 'muting', data: csv, overwrite: true) } | ||
|
||
it 'mutes the listed accounts, including notifications' do | ||
account.mute!(bob, notifications: false) | ||
subject.call(import) | ||
expect(account.muting.count).to eq 2 | ||
expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true | ||
end | ||
end | ||
end | ||
|
||
context 'import new-style list of muted users' do | ||
subject { ImportService.new } | ||
|
||
let(:csv) { attachment_fixture('new-mute-imports.txt') } | ||
|
||
describe 'when no accounts are muted' do | ||
let(:import) { Import.create(account: account, type: 'muting', data: csv) } | ||
it 'mutes the listed accounts, respecting notifications' do | ||
subject.call(import) | ||
expect(account.muting.count).to eq 2 | ||
expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true | ||
expect(Mute.find_by(account: account, target_account: eve).hide_notifications).to be false | ||
end | ||
end | ||
|
||
describe 'when some accounts are muted and overwrite is not set' do | ||
let(:import) { Import.create(account: account, type: 'muting', data: csv) } | ||
|
||
it 'mutes the listed accounts, respecting notifications' do | ||
account.mute!(bob, notifications: true) | ||
subject.call(import) | ||
expect(account.muting.count).to eq 2 | ||
expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true | ||
expect(Mute.find_by(account: account, target_account: eve).hide_notifications).to be false | ||
end | ||
end | ||
|
||
describe 'when some accounts are muted and overwrite is set' do | ||
let(:import) { Import.create(account: account, type: 'muting', data: csv, overwrite: true) } | ||
|
||
it 'mutes the listed accounts, respecting notifications' do | ||
account.mute!(bob, notifications: true) | ||
subject.call(import) | ||
expect(account.muting.count).to eq 2 | ||
expect(Mute.find_by(account: account, target_account: bob).hide_notifications).to be true | ||
expect(Mute.find_by(account: account, target_account: eve).hide_notifications).to be false | ||
end | ||
end | ||
end | ||
end |