about summary refs log tree commit diff
path: root/spec/models
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2018-11-27 13:23:02 +0100
committerThibaut Girka <thib@sitedethib.com>2018-11-27 13:23:02 +0100
commitf8e07ca5cdd0d4203d31aa5f0fce79690d5a5190 (patch)
tree928e06a97ccd3c3eeef3b3c0ac03c8f59d516e59 /spec/models
parent6b6e633c095485f95350c4308a942192e5fe8806 (diff)
parent496a6b3dc5274cca08fe58c1d9a7cdc7d10d325b (diff)
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
- app/models/status.rb

Resolved by taking both changes (not a real conflict, just changes too close
to each other).
Diffstat (limited to 'spec/models')
-rw-r--r--spec/models/account_filter_spec.rb25
-rw-r--r--spec/models/account_spec.rb26
-rw-r--r--spec/models/account_stat_spec.rb4
-rw-r--r--spec/models/concerns/status_threading_concern_spec.rb10
-rw-r--r--spec/models/notification_spec.rb2
-rw-r--r--spec/models/status_stat_spec.rb1
-rw-r--r--spec/models/user_spec.rb12
7 files changed, 26 insertions, 54 deletions
diff --git a/spec/models/account_filter_spec.rb b/spec/models/account_filter_spec.rb
index 0a0252642..176a0eeac 100644
--- a/spec/models/account_filter_spec.rb
+++ b/spec/models/account_filter_spec.rb
@@ -2,10 +2,10 @@ require 'rails_helper'
 
 describe AccountFilter do
   describe 'with empty params' do
-    it 'defaults to recent account list' do
+    it 'defaults to recent local not-suspended account list' do
       filter = described_class.new({})
 
-      expect(filter.results).to eq Account.recent
+      expect(filter.results).to eq Account.local.recent.without_suspended
     end
   end
 
@@ -17,23 +17,6 @@ describe AccountFilter do
     end
   end
 
