diff options
author | Claire <claire.github-309c@sitedethib.com> | 2021-03-19 14:34:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-19 14:34:08 +0100 |
commit | c7f04961b6dcb1b7e12136deadcf65076c130c40 (patch) | |
tree | 20788cbb86d4ae8d38ce539325205e5f0a1ee344 /spec/models/concerns | |
parent | ba22398c38067e05f141a0dddeb20bf68913988a (diff) | |
parent | 3b7b607300d662aa1f25d459ca12aec89ab550e8 (diff) |
Merge pull request #1513 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'spec/models/concerns')
-rw-r--r-- | spec/models/concerns/account_counters_spec.rb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/spec/models/concerns/account_counters_spec.rb b/spec/models/concerns/account_counters_spec.rb new file mode 100644 index 000000000..4350496e7 --- /dev/null +++ b/spec/models/concerns/account_counters_spec.rb @@ -0,0 +1,60 @@ +require 'rails_helper' + +describe AccountCounters do + let!(:account) { Fabricate(:account) } + + describe '#increment_count!' do + it 'increments the count' do + expect(account.followers_count).to eq 0 + account.increment_count!(:followers_count) + expect(account.followers_count).to eq 1 + end + + it 'increments the count in multi-threaded an environment' do + increment_by = 15 + wait_for_start = true + + threads = Array.new(increment_by) do + Thread.new do + true while wait_for_start + account.increment_count!(:statuses_count) + end + end + + wait_for_start = false + threads.each(&:join) + + expect(account.statuses_count).to eq increment_by + end + end + + describe '#decrement_count!' do + it 'decrements the count' do + account.followers_count = 15 + account.save! + expect(account.followers_count).to eq 15 + account.decrement_count!(:followers_count) + expect(account.followers_count).to eq 14 + end + + it 'decrements the count in multi-threaded an environment' do + decrement_by = 10 + wait_for_start = true + + account.statuses_count = 15 + account.save! + + threads = Array.new(decrement_by) do + Thread.new do + true while wait_for_start + account.decrement_count!(:statuses_count) + end + end + + wait_for_start = false + threads.each(&:join) + + expect(account.statuses_count).to eq 5 + end + end +end |