2015-10-11 10:41:23 +01:00
require 'rails_helper'
2015-04-07 18:02:10 +10:00
describe AnonymousShadowCreator do
it " returns no shadow by default " do
2015-04-25 11:18:35 -04:00
expect ( AnonymousShadowCreator . get ( Fabricate . build ( :user ) ) ) . to eq ( nil )
2015-04-07 18:02:10 +10:00
end
2015-05-15 14:20:15 +02:00
context " Anonymous posting is enabled " do
2015-04-07 18:02:10 +10:00
2015-05-15 14:20:15 +02:00
before { SiteSetting . allow_anonymous_posting = true }
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
let ( :user ) { Fabricate ( :user , trust_level : 3 ) }
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
it " returns no shadow if trust level is not met " do
expect ( AnonymousShadowCreator . get ( Fabricate . build ( :user , trust_level : 0 ) ) ) . to eq ( nil )
end
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
it " returns a new shadow once time expires " do
SiteSetting . anonymous_account_duration_minutes = 1
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
shadow = AnonymousShadowCreator . get ( user )
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
freeze_time 2 . minutes . from_now
shadow2 = AnonymousShadowCreator . get ( user )
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
expect ( shadow . id ) . to eq ( shadow2 . id )
create_post ( user : shadow )
freeze_time 4 . minutes . from_now
shadow3 = AnonymousShadowCreator . get ( user )
2016-02-17 15:46:19 +11:00
expect ( shadow3 . user_option . email_digests ) . to eq ( false )
expect ( shadow3 . user_option . email_private_messages ) . to eq ( false )
2015-05-15 14:20:15 +02:00
expect ( shadow2 . id ) . not_to eq ( shadow3 . id )
end
it " returns a shadow for a legit user " do
shadow = AnonymousShadowCreator . get ( user )
shadow2 = AnonymousShadowCreator . get ( user )
expect ( shadow . id ) . to eq ( shadow2 . id )
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
expect ( shadow . trust_level ) . to eq ( 1 )
expect ( shadow . username ) . to eq ( " anonymous " )
2015-04-07 18:02:10 +10:00
2015-05-15 14:20:15 +02:00
expect ( shadow . created_at ) . not_to eq ( user . created_at )
2015-04-07 18:02:10 +10:00
2015-05-15 14:20:15 +02:00
p = create_post
expect ( Guardian . new ( shadow ) . post_can_act? ( p , :like ) ) . to eq ( false )
expect ( Guardian . new ( user ) . post_can_act? ( p , :like ) ) . to eq ( true )
2015-04-07 18:02:10 +10:00
2015-05-15 14:20:15 +02:00
expect ( user . anonymous? ) . to eq ( false )
expect ( shadow . anonymous? ) . to eq ( true )
end
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
it " works even when names are required " do
SiteSetting . full_name_required = true
2015-04-08 12:29:43 +10:00
2015-05-15 14:20:15 +02:00
expect { AnonymousShadowCreator . get ( user ) } . to_not raise_error
end
2015-04-08 12:29:43 +10:00
2015-04-07 18:02:10 +10:00
end
end