-  describe 'when an IP address is provided' do
-    it 'filters with IP when valid' do
-      filter = described_class.new(ip: '127.0.0.1')
-      allow(User).to receive(:with_recent_ip_address).and_return(User.none)
-
-      filter.results
-      expect(User).to have_received(:with_recent_ip_address).with('127.0.0.1')
-    end
-
-    it 'skips IP when invalid' do
-      filter = described_class.new(ip: '345.678.901.234')
-      expect(User).not_to receive(:with_recent_ip_address)
-
-      filter.results
-    end
-  end
-
   describe 'with valid params' do
     it 'combines filters on Account' do
       filter = described_class.new(
@@ -60,13 +43,13 @@ describe AccountFilter do
     end
 
     describe 'that call account methods' do
-      %i(local remote silenced alphabetic suspended).each do |option|
+      %i(local remote silenced suspended).each do |option|
         it "delegates the #{option} option" do
           allow(Account).to receive(option).and_return(Account.none)
           filter = described_class.new({ option => true })
           filter.results
 
-          expect(Account).to have_received(option)
+          expect(Account).to have_received(option).at_least(1)
         end
       end
     end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 5baf70ef9..a43421b76 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -618,9 +618,15 @@ RSpec.describe Account, type: :model do
         expect(account).not_to model_have_error_on_field(:username)
       end
 
-      it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do
+      it 'is valid even if the username contains hyphens' do
         account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor')
         account.valid?
+        expect(account).to_not model_have_error_on_field(:username)
+      end
+
+      it 'is invalid if the username doesn\'t only contains letters, numbers, underscores and hyphens' do
+        account = Fabricate.build(:account, domain: 'domain', username: 'the doctor')
+        account.valid?
         expect(account).to model_have_error_on_field(:username)
       end
 
@@ -754,24 +760,6 @@ RSpec.describe Account, type: :model do
         expect(Account.suspended).to match_array([account_1])
       end
     end
-
-    describe 'without_followers' do
-      it 'returns a relation of accounts without followers' do
-        account_1 = Fabricate(:account)
-        account_2 = Fabricate(:account)
-        Fabricate(:follow, account: account_1, target_account: account_2)
-        expect(Account.without_followers).to match_array([account_1])
-      end
-    end
-
-    describe 'with_followers' do
-      it 'returns a relation of accounts with followers' do
-        account_1 = Fabricate(:account)
-        account_2 = Fabricate(:account)
-        Fabricate(:follow, account: account_1, target_account: account_2)
-        expect(Account.with_followers).to match_array([account_2])
-      end
-    end
   end
 
   context 'when is local' do
diff --git a/spec/models/account_stat_spec.rb b/spec/models/account_stat_spec.rb
new file mode 100644
index 000000000..a94185109
--- /dev/null
+++ b/spec/models/account_stat_spec.rb
@@ -0,0 +1,4 @@
+require 'rails_helper'
+
+RSpec.describe AccountStat, type: :model do
+end
diff --git a/spec/models/concerns/status_threading_concern_spec.rb b/spec/models/concerns/status_threading_concern_spec.rb
index e5736a307..94c2d5fc2 100644
--- a/spec/models/concerns/status_threading_concern_spec.rb
+++ b/spec/models/concerns/status_threading_concern_spec.rb
@@ -118,5 +118,15 @@ describe StatusThreadingConcern do
       viewer.block_domain!('example.com')
       expect(status.descendants(4, viewer)).to_not include(reply2)
     end
+
+    it 'promotes self-replies to the top while leaving the rest in order' do
+      a = Fabricate(:status, account: alice)
+      d = Fabricate(:status, account: jeff, thread: a)
+      e = Fabricate(:status, account: bob, thread: d)
+      c = Fabricate(:status, account: alice, thread: a)
+      f = Fabricate(:status, account: bob, thread: c)
+
+      expect(a.descendants(20)).to eq [c, d, e, f]
+    end
   end
 end
diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb
index c781f2a29..403eb8c33 100644
--- a/spec/models/notification_spec.rb
+++ b/spec/models/notification_spec.rb
@@ -101,7 +101,7 @@ RSpec.describe Notification, type: :model do
       before do
         allow(accounts_with_ids).to receive(:[]).with(stale_account1.id).and_return(account1)
         allow(accounts_with_ids).to receive(:[]).with(stale_account2.id).and_return(account2)
-        allow(Account).to receive_message_chain(:where, :map, :to_h).and_return(accounts_with_ids)
+        allow(Account).to receive_message_chain(:where, :includes, :each_with_object).and_return(accounts_with_ids)
       end
 
       let(:cached_items) do
diff --git a/spec/models/status_stat_spec.rb b/spec/models/status_stat_spec.rb
index 5e9351aff..af1a6f288 100644
--- a/spec/models/status_stat_spec.rb
+++ b/spec/models/status_stat_spec.rb
@@ -1,5 +1,4 @@
 require 'rails_helper'
 
 RSpec.describe StatusStat, type: :model do
-  pending "add some examples to (or delete) #{__FILE__}"
 end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 8c6778edc..c82919597 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -89,18 +89,6 @@ RSpec.describe User, type: :model do
         expect(User.matches_email('specified')).to match_array([specified])
       end
     end
-
-    describe 'with_recent_ip_address' do
-      it 'returns a relation of users who is, or was at last time, online with the given IP address' do
-        specifieds = [
-          Fabricate(:user, current_sign_in_ip: '0.0.0.42', last_sign_in_ip: '0.0.0.0'),
-          Fabricate(:user, current_sign_in_ip: nil, last_sign_in_ip: '0.0.0.42')
-        ]
-        Fabricate(:user, current_sign_in_ip: '0.0.0.0', last_sign_in_ip: '0.0.0.0')
-
-        expect(User.with_recent_ip_address('0.0.0.42')).to match_array(specifieds)
-      end
-    end
   end
 
   let(:account) { Fabricate(:account, username: 'alice') }