Convert specs to RSpec 2.99.2 syntax with Transpec

This conversion is done by Transpec 3.1.0 with the following command:
    transpec

* 424 conversions
    from: obj.should
      to: expect(obj).to

* 325 conversions
    from: == expected
      to: eq(expected)

* 38 conversions
    from: obj.should_not
      to: expect(obj).not_to

* 15 conversions
    from: =~ /pattern/
      to: match(/pattern/)

* 9 conversions
    from: it { should ... }
      to: it { is_expected.to ... }

* 5 conversions
    from: lambda { }.should_not
      to: expect { }.not_to

* 4 conversions
    from: lambda { }.should
      to: expect { }.to

* 2 conversions
    from: -> { }.should
      to: expect { }.to

* 2 conversions
    from: -> { }.should_not
      to: expect { }.not_to

* 1 conversion
    from: === expected
      to: be === expected

* 1 conversion
    from: =~ [1, 2]
      to: match_array([1, 2])

For more details: https://github.com/yujinakayama/transpec#supported-conversions
This commit is contained in:
Arthur Neves 2015-04-25 11:18:35 -04:00
parent 84c65aeb60
commit b8cbe51026
No known key found for this signature in database
GPG key ID: 04A390FB1E433E17
43 changed files with 492 additions and 492 deletions

View file

@ -1609,11 +1609,11 @@ describe Guardian do
end end
it "is true for admin anonymizing a regular user" do it "is true for admin anonymizing a regular user" do
Guardian.new(admin).can_anonymize_user?(user).should == true expect(Guardian.new(admin).can_anonymize_user?(user)).to eq(true)
end end
it "is true for moderator anonymizing a regular user" do it "is true for moderator anonymizing a regular user" do
Guardian.new(moderator).can_anonymize_user?(user).should == true expect(Guardian.new(moderator).can_anonymize_user?(user)).to eq(true)
end end
it "is false for admin anonymizing an admin" do it "is false for admin anonymizing an admin" do

View file

@ -3,14 +3,14 @@ require_dependency 'highlight_js/highlight_js'
describe HighlightJs do describe HighlightJs do
it 'can list languages' do it 'can list languages' do
HighlightJs.languages.should include('thrift') expect(HighlightJs.languages).to include('thrift')
end end
it 'can generate a packed bundle' do it 'can generate a packed bundle' do
bundle = HighlightJs.bundle(["thrift", "http"]) bundle = HighlightJs.bundle(["thrift", "http"])
bundle.should =~ /thrift/ expect(bundle).to match(/thrift/)
bundle.should =~ /http/ expect(bundle).to match(/http/)
bundle.should_not =~ /applescript/ expect(bundle).not_to match(/applescript/)
end end
@ -18,6 +18,6 @@ describe HighlightJs do
version1 = HighlightJs.version("http|cpp") version1 = HighlightJs.version("http|cpp")
version2 = HighlightJs.version("rust|cpp|fake") version2 = HighlightJs.version("rust|cpp|fake")
version1.should_not == version2 expect(version1).not_to eq(version2)
end end
end end

View file

@ -10,6 +10,6 @@ describe LetterAvatar do
LetterAvatar.cleanup_old LetterAvatar.cleanup_old
Dir.entries(File.dirname(path)).length.should == 3 expect(Dir.entries(File.dirname(path)).length).to eq(3)
end end
end end

View file

@ -33,7 +33,7 @@ describe Middleware::RequestTracker do
log_tracked_view("0") log_tracked_view("0")
ApplicationRequest.write_cache! ApplicationRequest.write_cache!
ApplicationRequest.page_view_anon.first.count.should == 2 expect(ApplicationRequest.page_view_anon.first.count).to eq(2)
end end
it "can log requests correctly" do it "can log requests correctly" do
@ -52,11 +52,11 @@ describe Middleware::RequestTracker do
ApplicationRequest.write_cache! ApplicationRequest.write_cache!
ApplicationRequest.http_total.first.count.should == 2 expect(ApplicationRequest.http_total.first.count).to eq(2)
ApplicationRequest.http_2xx.first.count.should == 2 expect(ApplicationRequest.http_2xx.first.count).to eq(2)
ApplicationRequest.page_view_anon.first.count.should == 1 expect(ApplicationRequest.page_view_anon.first.count).to eq(1)
ApplicationRequest.page_view_crawler.first.count.should == 1 expect(ApplicationRequest.page_view_crawler.first.count).to eq(1)
end end
end end
end end

View file

@ -15,26 +15,26 @@ describe PostRevisor do
} }
it 'provides a guardian' do it 'provides a guardian' do
tc.guardian.should be_an_instance_of Guardian expect(tc.guardian).to be_an_instance_of Guardian
end end
it 'tracks changes properly' do it 'tracks changes properly' do
tc.diff.should == {} expect(tc.diff).to eq({})
# it remembers changes we tell it to # it remembers changes we tell it to
tc.record_change('height', '180cm', '170cm') tc.record_change('height', '180cm', '170cm')
tc.diff['height'].should == ['180cm', '170cm'] expect(tc.diff['height']).to eq(['180cm', '170cm'])
# it works with arrays of values # it works with arrays of values
tc.record_change('colors', nil, ['red', 'blue']) tc.record_change('colors', nil, ['red', 'blue'])
tc.diff['colors'].should == [nil, ['red', 'blue']] expect(tc.diff['colors']).to eq([nil, ['red', 'blue']])
# it does not record changes to the same val # it does not record changes to the same val
tc.record_change('wat', 'js', 'js') tc.record_change('wat', 'js', 'js')
tc.diff['wat'].should be_nil expect(tc.diff['wat']).to be_nil
tc.record_change('tags', ['a', 'b'], ['a', 'b']) tc.record_change('tags', ['a', 'b'], ['a', 'b'])
tc.diff['tags'].should be_nil expect(tc.diff['tags']).to be_nil
end end
end end
@ -51,9 +51,9 @@ describe PostRevisor do
it 'allows the user to change it to a wiki' do it 'allows the user to change it to a wiki' do
pc = PostCreator.new(newuser, topic_id: topic.id, raw: 'this is a post that will become a wiki') pc = PostCreator.new(newuser, topic_id: topic.id, raw: 'this is a post that will become a wiki')
post = pc.create post = pc.create
post.revise(post.user, wiki: true).should be_truthy expect(post.revise(post.user, wiki: true)).to be_truthy
post.reload post.reload
post.wiki.should be_truthy expect(post.wiki).to be_truthy
end end
end end

View file

@ -22,9 +22,9 @@ describe Search do
end end
it "should index correctly" do it "should index correctly" do
@indexed.should =~ /fun/ expect(@indexed).to match(/fun/)
@indexed.should =~ /sam/ expect(@indexed).to match(/sam/)
@indexed.should =~ /america/ expect(@indexed).to match(/america/)
@topic.title = "harpi is the new title" @topic.title = "harpi is the new title"
@topic.save! @topic.save!
@ -32,7 +32,7 @@ describe Search do
@indexed = @post.post_search_data.search_data @indexed = @post.post_search_data.search_data
@indexed.should =~ /harpi/ expect(@indexed).to match(/harpi/)
end end
end end
@ -43,8 +43,8 @@ describe Search do
end end
it "should pick up on data" do it "should pick up on data" do
@indexed.should =~ /fred/ expect(@indexed).to match(/fred/)
@indexed.should =~ /jone/ expect(@indexed).to match(/jone/)
end end
end end
@ -55,7 +55,7 @@ describe Search do
end end
it "should pick up on name" do it "should pick up on name" do
@indexed.should =~ /america/ expect(@indexed).to match(/america/)
end end
end end
@ -66,15 +66,15 @@ describe Search do
end end
it 'escapes non alphanumeric characters' do it 'escapes non alphanumeric characters' do
Search.execute('foo :!$);}]>@\#\"\'').posts.length.should == 0 # There are at least three levels of sanitation for Search.query! expect(Search.execute('foo :!$);}]>@\#\"\'').posts.length).to eq(0) # There are at least three levels of sanitation for Search.query!
end end
it "doesn't raise an error when single quotes are present" do it "doesn't raise an error when single quotes are present" do
Search.execute("'hello' world").posts.length.should == 0 # There are at least three levels of sanitation for Search.query! expect(Search.execute("'hello' world").posts.length).to eq(0) # There are at least three levels of sanitation for Search.query!
end end
it 'works when given two terms with spaces' do it 'works when given two terms with spaces' do
lambda { Search.execute('evil trout') }.should_not raise_error expect { Search.execute('evil trout') }.not_to raise_error
end end
context 'users' do context 'users' do
@ -82,8 +82,8 @@ describe Search do
let(:result) { Search.execute('bruce', type_filter: 'user') } let(:result) { Search.execute('bruce', type_filter: 'user') }
it 'returns a result' do it 'returns a result' do
result.users.length.should == 1 expect(result.users.length).to eq(1)
result.users[0].id.should == user.id expect(result.users[0].id).to eq(user.id)
end end
end end
@ -92,7 +92,7 @@ describe Search do
let(:result) { Search.execute('bruce') } let(:result) { Search.execute('bruce') }
it 'does not return a result' do it 'does not return a result' do
result.users.length.should == 0 expect(result.users.length).to eq(0)
end end
end end
@ -124,21 +124,21 @@ describe Search do
type_filter: 'private_messages', type_filter: 'private_messages',
guardian: Guardian.new(reply.user)) guardian: Guardian.new(reply.user))
results.posts.length.should == 1 expect(results.posts.length).to eq(1)
results = Search.execute('mars', results = Search.execute('mars',
search_context: topic, search_context: topic,
guardian: Guardian.new(reply.user)) guardian: Guardian.new(reply.user))
results.posts.length.should == 1 expect(results.posts.length).to eq(1)
# does not leak out # does not leak out
results = Search.execute('mars', results = Search.execute('mars',
type_filter: 'private_messages', type_filter: 'private_messages',
guardian: Guardian.new(Fabricate(:user))) guardian: Guardian.new(Fabricate(:user)))
results.posts.length.should == 0 expect(results.posts.length).to eq(0)
Fabricate(:topic, category_id: nil, archetype: 'private_message') Fabricate(:topic, category_id: nil, archetype: 'private_message')
Fabricate(:post, topic: topic, raw: 'another secret pm from mars, testing') Fabricate(:post, topic: topic, raw: 'another secret pm from mars, testing')
@ -150,7 +150,7 @@ describe Search do
search_context: post.user, search_context: post.user,
guardian: Guardian.new(Fabricate(:admin))) guardian: Guardian.new(Fabricate(:admin)))
results.posts.length.should == 1 expect(results.posts.length).to eq(1)
end end
@ -185,11 +185,11 @@ describe Search do
topic.reload topic.reload
results = Search.execute('posting', search_context: post1.topic) results = Search.execute('posting', search_context: post1.topic)
results.posts.map(&:id).should == [post1.id, post2.id, post3.id, post4.id] expect(results.posts.map(&:id)).to eq([post1.id, post2.id, post3.id, post4.id])
# stop words should work # stop words should work
results = Search.execute('this', search_context: post1.topic) results = Search.execute('this', search_context: post1.topic)
results.posts.length.should == 4 expect(results.posts.length).to eq(4)
end end
end end
@ -198,8 +198,8 @@ describe Search do
let(:result) { Search.execute('hundred', type_filter: 'topic', include_blurbs: true) } let(:result) { Search.execute('hundred', type_filter: 'topic', include_blurbs: true) }
it 'returns a result correctly' do it 'returns a result correctly' do
result.posts.length.should == 1 expect(result.posts.length).to eq(1)
result.posts[0].id.should == post.id expect(result.posts[0].id).to eq(post.id)
end end
end end
@ -208,12 +208,12 @@ describe Search do
let(:result) { Search.execute('quotes', type_filter: 'topic', include_blurbs: true) } let(:result) { Search.execute('quotes', type_filter: 'topic', include_blurbs: true) }
it 'returns the post' do it 'returns the post' do
result.should be_present expect(result).to be_present
result.posts.length.should == 1 expect(result.posts.length).to eq(1)
p = result.posts[0] p = result.posts[0]
p.topic.id.should == topic.id expect(p.topic.id).to eq(topic.id)
p.id.should == reply.id expect(p.id).to eq(reply.id)
result.blurb(p).should == "this reply has no quotes" expect(result.blurb(p)).to eq("this reply has no quotes")
end end
end end
@ -221,8 +221,8 @@ describe Search do
let(:result) { Search.execute(topic.id, type_filter: 'topic', search_for_id: true, min_search_term_length: 1) } let(:result) { Search.execute(topic.id, type_filter: 'topic', search_for_id: true, min_search_term_length: 1) }
it 'returns the topic' do it 'returns the topic' do
result.posts.length.should == 1 expect(result.posts.length).to eq(1)
result.posts.first.id.should == post.id expect(result.posts.first.id).to eq(post.id)
end end
end end
@ -230,8 +230,8 @@ describe Search do
let(:result) { Search.execute(topic.relative_url, search_for_id: true, type_filter: 'topic')} let(:result) { Search.execute(topic.relative_url, search_for_id: true, type_filter: 'topic')}
it 'returns the topic' do it 'returns the topic' do
result.posts.length.should == 1 expect(result.posts.length).to eq(1)
result.posts.first.id.should == post.id expect(result.posts.first.id).to eq(post.id)
end end
end end
@ -250,9 +250,9 @@ describe Search do
category.set_permissions(:staff => :full) category.set_permissions(:staff => :full)
category.save category.save
result(nil).posts.should_not be_present expect(result(nil).posts).not_to be_present
result(Fabricate(:user)).posts.should_not be_present expect(result(Fabricate(:user)).posts).not_to be_present
result(Fabricate(:admin)).posts.should be_present expect(result(Fabricate(:admin)).posts).to be_present
end end
end end
@ -269,7 +269,7 @@ describe Search do
let(:result) { Search.execute('запись') } let(:result) { Search.execute('запись') }
it 'finds something when given cyrillic query' do it 'finds something when given cyrillic query' do
result.posts.should be_present expect(result.posts).to be_present
end end
end end
@ -281,12 +281,12 @@ describe Search do
end end
it 'returns the correct result' do it 'returns the correct result' do
search.categories.should be_present expect(search.categories).to be_present
category.set_permissions({}) category.set_permissions({})
category.save category.save
search.categories.should_not be_present expect(search.categories).not_to be_present
end end
end end
@ -302,9 +302,9 @@ describe Search do
let(:results) { Search.execute('amazing', type_filter: 'user') } let(:results) { Search.execute('amazing', type_filter: 'user') }
it "returns a user result" do it "returns a user result" do
results.categories.length.should == 0 expect(results.categories.length).to eq(0)
results.posts.length.should == 0 expect(results.posts.length).to eq(0)
results.users.length.should == 1 expect(results.users.length).to eq(1)
end end
end end
@ -313,9 +313,9 @@ describe Search do
let(:results) { Search.execute('amazing', type_filter: 'category') } let(:results) { Search.execute('amazing', type_filter: 'category') }
it "returns a category result" do it "returns a category result" do
results.categories.length.should == 1 expect(results.categories.length).to eq(1)
results.posts.length.should == 0 expect(results.posts.length).to eq(0)
results.users.length.should == 0 expect(results.users.length).to eq(0)
end end
end end
@ -334,7 +334,7 @@ describe Search do
result = Search.execute('hello', search_context: post.user) result = Search.execute('hello', search_context: post.user)
result.posts.first.topic_id = post.topic_id result.posts.first.topic_id = post.topic_id
result.posts.length.should == 1 expect(result.posts.length).to eq(1)
end end
it 'can use category as a search context' do it 'can use category as a search context' do
@ -346,8 +346,8 @@ describe Search do
_another_post = Fabricate(:post, topic: topic_no_cat, user: topic.user ) _another_post = Fabricate(:post, topic: topic_no_cat, user: topic.user )
search = Search.execute('hello', search_context: category) search = Search.execute('hello', search_context: category)
search.posts.length.should == 1 expect(search.posts.length).to eq(1)
search.posts.first.id.should == post.id expect(search.posts.first.id).to eq(post.id)
end end
end end
@ -356,7 +356,7 @@ describe Search do
it 'splits English / Chinese' do it 'splits English / Chinese' do
SiteSetting.default_locale = 'zh_CN' SiteSetting.default_locale = 'zh_CN'
data = Search.prepare_data('Discourse社区指南').split(' ') data = Search.prepare_data('Discourse社区指南').split(' ')
data.should == ['Discourse', '社区','指南'] expect(data).to eq(['Discourse', '社区','指南'])
end end
it 'finds chinese topic based on title' do it 'finds chinese topic based on title' do
@ -366,8 +366,8 @@ describe Search do
topic = Fabricate(:topic, title: 'My Title Discourse社區指南') topic = Fabricate(:topic, title: 'My Title Discourse社區指南')
post = Fabricate(:post, topic: topic) post = Fabricate(:post, topic: topic)
Search.execute('社區指南').posts.first.id.should == post.id expect(Search.execute('社區指南').posts.first.id).to eq(post.id)
Search.execute('指南').posts.first.id.should == post.id expect(Search.execute('指南').posts.first.id).to eq(post.id)
end end
end end
@ -376,31 +376,31 @@ describe Search do
post = Fabricate(:post, raw: 'hi this is a test 123 123') post = Fabricate(:post, raw: 'hi this is a test 123 123')
topic = post.topic topic = post.topic
Search.execute('test status:closed').posts.length.should == 0 expect(Search.execute('test status:closed').posts.length).to eq(0)
Search.execute('test status:open').posts.length.should == 1 expect(Search.execute('test status:open').posts.length).to eq(1)
topic.closed = true topic.closed = true
topic.save topic.save
Search.execute('test status:closed').posts.length.should == 1 expect(Search.execute('test status:closed').posts.length).to eq(1)
Search.execute('test status:open').posts.length.should == 0 expect(Search.execute('test status:open').posts.length).to eq(0)
topic.archived = true topic.archived = true
topic.closed = false topic.closed = false
topic.save topic.save
Search.execute('test status:archived').posts.length.should == 1 expect(Search.execute('test status:archived').posts.length).to eq(1)
Search.execute('test status:open').posts.length.should == 0 expect(Search.execute('test status:open').posts.length).to eq(0)
Search.execute('test status:noreplies').posts.length.should == 1 expect(Search.execute('test status:noreplies').posts.length).to eq(1)
Search.execute('test in:likes', guardian: Guardian.new(topic.user)).posts.length.should == 0 expect(Search.execute('test in:likes', guardian: Guardian.new(topic.user)).posts.length).to eq(0)
Search.execute('test in:posted', guardian: Guardian.new(topic.user)).posts.length.should == 1 expect(Search.execute('test in:posted', guardian: Guardian.new(topic.user)).posts.length).to eq(1)
TopicUser.change(topic.user.id, topic.id, notification_level: TopicUser.notification_levels[:tracking]) TopicUser.change(topic.user.id, topic.id, notification_level: TopicUser.notification_levels[:tracking])
Search.execute('test in:watching', guardian: Guardian.new(topic.user)).posts.length.should == 0 expect(Search.execute('test in:watching', guardian: Guardian.new(topic.user)).posts.length).to eq(0)
Search.execute('test in:tracking', guardian: Guardian.new(topic.user)).posts.length.should == 1 expect(Search.execute('test in:tracking', guardian: Guardian.new(topic.user)).posts.length).to eq(1)
end end
@ -410,8 +410,8 @@ describe Search do
post2 = Fabricate(:post, raw: 'that Sam I am, that Sam I am') post2 = Fabricate(:post, raw: 'that Sam I am, that Sam I am')
Search.execute('sam').posts.map(&:id).should == [post1.id, post2.id] expect(Search.execute('sam').posts.map(&:id)).to eq([post1.id, post2.id])
Search.execute('sam order:latest').posts.map(&:id).should == [post2.id, post1.id] expect(Search.execute('sam order:latest').posts.map(&:id)).to eq([post2.id, post1.id])
end end
end end

View file

@ -33,24 +33,24 @@ describe SiteSettingExtension do
it "will reset to default if provider vanishes" do it "will reset to default if provider vanishes" do
settings.setting(:hello, 1) settings.setting(:hello, 1)
settings.hello = 100 settings.hello = 100
settings.hello.should == 100 expect(settings.hello).to eq(100)
settings.provider.clear settings.provider.clear
settings.refresh! settings.refresh!
settings.hello.should == 1 expect(settings.hello).to eq(1)
end end
it "will set to new value if provider changes" do it "will set to new value if provider changes" do
settings.setting(:hello, 1) settings.setting(:hello, 1)
settings.hello = 100 settings.hello = 100
settings.hello.should == 100 expect(settings.hello).to eq(100)
settings.provider.save(:hello, 99, SiteSetting.types[:fixnum] ) settings.provider.save(:hello, 99, SiteSetting.types[:fixnum] )
settings.refresh! settings.refresh!
settings.hello.should == 99 expect(settings.hello).to eq(99)
end end
it "Publishes changes cross sites" do it "Publishes changes cross sites" do
@ -60,12 +60,12 @@ describe SiteSettingExtension do
settings.hello = 100 settings.hello = 100
settings2.refresh! settings2.refresh!
settings2.hello.should == 100 expect(settings2.hello).to eq(100)
settings.hello = 99 settings.hello = 99
settings2.refresh! settings2.refresh!
settings2.hello.should == 99 expect(settings2.hello).to eq(99)
end end
end end
@ -75,7 +75,7 @@ describe SiteSettingExtension do
settings.setting(:hello, 1) settings.setting(:hello, 1)
settings.hello = 100 settings.hello = 100
settings.provider.current_site = "boom" settings.provider.current_site = "boom"
settings.hello.should == 1 expect(settings.hello).to eq(1)
end end
end end
@ -86,16 +86,16 @@ describe SiteSettingExtension do
end end
it "should have a key in all_settings" do it "should have a key in all_settings" do
settings.all_settings.detect {|s| s[:setting] == :test_setting }.should be_present expect(settings.all_settings.detect {|s| s[:setting] == :test_setting }).to be_present
end end
it "should have the correct desc" do it "should have the correct desc" do
I18n.expects(:t).with("site_settings.test_setting").returns("test description") I18n.expects(:t).with("site_settings.test_setting").returns("test description")
settings.description(:test_setting).should == "test description" expect(settings.description(:test_setting)).to eq("test description")
end end
it "should have the correct default" do it "should have the correct default" do
settings.test_setting.should == 77 expect(settings.test_setting).to eq(77)
end end
context "when overidden" do context "when overidden" do
@ -105,29 +105,29 @@ describe SiteSettingExtension do
it "should have the correct override" do it "should have the correct override" do
settings.test_setting = 100 settings.test_setting = 100
settings.test_setting.should == 100 expect(settings.test_setting).to eq(100)
end end
it "should coerce correct string to int" do it "should coerce correct string to int" do
settings.test_setting = "101" settings.test_setting = "101"
settings.test_setting.should.eql? 101 expect(settings.test_setting).to.eql? 101
end end
it "should coerce incorrect string to 0" do it "should coerce incorrect string to 0" do
settings.test_setting = "pie" settings.test_setting = "pie"
settings.test_setting.should.eql? 0 expect(settings.test_setting).to.eql? 0
end end
it "should not set default when reset" do it "should not set default when reset" do
settings.test_setting = 100 settings.test_setting = 100
settings.setting(:test_setting, 77) settings.setting(:test_setting, 77)
settings.refresh! settings.refresh!
settings.test_setting.should_not == 77 expect(settings.test_setting).not_to eq(77)
end end
it "can be overridden with set" do it "can be overridden with set" do
settings.set("test_setting", 12) settings.set("test_setting", 12)
settings.test_setting.should == 12 expect(settings.test_setting).to eq(12)
end end
end end
end end
@ -148,7 +148,7 @@ describe SiteSettingExtension do
end end
it "should have the correct default" do it "should have the correct default" do
settings.test_str.should == "str" expect(settings.test_str).to eq("str")
end end
context "when overridden" do context "when overridden" do
@ -158,12 +158,12 @@ describe SiteSettingExtension do
it "should coerce int to string" do it "should coerce int to string" do
settings.test_str = 100 settings.test_str = 100
settings.test_str.should.eql? "100" expect(settings.test_str).to.eql? "100"
end end
it "can be overridden with set" do it "can be overridden with set" do
settings.set("test_str", "hi") settings.set("test_str", "hi")
settings.test_str.should == "hi" expect(settings.test_str).to eq("hi")
end end
end end
end end
@ -180,7 +180,7 @@ describe SiteSettingExtension do
message = e.message message = e.message
end end
message.should =~ /oops/ expect(message).to match(/oops/)
end end
end end
@ -191,7 +191,7 @@ describe SiteSettingExtension do
end end
it "should have the correct default" do it "should have the correct default" do
settings.test_hello?.should == false expect(settings.test_hello?).to eq(false)
end end
context "when overridden" do context "when overridden" do
@ -201,29 +201,29 @@ describe SiteSettingExtension do
it "should have the correct override" do it "should have the correct override" do
settings.test_hello = true settings.test_hello = true
settings.test_hello?.should == true expect(settings.test_hello?).to eq(true)
end end
it "should coerce true strings to true" do it "should coerce true strings to true" do
settings.test_hello = "true" settings.test_hello = "true"
settings.test_hello?.should.eql? true expect(settings.test_hello?).to.eql? true
end end
it "should coerce all other strings to false" do it "should coerce all other strings to false" do
settings.test_hello = "f" settings.test_hello = "f"
settings.test_hello?.should.eql? false expect(settings.test_hello?).to.eql? false
end end
it "should not set default when reset" do it "should not set default when reset" do
settings.test_hello = true settings.test_hello = true
settings.setting(:test_hello?, false) settings.setting(:test_hello?, false)
settings.refresh! settings.refresh!
settings.test_hello?.should_not == false expect(settings.test_hello?).not_to eq(false)
end end
it "can be overridden with set" do it "can be overridden with set" do
settings.set("test_hello", true) settings.set("test_hello", true)
settings.test_hello?.should == true expect(settings.test_hello?).to eq(true)
end end
end end
end end
@ -256,7 +256,7 @@ describe SiteSettingExtension do
end end
it 'should not hose all_settings' do it 'should not hose all_settings' do
settings.all_settings.detect {|s| s[:setting] == :test_enum }.should be_present expect(settings.all_settings.detect {|s| s[:setting] == :test_enum }).to be_present
end end
context 'when overridden' do context 'when overridden' do
@ -284,7 +284,7 @@ describe SiteSettingExtension do
end end
it "should return the category in all_settings" do it "should return the category in all_settings" do
settings.all_settings.find {|s| s[:setting] == :test_setting }[:category].should == :tests expect(settings.all_settings.find {|s| s[:setting] == :test_setting }[:category]).to eq(:tests)
end end
context "when overidden" do context "when overidden" do
@ -294,12 +294,12 @@ describe SiteSettingExtension do
it "should have the correct override" do it "should have the correct override" do
settings.test_setting = 101 settings.test_setting = 101
settings.test_setting.should == 101 expect(settings.test_setting).to eq(101)
end end
it "should still have the correct category" do it "should still have the correct category" do
settings.test_setting = 102 settings.test_setting = 102
settings.all_settings.find {|s| s[:setting] == :test_setting }[:category].should == :tests expect(settings.all_settings.find {|s| s[:setting] == :test_setting }[:category]).to eq(:tests)
end end
end end
end end
@ -317,7 +317,7 @@ describe SiteSettingExtension do
it "stores valid values" do it "stores valid values" do
EmailSettingValidator.any_instance.expects(:valid_value?).returns(true) EmailSettingValidator.any_instance.expects(:valid_value?).returns(true)
settings.validated_setting = 'success@example.com' settings.validated_setting = 'success@example.com'
settings.validated_setting.should == 'success@example.com' expect(settings.validated_setting).to eq('success@example.com')
end end
it "rejects invalid values" do it "rejects invalid values" do
@ -325,12 +325,12 @@ describe SiteSettingExtension do
EmailSettingValidator.any_instance.expects(:valid_value?).returns(false) EmailSettingValidator.any_instance.expects(:valid_value?).returns(false)
settings.validated_setting = 'nope' settings.validated_setting = 'nope'
}.to raise_error(Discourse::InvalidParameters) }.to raise_error(Discourse::InvalidParameters)
settings.validated_setting.should == "info@example.com" expect(settings.validated_setting).to eq("info@example.com")
end end
it "allows blank values" do it "allows blank values" do
settings.validated_setting = '' settings.validated_setting = ''
settings.validated_setting.should == '' expect(settings.validated_setting).to eq('')
end end
end end
@ -362,12 +362,12 @@ describe SiteSettingExtension do
it "filters domain" do it "filters domain" do
settings.set("white_listed_spam_host_domains", "http://www.discourse.org/") settings.set("white_listed_spam_host_domains", "http://www.discourse.org/")
settings.white_listed_spam_host_domains.should == "www.discourse.org" expect(settings.white_listed_spam_host_domains).to eq("www.discourse.org")
end end
it "returns invalid domain as is, without throwing exception" do it "returns invalid domain as is, without throwing exception" do
settings.set("white_listed_spam_host_domains", "test!url") settings.set("white_listed_spam_host_domains", "test!url")
settings.white_listed_spam_host_domains.should == "test!url" expect(settings.white_listed_spam_host_domains).to eq("test!url")
end end
end end
@ -378,19 +378,19 @@ describe SiteSettingExtension do
end end
it "is in the `hidden_settings` collection" do it "is in the `hidden_settings` collection" do
settings.hidden_settings.include?(:superman_identity).should == true expect(settings.hidden_settings.include?(:superman_identity)).to eq(true)
end end
it "can be retrieved" do it "can be retrieved" do
settings.superman_identity.should == "Clark Kent" expect(settings.superman_identity).to eq("Clark Kent")
end end
it "is not present in all_settings by default" do it "is not present in all_settings by default" do
settings.all_settings.find {|s| s[:setting] == :superman_identity }.should be_blank expect(settings.all_settings.find {|s| s[:setting] == :superman_identity }).to be_blank
end end
it "is present in all_settings when we ask for hidden" do it "is present in all_settings when we ask for hidden" do
settings.all_settings(true).find {|s| s[:setting] == :superman_identity }.should be_present expect(settings.all_settings(true).find {|s| s[:setting] == :superman_identity }).to be_present
end end
end end
@ -402,17 +402,17 @@ describe SiteSettingExtension do
end end
it "should not add the key to the shadowed_settings collection" do it "should not add the key to the shadowed_settings collection" do
settings.shadowed_settings.include?(:trout_api_key).should == false expect(settings.shadowed_settings.include?(:trout_api_key)).to eq(false)
end end
it "can return the default value" do it "can return the default value" do
settings.trout_api_key.should == 'evil' expect(settings.trout_api_key).to eq('evil')
end end
it "can overwrite the default" do it "can overwrite the default" do
settings.trout_api_key = 'tophat' settings.trout_api_key = 'tophat'
settings.refresh! settings.refresh!
settings.trout_api_key.should == 'tophat' expect(settings.trout_api_key).to eq('tophat')
end end
end end
@ -424,16 +424,16 @@ describe SiteSettingExtension do
end end
it "should return the global setting instead of default" do it "should return the global setting instead of default" do
settings.trout_api_key.should == 'purringcat' expect(settings.trout_api_key).to eq('purringcat')
end end
it "should return the global setting after a refresh" do it "should return the global setting after a refresh" do
settings.refresh! settings.refresh!
settings.trout_api_key.should == 'purringcat' expect(settings.trout_api_key).to eq('purringcat')
end end
it "should add the key to the shadowed_settings collection" do it "should add the key to the shadowed_settings collection" do
settings.shadowed_settings.include?(:trout_api_key).should == true expect(settings.shadowed_settings.include?(:trout_api_key)).to eq(true)
end end
end end
end end

View file

@ -11,8 +11,8 @@ describe Admin::PluginsController do
it 'should return JSON' do it 'should return JSON' do
xhr :get, :index xhr :get, :index
response.should be_success expect(response).to be_success
::JSON.parse(response.body).has_key?('plugins').should == true expect(::JSON.parse(response.body).has_key?('plugins')).to eq(true)
end end
end end

View file

@ -3,12 +3,12 @@ require 'spec_helper'
describe DirectoryItemsController do describe DirectoryItemsController do
it "requires a `period` param" do it "requires a `period` param" do
->{ xhr :get, :index }.should raise_error expect{ xhr :get, :index }.to raise_error
end end
it "requires a proper `period` param" do it "requires a proper `period` param" do
xhr :get, :index, period: 'eviltrout' xhr :get, :index, period: 'eviltrout'
response.should_not be_success expect(response).not_to be_success
end end
@ -19,7 +19,7 @@ describe DirectoryItemsController do
it "succeeds" do it "succeeds" do
xhr :get, :index, period: 'all' xhr :get, :index, period: 'all'
response.should be_success expect(response).to be_success
json = ::JSON.parse(response.body) json = ::JSON.parse(response.body)
end end
end end
@ -35,20 +35,20 @@ describe DirectoryItemsController do
it "succeeds with a valid value" do it "succeeds with a valid value" do
xhr :get, :index, period: 'all' xhr :get, :index, period: 'all'
response.should be_success expect(response).to be_success
json = ::JSON.parse(response.body) json = ::JSON.parse(response.body)
json.should be_present expect(json).to be_present
json['directory_items'].should be_present expect(json['directory_items']).to be_present
json['total_rows_directory_items'].should be_present expect(json['total_rows_directory_items']).to be_present
json['load_more_directory_items'].should be_present expect(json['load_more_directory_items']).to be_present
end end
it "fails when the directory is disabled" do it "fails when the directory is disabled" do
SiteSetting.enable_user_directory = false SiteSetting.enable_user_directory = false
xhr :get, :index, period: 'all' xhr :get, :index, period: 'all'
response.should_not be_success expect(response).not_to be_success
end end
end end
end end

View file

@ -91,10 +91,10 @@ describe GroupsController do
Guardian.any_instance.stubs(:can_edit?).with(group).returns(false) Guardian.any_instance.stubs(:can_edit?).with(group).returns(false)
xhr :put, :add_members, group_id: group.name, usernames: "bob" xhr :put, :add_members, group_id: group.name, usernames: "bob"
response.should be_forbidden expect(response).to be_forbidden
xhr :delete, :remove_member, group_id: group.name, username: "bob" xhr :delete, :remove_member, group_id: group.name, username: "bob"
response.should be_forbidden expect(response).to be_forbidden
end end
it "cannot add members to automatic groups" do it "cannot add members to automatic groups" do
@ -102,7 +102,7 @@ describe GroupsController do
auto_group = Fabricate(:group, name: "auto_group", automatic: true) auto_group = Fabricate(:group, name: "auto_group", automatic: true)
xhr :put, :add_members, group_id: group.name, usernames: "bob" xhr :put, :add_members, group_id: group.name, usernames: "bob"
response.should be_forbidden expect(response).to be_forbidden
end end
end end
@ -119,42 +119,42 @@ describe GroupsController do
user2 = Fabricate(:user) user2 = Fabricate(:user)
xhr :put, :add_members, group_id: group.name, usernames: user2.username xhr :put, :add_members, group_id: group.name, usernames: user2.username
response.should be_success expect(response).to be_success
group.reload group.reload
group.users.count.should eq(2) expect(group.users.count).to eq(2)
end end
it "succeeds silently when adding non-existent users" do it "succeeds silently when adding non-existent users" do
xhr :put, :add_members, group_id: group.name, usernames: "nosuchperson" xhr :put, :add_members, group_id: group.name, usernames: "nosuchperson"
response.should be_success expect(response).to be_success
group.reload group.reload
group.users.count.should eq(1) expect(group.users.count).to eq(1)
end end
it "succeeds silently when adding duplicate users" do it "succeeds silently when adding duplicate users" do
xhr :put, :add_members, group_id: group.name, usernames: @user1.username xhr :put, :add_members, group_id: group.name, usernames: @user1.username
response.should be_success expect(response).to be_success
group.reload group.reload
group.users.should eq([@user1]) expect(group.users).to eq([@user1])
end end
it "can make incremental deletes" do it "can make incremental deletes" do
xhr :delete, :remove_member, group_id: group.name, username: @user1.username xhr :delete, :remove_member, group_id: group.name, username: @user1.username
response.should be_success expect(response).to be_success
group.reload group.reload
group.users.count.should eq(0) expect(group.users.count).to eq(0)
end end
it "succeeds silently when removing non-members" do it "succeeds silently when removing non-members" do
user2 = Fabricate(:user) user2 = Fabricate(:user)
xhr :delete, :remove_member, group_id: group.name, username: user2.username xhr :delete, :remove_member, group_id: group.name, username: user2.username
response.should be_success expect(response).to be_success
group.reload group.reload
group.users.count.should eq(1) expect(group.users.count).to eq(1)
end end
end end

View file

@ -851,8 +851,8 @@ describe PostsController do
it "can be viewed by anonymous" do it "can be viewed by anonymous" do
post = Fabricate(:post, raw: "123456789") post = Fabricate(:post, raw: "123456789")
xhr :get, :markdown_id, id: post.id xhr :get, :markdown_id, id: post.id
response.should be_success expect(response).to be_success
response.body.should == "123456789" expect(response.body).to eq("123456789")
end end
end end
@ -862,8 +862,8 @@ describe PostsController do
post = Fabricate(:post, topic: topic, post_number: 1, raw: "123456789") post = Fabricate(:post, topic: topic, post_number: 1, raw: "123456789")
post.save post.save
xhr :get, :markdown_num, topic_id: topic.id, post_number: 1 xhr :get, :markdown_num, topic_id: topic.id, post_number: 1
response.should be_success expect(response).to be_success
response.body.should == "123456789" expect(response.body).to eq("123456789")
end end
end end
end end
@ -874,13 +874,13 @@ describe PostsController do
it "redirects to the topic" do it "redirects to the topic" do
xhr :get, :short_link, post_id: post.id xhr :get, :short_link, post_id: post.id
response.should be_redirect expect(response).to be_redirect
end end
it "returns a 403 when access is denied" do it "returns a 403 when access is denied" do
Guardian.any_instance.stubs(:can_see?).returns(false) Guardian.any_instance.stubs(:can_see?).returns(false)
xhr :get, :short_link, post_id: post.id xhr :get, :short_link, post_id: post.id
response.should be_forbidden expect(response).to be_forbidden
end end
end end
end end

View file

@ -967,10 +967,10 @@ describe TopicsController do
PostAction.act(user, post2, bookmark) PostAction.act(user, post2, bookmark)
xhr :put, :bookmark, topic_id: post.topic_id xhr :put, :bookmark, topic_id: post.topic_id
PostAction.where(user_id: user.id, post_action_type: bookmark).count.should == 2 expect(PostAction.where(user_id: user.id, post_action_type: bookmark).count).to eq(2)
xhr :put, :remove_bookmarks, topic_id: post.topic_id xhr :put, :remove_bookmarks, topic_id: post.topic_id
PostAction.where(user_id: user.id, post_action_type: bookmark).count.should == 0 expect(PostAction.where(user_id: user.id, post_action_type: bookmark).count).to eq(0)
end end
end end

View file

@ -674,48 +674,48 @@ describe UsersController do
it 'raises an error without a new_username param' do it 'raises an error without a new_username param' do
expect { xhr :put, :username, username: user.username }.to raise_error(ActionController::ParameterMissing) expect { xhr :put, :username, username: user.username }.to raise_error(ActionController::ParameterMissing)
user.reload.username.should == old_username expect(user.reload.username).to eq(old_username)
end end
it 'raises an error when you don\'t have permission to change the username' do it 'raises an error when you don\'t have permission to change the username' do
Guardian.any_instance.expects(:can_edit_username?).with(user).returns(false) Guardian.any_instance.expects(:can_edit_username?).with(user).returns(false)
xhr :put, :username, username: user.username, new_username: new_username xhr :put, :username, username: user.username, new_username: new_username
expect(response).to be_forbidden expect(response).to be_forbidden
user.reload.username.should == old_username expect(user.reload.username).to eq(old_username)
end end
# Bad behavior, this should give a real JSON error, not an InvalidParameters # Bad behavior, this should give a real JSON error, not an InvalidParameters
it 'raises an error when change_username fails' do it 'raises an error when change_username fails' do
User.any_instance.expects(:save).returns(false) User.any_instance.expects(:save).returns(false)
expect { xhr :put, :username, username: user.username, new_username: new_username }.to raise_error(Discourse::InvalidParameters) expect { xhr :put, :username, username: user.username, new_username: new_username }.to raise_error(Discourse::InvalidParameters)
user.reload.username.should == old_username expect(user.reload.username).to eq(old_username)
end end
it 'should succeed in normal circumstances' do it 'should succeed in normal circumstances' do
xhr :put, :username, username: user.username, new_username: new_username xhr :put, :username, username: user.username, new_username: new_username
response.should be_success expect(response).to be_success
user.reload.username.should == new_username expect(user.reload.username).to eq(new_username)
end end
skip 'should fail if the user is old', 'ensure_can_edit_username! is not throwing' do skip 'should fail if the user is old', 'ensure_can_edit_username! is not throwing' do
# Older than the change period and >1 post # Older than the change period and >1 post
user.created_at = Time.now - (SiteSetting.username_change_period + 1).days user.created_at = Time.now - (SiteSetting.username_change_period + 1).days
user.stubs(:post_count).returns(200) user.stubs(:post_count).returns(200)
Guardian.new(user).can_edit_username?(user).should == false expect(Guardian.new(user).can_edit_username?(user)).to eq(false)
xhr :put, :username, username: user.username, new_username: new_username xhr :put, :username, username: user.username, new_username: new_username
response.should be_forbidden expect(response).to be_forbidden
user.reload.username.should == old_username expect(user.reload.username).to eq(old_username)
end end
it 'should create a staff action log when a staff member changes the username' do it 'should create a staff action log when a staff member changes the username' do
acting_user = Fabricate(:admin) acting_user = Fabricate(:admin)
log_in_user(acting_user) log_in_user(acting_user)
xhr :put, :username, username: user.username, new_username: new_username xhr :put, :username, username: user.username, new_username: new_username
response.should be_success expect(response).to be_success
UserHistory.where(action: UserHistory.actions[:change_username], target_user_id: user.id, acting_user_id: acting_user.id).should be_present expect(UserHistory.where(action: UserHistory.actions[:change_username], target_user_id: user.id, acting_user_id: acting_user.id)).to be_present
user.reload.username.should == new_username expect(user.reload.username).to eq(new_username)
end end
it 'should return a JSON response with the updated username' do it 'should return a JSON response with the updated username' do

View file

@ -21,7 +21,7 @@ describe 'invite only' do
api_username: admin.username api_username: admin.username
user_id = JSON.parse(response.body)["user_id"] user_id = JSON.parse(response.body)["user_id"]
user_id.should be > 0 expect(user_id).to be > 0
# activate and approve # activate and approve
xhr :put, "/admin/users/#{user_id}/activate", xhr :put, "/admin/users/#{user_id}/activate",
@ -33,8 +33,8 @@ describe 'invite only' do
api_username: admin.username api_username: admin.username
u = User.find(user_id) u = User.find(user_id)
u.active.should == true expect(u.active).to eq(true)
u.approved.should == true expect(u.approved).to eq(true)
end end
end end

View file

@ -14,8 +14,8 @@ describe SpamRulesEnforcer do
Given!(:first_post) { create_post(user: spammer1) } Given!(:first_post) { create_post(user: spammer1) }
Given!(:second_post) { create_post(user: spammer2, topic: first_post.topic) } Given!(:second_post) { create_post(user: spammer2, topic: first_post.topic) }
Then { first_post.reload.spam_count.should == 0 } Then { expect(first_post.reload.spam_count).to eq(0) }
And { second_post.reload.spam_count.should == 0 } And { expect(second_post.reload.spam_count).to eq(0) }
end end
context 'flag_sockpuppets is enabled' do context 'flag_sockpuppets is enabled' do
@ -27,15 +27,15 @@ describe SpamRulesEnforcer do
context 'second spammer replies' do context 'second spammer replies' do
Given!(:second_post) { create_post(user: spammer2, topic: first_post.topic) } Given!(:second_post) { create_post(user: spammer2, topic: first_post.topic) }
Then { first_post.reload.spam_count.should == 1 } Then { expect(first_post.reload.spam_count).to eq(1) }
And { second_post.reload.spam_count.should == 1 } And { expect(second_post.reload.spam_count).to eq(1) }
context 'third spam post' do context 'third spam post' do
Given!(:third_post) { create_post(user: spammer3, topic: first_post.topic) } Given!(:third_post) { create_post(user: spammer3, topic: first_post.topic) }
Then { first_post.reload.spam_count.should == 1 } Then { expect(first_post.reload.spam_count).to eq(1) }
And { second_post.reload.spam_count.should == 1 } And { expect(second_post.reload.spam_count).to eq(1) }
And { third_post.reload.spam_count.should == 1 } And { expect(third_post.reload.spam_count).to eq(1) }
end end
end end
end end
@ -49,8 +49,8 @@ describe SpamRulesEnforcer do
context 'a reply by a new user at the same IP address' do context 'a reply by a new user at the same IP address' do
Given!(:second_post) { create_post(user: spammer2, topic: first_post.topic) } Given!(:second_post) { create_post(user: spammer2, topic: first_post.topic) }
Then { first_post.reload.spam_count.should == 0 } Then { expect(first_post.reload.spam_count).to eq(0) }
And { second_post.reload.spam_count.should == 1 } And { expect(second_post.reload.spam_count).to eq(1) }
end end
end end
end end

View file

@ -41,7 +41,7 @@ describe SpamRulesEnforcer do
Invariant { expect(Guardian.new(spammer).can_create_topic?(nil)).to be false } Invariant { expect(Guardian.new(spammer).can_create_topic?(nil)).to be false }
Invariant { expect{PostCreator.create(spammer, {title: 'limited time offer for you', raw: 'better buy this stuff ok', archetype_id: 1})}.to raise_error(Discourse::InvalidAccess) } Invariant { expect{PostCreator.create(spammer, {title: 'limited time offer for you', raw: 'better buy this stuff ok', archetype_id: 1})}.to raise_error(Discourse::InvalidAccess) }
Invariant { PostCreator.create(spammer, {topic_id: another_topic.id, raw: 'my reply is spam in your topic', archetype_id: 1}).should == nil } Invariant { expect(PostCreator.create(spammer, {topic_id: another_topic.id, raw: 'my reply is spam in your topic', archetype_id: 1})).to eq(nil) }
Then { expect(spammer.reload).to be_blocked } Then { expect(spammer.reload).to be_blocked }
And { expect(spam_post.reload).to be_hidden } And { expect(spam_post.reload).to be_hidden }

View file

@ -29,14 +29,14 @@ describe Topic do
context 'uncategorized' do context 'uncategorized' do
Given(:category) { nil } Given(:category) { nil }
Then { topic.auto_close_at.should == nil } Then { expect(topic.auto_close_at).to eq(nil) }
And { scheduled_jobs_for(:close_topic).should be_empty } And { expect(scheduled_jobs_for(:close_topic)).to be_empty }
end end
context 'category without default auto-close' do context 'category without default auto-close' do
Given(:category) { Fabricate(:category, auto_close_hours: nil) } Given(:category) { Fabricate(:category, auto_close_hours: nil) }
Then { topic.auto_close_at.should == nil } Then { expect(topic.auto_close_at).to eq(nil) }
And { scheduled_jobs_for(:close_topic).should be_empty } And { expect(scheduled_jobs_for(:close_topic)).to be_empty }
end end
context 'jobs may be queued' do context 'jobs may be queued' do
@ -51,20 +51,20 @@ describe Topic do
context 'category has a default auto-close' do context 'category has a default auto-close' do
Given(:category) { Fabricate(:category, auto_close_hours: 2.0) } Given(:category) { Fabricate(:category, auto_close_hours: 2.0) }
Then { topic.auto_close_at.should be_within_one_second_of(2.hours.from_now) } Then { expect(topic.auto_close_at).to be_within_one_second_of(2.hours.from_now) }
And { topic.auto_close_started_at.should == Time.zone.now } And { expect(topic.auto_close_started_at).to eq(Time.zone.now) }
And { scheduled_jobs_for(:close_topic, {topic_id: topic.id}).size.should == 1 } And { expect(scheduled_jobs_for(:close_topic, {topic_id: topic.id}).size).to eq(1) }
And { scheduled_jobs_for(:close_topic, {topic_id: category.topic.id}).should be_empty } And { expect(scheduled_jobs_for(:close_topic, {topic_id: category.topic.id})).to be_empty }
context 'topic was created by staff user' do context 'topic was created by staff user' do
Given(:admin) { Fabricate(:admin) } Given(:admin) { Fabricate(:admin) }
Given(:staff_topic) { Fabricate(:topic, user: admin, category: category) } Given(:staff_topic) { Fabricate(:topic, user: admin, category: category) }
Then { scheduled_jobs_for(:close_topic, {topic_id: staff_topic.id, user_id: admin.id}).size.should == 1 } Then { expect(scheduled_jobs_for(:close_topic, {topic_id: staff_topic.id, user_id: admin.id}).size).to eq(1) }
context 'topic is closed manually' do context 'topic is closed manually' do
When { staff_topic.update_status('closed', true, admin) } When { staff_topic.update_status('closed', true, admin) }
Then { staff_topic.reload.auto_close_at.should == nil } Then { expect(staff_topic.reload.auto_close_at).to eq(nil) }
And { staff_topic.auto_close_started_at.should == nil } And { expect(staff_topic.auto_close_started_at).to eq(nil) }
end end
end end
@ -73,18 +73,18 @@ describe Topic do
Given { Discourse.stubs(:system_user).returns(system_user) } Given { Discourse.stubs(:system_user).returns(system_user) }
Given(:regular_user) { Fabricate(:user) } Given(:regular_user) { Fabricate(:user) }
Given(:regular_user_topic) { Fabricate(:topic, user: regular_user, category: category) } Given(:regular_user_topic) { Fabricate(:topic, user: regular_user, category: category) }
Then { scheduled_jobs_for(:close_topic, {topic_id: regular_user_topic.id, user_id: system_user.id}).size.should == 1 } Then { expect(scheduled_jobs_for(:close_topic, {topic_id: regular_user_topic.id, user_id: system_user.id}).size).to eq(1) }
end end
context 'auto_close_hours of topic was set to 0' do context 'auto_close_hours of topic was set to 0' do
Given(:dont_close_topic) { Fabricate(:topic, auto_close_hours: 0, category: category) } Given(:dont_close_topic) { Fabricate(:topic, auto_close_hours: 0, category: category) }
Then { scheduled_jobs_for(:close_topic).should be_empty } Then { expect(scheduled_jobs_for(:close_topic)).to be_empty }
end end
context 'two topics in the category' do context 'two topics in the category' do
Given!(:other_topic) { Fabricate(:topic, category: category) } Given!(:other_topic) { Fabricate(:topic, category: category) }
When { topic } # create the second topic When { topic } # create the second topic
Then { scheduled_jobs_for(:close_topic).size.should == 2 } Then { expect(scheduled_jobs_for(:close_topic).size).to eq(2) }
end end
end end
@ -92,8 +92,8 @@ describe Topic do
Given(:admin) { Fabricate(:admin) } Given(:admin) { Fabricate(:admin) }
Given!(:auto_closed_topic) { Fabricate(:topic, user: admin, closed: true, auto_close_at: 1.day.ago, auto_close_user_id: admin.id, auto_close_started_at: 6.days.ago) } Given!(:auto_closed_topic) { Fabricate(:topic, user: admin, closed: true, auto_close_at: 1.day.ago, auto_close_user_id: admin.id, auto_close_started_at: 6.days.ago) }
When { auto_closed_topic.update_status('closed', false, admin) } When { auto_closed_topic.update_status('closed', false, admin) }
Then { auto_closed_topic.reload.auto_close_at.should == nil } Then { expect(auto_closed_topic.reload.auto_close_at).to eq(nil) }
And { auto_closed_topic.auto_close_started_at.should == nil } And { expect(auto_closed_topic.auto_close_started_at).to eq(nil) }
end end
end end
end end

View file

@ -4,20 +4,20 @@ describe "i18n integrity checks" do
it 'should have an i18n key for all trust levels' do it 'should have an i18n key for all trust levels' do
TrustLevel.all.each do |ts| TrustLevel.all.each do |ts|
ts.name.should_not =~ /translation missing/ expect(ts.name).not_to match(/translation missing/)
end end
end end
it "needs an i18n key (description) for each Site Setting" do it "needs an i18n key (description) for each Site Setting" do
SiteSetting.all_settings.each do |s| SiteSetting.all_settings.each do |s|
next if s[:setting] =~ /^test/ next if s[:setting] =~ /^test/
s[:description].should_not =~ /translation missing/ expect(s[:description]).not_to match(/translation missing/)
end end
end end
it "needs an i18n key (notification_types) for each Notification type" do it "needs an i18n key (notification_types) for each Notification type" do
Notification.types.each_key do |type| Notification.types.each_key do |type|
I18n.t("notification_types.#{type}").should_not =~ /translation missing/ expect(I18n.t("notification_types.#{type}")).not_to match(/translation missing/)
end end
end end
@ -25,11 +25,11 @@ describe "i18n integrity checks" do
Dir["#{Rails.root}/config/locales/client.*.yml"].each do |f| Dir["#{Rails.root}/config/locales/client.*.yml"].each do |f|
locale = /.*\.([^.]{2,})\.yml$/.match(f)[1] locale = /.*\.([^.]{2,})\.yml$/.match(f)[1]
client = YAML.load_file("#{Rails.root}/config/locales/client.#{locale}.yml") client = YAML.load_file("#{Rails.root}/config/locales/client.#{locale}.yml")
client.count.should == 1 expect(client.count).to eq(1)
client[locale].should_not == nil expect(client[locale]).not_to eq(nil)
client[locale].count.should == 2 expect(client[locale].count).to eq(2)
client[locale]["js"].should_not == nil expect(client[locale]["js"]).not_to eq(nil)
client[locale]["admin_js"].should_not == nil expect(client[locale]["admin_js"]).not_to eq(nil)
end end
end end
@ -37,8 +37,8 @@ describe "i18n integrity checks" do
Dir["#{Rails.root}/config/locales/server.*.yml"].each do |f| Dir["#{Rails.root}/config/locales/server.*.yml"].each do |f|
locale = /.*\.([^.]{2,})\.yml$/.match(f)[1] locale = /.*\.([^.]{2,})\.yml$/.match(f)[1]
server = YAML.load_file("#{Rails.root}/config/locales/server.#{locale}.yml") server = YAML.load_file("#{Rails.root}/config/locales/server.#{locale}.yml")
server.count.should == 1 expect(server.count).to eq(1)
server[locale].should_not == nil expect(server[locale]).not_to eq(nil)
end end
end end
@ -50,7 +50,7 @@ describe "i18n integrity checks" do
next if line.start_with? "#" next if line.start_with? "#"
next if line.start_with? "---" next if line.start_with? "---"
next if line.blank? next if line.blank?
line.should eq locale expect(line).to eq locale
break break
end end
end end

View file

@ -12,7 +12,7 @@ describe ApplicationRequest do
it 'logs nothing for an unflushed increment' do it 'logs nothing for an unflushed increment' do
ApplicationRequest.increment!(:anon) ApplicationRequest.increment!(:anon)
ApplicationRequest.count.should == 0 expect(ApplicationRequest.count).to eq(0)
end end
it 'can automatically flush' do it 'can automatically flush' do
@ -22,7 +22,7 @@ describe ApplicationRequest do
inc(:http_total) inc(:http_total)
inc(:http_total, autoflush: 3) inc(:http_total, autoflush: 3)
ApplicationRequest.http_total.first.count.should == 3 expect(ApplicationRequest.http_total.first.count).to eq(3)
end end
it 'can flush based on time' do it 'can flush based on time' do
@ -30,12 +30,12 @@ describe ApplicationRequest do
freeze_time(t1) freeze_time(t1)
ApplicationRequest.write_cache! ApplicationRequest.write_cache!
inc(:http_total) inc(:http_total)
ApplicationRequest.count.should == 0 expect(ApplicationRequest.count).to eq(0)
freeze_time(t1 + ApplicationRequest.autoflush_seconds + 1) freeze_time(t1 + ApplicationRequest.autoflush_seconds + 1)
inc(:http_total) inc(:http_total)
ApplicationRequest.count.should == 1 expect(ApplicationRequest.count).to eq(1)
end end
it 'flushes yesterdays results' do it 'flushes yesterdays results' do
@ -46,7 +46,7 @@ describe ApplicationRequest do
inc(:http_total) inc(:http_total)
ApplicationRequest.write_cache! ApplicationRequest.write_cache!
ApplicationRequest.count.should == 2 expect(ApplicationRequest.count).to eq(2)
end end
it 'clears cache correctly' do it 'clears cache correctly' do
@ -55,7 +55,7 @@ describe ApplicationRequest do
ApplicationRequest.clear_cache! ApplicationRequest.clear_cache!
ApplicationRequest.write_cache! ApplicationRequest.write_cache!
ApplicationRequest.count.should == 0 expect(ApplicationRequest.count).to eq(0)
end end
it 'logs a few counts once flushed' do it 'logs a few counts once flushed' do
@ -68,9 +68,9 @@ describe ApplicationRequest do
ApplicationRequest.write_cache! ApplicationRequest.write_cache!
ApplicationRequest.http_total.first.count.should == 3 expect(ApplicationRequest.http_total.first.count).to eq(3)
ApplicationRequest.http_2xx.first.count.should == 2 expect(ApplicationRequest.http_2xx.first.count).to eq(2)
ApplicationRequest.http_3xx.first.count.should == 4 expect(ApplicationRequest.http_3xx.first.count).to eq(4)
end end
end end

View file

@ -200,7 +200,7 @@ describe Category do
it 'and be sanitized' do it 'and be sanitized' do
c = Fabricate(:category, name: 'Cats', slug: ' invalid slug') c = Fabricate(:category, name: 'Cats', slug: ' invalid slug')
c.slug.should == 'invalid-slug' expect(c.slug).to eq('invalid-slug')
end end
it 'fails if custom slug is duplicate with existing' do it 'fails if custom slug is duplicate with existing' do

View file

@ -57,7 +57,7 @@ describe CategoryUser do
CategoryUser.create!(user: user, category: watched_category, notification_level: CategoryUser.notification_levels[:watching]) CategoryUser.create!(user: user, category: watched_category, notification_level: CategoryUser.notification_levels[:watching])
post = create_post post = create_post
TopicUser.get(post.topic, user).should be_blank expect(TopicUser.get(post.topic, user)).to be_blank
# Now, change the topic's category # Now, change the topic's category
post.topic.change_category_to_id(watched_category.id) post.topic.change_category_to_id(watched_category.id)

View file

@ -292,7 +292,7 @@ describe Group do
let(:group) {Fabricate(:group)} let(:group) {Fabricate(:group)}
it "by default has no managers" do it "by default has no managers" do
group.managers.should be_empty expect(group.managers).to be_empty
end end
it "multiple managers can be appointed" do it "multiple managers can be appointed" do

View file

@ -202,7 +202,7 @@ describe PostAction do
it 'should generate notifications correctly' do it 'should generate notifications correctly' do
ActiveRecord::Base.observers.enable :all ActiveRecord::Base.observers.enable :all
PostAction.act(codinghorror, post, PostActionType.types[:like]) PostAction.act(codinghorror, post, PostActionType.types[:like])
Notification.count.should == 1 expect(Notification.count).to eq(1)
mutee = Fabricate(:user) mutee = Fabricate(:user)
@ -210,13 +210,13 @@ describe PostAction do
MutedUser.create!(user_id: post.user.id, muted_user_id: mutee.id) MutedUser.create!(user_id: post.user.id, muted_user_id: mutee.id)
PostAction.act(mutee, post, PostActionType.types[:like]) PostAction.act(mutee, post, PostActionType.types[:like])
Notification.count.should == 1 expect(Notification.count).to eq(1)
# you can not mute admin, sorry # you can not mute admin, sorry
MutedUser.create!(user_id: post.user.id, muted_user_id: admin.id) MutedUser.create!(user_id: post.user.id, muted_user_id: admin.id)
PostAction.act(admin, post, PostActionType.types[:like]) PostAction.act(admin, post, PostActionType.types[:like])
Notification.count.should == 2 expect(Notification.count).to eq(2)
end end

View file

@ -2,7 +2,7 @@ require 'spec_helper'
describe TopTopic do describe TopTopic do
it { should belong_to :topic } it { is_expected.to belong_to :topic }
context "refresh!" do context "refresh!" do
@ -10,7 +10,7 @@ describe TopTopic do
let!(:t2) { Fabricate(:topic) } let!(:t2) { Fabricate(:topic) }
it "begins blank" do it "begins blank" do
TopTopic.all.should be_blank expect(TopTopic.all).to be_blank
end end
context "after calculating" do context "after calculating" do
@ -20,7 +20,7 @@ describe TopTopic do
end end
it "should have top topics" do it "should have top topics" do
TopTopic.pluck(:topic_id).should =~ [t1.id, t2.id] expect(TopTopic.pluck(:topic_id)).to match_array([t1.id, t2.id])
end end
end end

View file

@ -2,8 +2,8 @@ require 'spec_helper'
describe TopicUser do describe TopicUser do
it { should belong_to :user } it { is_expected.to belong_to :user }
it { should belong_to :topic } it { is_expected.to belong_to :topic }
let(:user) { Fabricate(:user) } let(:user) { Fabricate(:user) }
@ -28,7 +28,7 @@ describe TopicUser do
it "defaults to blank" do it "defaults to blank" do
ensure_topic_user ensure_topic_user
topic_user.cleared_pinned_at.should be_blank expect(topic_user.cleared_pinned_at).to be_blank
end end
end end
@ -38,50 +38,50 @@ describe TopicUser do
it 'should be set to tracking if auto_track_topics is enabled' do it 'should be set to tracking if auto_track_topics is enabled' do
user.update_column(:auto_track_topics_after_msecs, 0) user.update_column(:auto_track_topics_after_msecs, 0)
ensure_topic_user ensure_topic_user
TopicUser.get(topic, user).notification_level.should == TopicUser.notification_levels[:tracking] expect(TopicUser.get(topic, user).notification_level).to eq(TopicUser.notification_levels[:tracking])
end end
it 'should reset regular topics to tracking topics if auto track is changed' do it 'should reset regular topics to tracking topics if auto track is changed' do
ensure_topic_user ensure_topic_user
user.auto_track_topics_after_msecs = 0 user.auto_track_topics_after_msecs = 0
user.save user.save
topic_user.notification_level.should == TopicUser.notification_levels[:tracking] expect(topic_user.notification_level).to eq(TopicUser.notification_levels[:tracking])
end end
it 'should be set to "regular" notifications, by default on non creators' do it 'should be set to "regular" notifications, by default on non creators' do
ensure_topic_user ensure_topic_user
TopicUser.get(topic,user).notification_level.should == TopicUser.notification_levels[:regular] expect(TopicUser.get(topic,user).notification_level).to eq(TopicUser.notification_levels[:regular])
end end
it 'reason should reset when changed' do it 'reason should reset when changed' do
topic.notify_muted!(topic.user) topic.notify_muted!(topic.user)
TopicUser.get(topic,topic.user).notifications_reason_id.should == TopicUser.notification_reasons[:user_changed] expect(TopicUser.get(topic,topic.user).notifications_reason_id).to eq(TopicUser.notification_reasons[:user_changed])
end end
it 'should have the correct reason for a user change when watched' do it 'should have the correct reason for a user change when watched' do
topic.notify_watch!(user) topic.notify_watch!(user)
topic_user.notification_level.should == TopicUser.notification_levels[:watching] expect(topic_user.notification_level).to eq(TopicUser.notification_levels[:watching])
topic_user.notifications_reason_id.should == TopicUser.notification_reasons[:user_changed] expect(topic_user.notifications_reason_id).to eq(TopicUser.notification_reasons[:user_changed])
topic_user.notifications_changed_at.should_not == nil expect(topic_user.notifications_changed_at).not_to eq(nil)
end end
it 'should have the correct reason for a user change when set to regular' do it 'should have the correct reason for a user change when set to regular' do
topic.notify_regular!(user) topic.notify_regular!(user)
topic_user.notification_level.should == TopicUser.notification_levels[:regular] expect(topic_user.notification_level).to eq(TopicUser.notification_levels[:regular])
topic_user.notifications_reason_id.should == TopicUser.notification_reasons[:user_changed] expect(topic_user.notifications_reason_id).to eq(TopicUser.notification_reasons[:user_changed])
topic_user.notifications_changed_at.should_not == nil expect(topic_user.notifications_changed_at).not_to eq(nil)
end end
it 'should have the correct reason for a user change when set to regular' do it 'should have the correct reason for a user change when set to regular' do
topic.notify_muted!(user) topic.notify_muted!(user)
topic_user.notification_level.should == TopicUser.notification_levels[:muted] expect(topic_user.notification_level).to eq(TopicUser.notification_levels[:muted])
topic_user.notifications_reason_id.should == TopicUser.notification_reasons[:user_changed] expect(topic_user.notifications_reason_id).to eq(TopicUser.notification_reasons[:user_changed])
topic_user.notifications_changed_at.should_not == nil expect(topic_user.notifications_changed_at).not_to eq(nil)
end end
it 'should watch topics a user created' do it 'should watch topics a user created' do
topic_creator_user.notification_level.should == TopicUser.notification_levels[:watching] expect(topic_creator_user.notification_level).to eq(TopicUser.notification_levels[:watching])
topic_creator_user.notifications_reason_id.should == TopicUser.notification_reasons[:created_topic] expect(topic_creator_user.notifications_reason_id).to eq(TopicUser.notification_reasons[:created_topic])
end end
end end
@ -93,8 +93,8 @@ describe TopicUser do
it 'set upon initial visit' do it 'set upon initial visit' do
freeze_time yesterday do freeze_time yesterday do
topic_user.first_visited_at.to_i.should == yesterday.to_i expect(topic_user.first_visited_at.to_i).to eq(yesterday.to_i)
topic_user.last_visited_at.to_i.should == yesterday.to_i expect(topic_user.last_visited_at.to_i).to eq(yesterday.to_i)
end end
end end
@ -105,8 +105,8 @@ describe TopicUser do
TopicUser.track_visit!(topic,user) TopicUser.track_visit!(topic,user)
# reload is a no go # reload is a no go
topic_user = TopicUser.get(topic,user) topic_user = TopicUser.get(topic,user)
topic_user.first_visited_at.to_i.should == yesterday.to_i expect(topic_user.first_visited_at.to_i).to eq(yesterday.to_i)
topic_user.last_visited_at.to_i.should == today.to_i expect(topic_user.last_visited_at.to_i).to eq(today.to_i)
end end
end end
@ -128,9 +128,9 @@ describe TopicUser do
it 'should create a new record for a visit' do it 'should create a new record for a visit' do
freeze_time yesterday do freeze_time yesterday do
topic_user.last_read_post_number.should == 1 expect(topic_user.last_read_post_number).to eq(1)
topic_user.last_visited_at.to_i.should == yesterday.to_i expect(topic_user.last_visited_at.to_i).to eq(yesterday.to_i)
topic_user.first_visited_at.to_i.should == yesterday.to_i expect(topic_user.first_visited_at.to_i).to eq(yesterday.to_i)
end end
end end
@ -139,9 +139,9 @@ describe TopicUser do
Fabricate(:post, topic: topic, user: user) Fabricate(:post, topic: topic, user: user)
TopicUser.update_last_read(user, topic.id, 2, 0) TopicUser.update_last_read(user, topic.id, 2, 0)
topic_user = TopicUser.get(topic,user) topic_user = TopicUser.get(topic,user)
topic_user.last_read_post_number.should == 2 expect(topic_user.last_read_post_number).to eq(2)
topic_user.last_visited_at.to_i.should == yesterday.to_i expect(topic_user.last_visited_at.to_i).to eq(yesterday.to_i)
topic_user.first_visited_at.to_i.should == yesterday.to_i expect(topic_user.first_visited_at.to_i).to eq(yesterday.to_i)
end end
end end
end end
@ -153,8 +153,8 @@ describe TopicUser do
target_user = Fabricate(:user) target_user = Fabricate(:user)
post = create_post(archetype: Archetype.private_message, target_usernames: target_user.username); post = create_post(archetype: Archetype.private_message, target_usernames: target_user.username);
TopicUser.get(post.topic, post.user).notification_level.should == TopicUser.notification_levels[:watching] expect(TopicUser.get(post.topic, post.user).notification_level).to eq(TopicUser.notification_levels[:watching])
TopicUser.get(post.topic, target_user).notification_level.should == TopicUser.notification_levels[:watching] expect(TopicUser.get(post.topic, target_user).notification_level).to eq(TopicUser.notification_levels[:watching])
end end
end end
@ -168,27 +168,27 @@ describe TopicUser do
it 'should automatically track topics you reply to' do it 'should automatically track topics you reply to' do
post_creator.create post_creator.create
topic_new_user.notification_level.should == TopicUser.notification_levels[:tracking] expect(topic_new_user.notification_level).to eq(TopicUser.notification_levels[:tracking])
topic_new_user.notifications_reason_id.should == TopicUser.notification_reasons[:created_post] expect(topic_new_user.notifications_reason_id).to eq(TopicUser.notification_reasons[:created_post])
end end
it 'should not automatically track topics you reply to and have set state manually' do it 'should not automatically track topics you reply to and have set state manually' do
post_creator.create post_creator.create
TopicUser.change(new_user, topic, notification_level: TopicUser.notification_levels[:regular]) TopicUser.change(new_user, topic, notification_level: TopicUser.notification_levels[:regular])
topic_new_user.notification_level.should == TopicUser.notification_levels[:regular] expect(topic_new_user.notification_level).to eq(TopicUser.notification_levels[:regular])
topic_new_user.notifications_reason_id.should == TopicUser.notification_reasons[:user_changed] expect(topic_new_user.notifications_reason_id).to eq(TopicUser.notification_reasons[:user_changed])
end end
it 'should automatically track topics after they are read for long enough' do it 'should automatically track topics after they are read for long enough' do
topic_new_user.notification_level.should ==TopicUser.notification_levels[:regular] expect(topic_new_user.notification_level).to eq(TopicUser.notification_levels[:regular])
TopicUser.update_last_read(new_user, topic.id, 2, 1001) TopicUser.update_last_read(new_user, topic.id, 2, 1001)
TopicUser.get(topic, new_user).notification_level.should == TopicUser.notification_levels[:tracking] expect(TopicUser.get(topic, new_user).notification_level).to eq(TopicUser.notification_levels[:tracking])
end end
it 'should not automatically track topics after they are read for long enough if changed manually' do it 'should not automatically track topics after they are read for long enough if changed manually' do
TopicUser.change(new_user, topic, notification_level: TopicUser.notification_levels[:regular]) TopicUser.change(new_user, topic, notification_level: TopicUser.notification_levels[:regular])
TopicUser.update_last_read(new_user, topic, 2, 1001) TopicUser.update_last_read(new_user, topic, 2, 1001)
topic_new_user.notification_level.should == TopicUser.notification_levels[:regular] expect(topic_new_user.notification_level).to eq(TopicUser.notification_levels[:regular])
end end
end end
end end
@ -199,11 +199,11 @@ describe TopicUser do
topic; user topic; user
lambda { expect {
TopicUser.change(user, topic.id, total_msecs_viewed: 1) TopicUser.change(user, topic.id, total_msecs_viewed: 1)
TopicUser.change(user, topic.id, total_msecs_viewed: 2) TopicUser.change(user, topic.id, total_msecs_viewed: 2)
TopicUser.change(user, topic.id, total_msecs_viewed: 3) TopicUser.change(user, topic.id, total_msecs_viewed: 3)
}.should change(TopicUser, :count).by(1) }.to change(TopicUser, :count).by(1)
end end
describe 'after creating a row' do describe 'after creating a row' do
@ -212,11 +212,11 @@ describe TopicUser do
end end
it 'has a lookup' do it 'has a lookup' do
TopicUser.lookup_for(user, [topic]).should be_present expect(TopicUser.lookup_for(user, [topic])).to be_present
end end
it 'has a key in the lookup for this forum topic' do it 'has a key in the lookup for this forum topic' do
TopicUser.lookup_for(user, [topic]).has_key?(topic.id).should == true expect(TopicUser.lookup_for(user, [topic]).has_key?(topic.id)).to eq(true)
end end
end end
@ -228,8 +228,8 @@ describe TopicUser do
TopicUser.create!(user_id: 2, topic_id: 1, notification_level: TopicUser.notification_levels[:watching]) TopicUser.create!(user_id: 2, topic_id: 1, notification_level: TopicUser.notification_levels[:watching])
TopicUser.create!(user_id: 3, topic_id: 1, notification_level: TopicUser.notification_levels[:regular]) TopicUser.create!(user_id: 3, topic_id: 1, notification_level: TopicUser.notification_levels[:regular])
TopicUser.tracking(1).count.should == 2 expect(TopicUser.tracking(1).count).to eq(2)
TopicUser.tracking(10).count.should == 0 expect(TopicUser.tracking(10).count).to eq(0)
end end
it "is able to self heal" do it "is able to self heal" do
@ -247,8 +247,8 @@ describe TopicUser do
TopicUser.ensure_consistency! TopicUser.ensure_consistency!
tu = TopicUser.find_by(user_id: p1.user_id, topic_id: p1.topic_id) tu = TopicUser.find_by(user_id: p1.user_id, topic_id: p1.topic_id)
tu.last_read_post_number.should == p2.post_number expect(tu.last_read_post_number).to eq(p2.post_number)
tu.highest_seen_post_number.should == 2 expect(tu.highest_seen_post_number).to eq(2)
end end
@ -263,15 +263,15 @@ describe TopicUser do
# mails posts from earlier topics # mails posts from earlier topics
tu = TopicUser.find_by(user_id: user3.id, topic_id: post.topic_id) tu = TopicUser.find_by(user_id: user3.id, topic_id: post.topic_id)
tu.last_emailed_post_number.should == 2 expect(tu.last_emailed_post_number).to eq(2)
# mails nothing to random users # mails nothing to random users
tu = TopicUser.find_by(user_id: user1.id, topic_id: post.topic_id) tu = TopicUser.find_by(user_id: user1.id, topic_id: post.topic_id)
tu.should == nil expect(tu).to eq(nil)
# mails other user # mails other user
tu = TopicUser.find_by(user_id: user2.id, topic_id: post.topic_id) tu = TopicUser.find_by(user_id: user2.id, topic_id: post.topic_id)
tu.last_emailed_post_number.should == 2 expect(tu.last_emailed_post_number).to eq(2)
end end
end end

View file

@ -6,11 +6,11 @@ describe UserBadge do
context 'validations' do context 'validations' do
before(:each) { BadgeGranter.grant(Fabricate(:badge), Fabricate(:user)) } before(:each) { BadgeGranter.grant(Fabricate(:badge), Fabricate(:user)) }
it { should validate_presence_of(:badge_id) } it { is_expected.to validate_presence_of(:badge_id) }
it { should validate_presence_of(:user_id) } it { is_expected.to validate_presence_of(:user_id) }
it { should validate_presence_of(:granted_at) } it { is_expected.to validate_presence_of(:granted_at) }
it { should validate_presence_of(:granted_by) } it { is_expected.to validate_presence_of(:granted_by) }
it { should validate_uniqueness_of(:badge_id).scoped_to(:user_id) } it { is_expected.to validate_uniqueness_of(:badge_id).scoped_to(:user_id) }
end end
end end

View file

@ -3,12 +3,12 @@ require 'spec_helper'
describe AnonymousShadowCreator do describe AnonymousShadowCreator do
it "returns no shadow by default" do it "returns no shadow by default" do
AnonymousShadowCreator.get(Fabricate.build(:user)).should == nil expect(AnonymousShadowCreator.get(Fabricate.build(:user))).to eq(nil)
end end
it "returns no shadow if trust level is not met" do it "returns no shadow if trust level is not met" do
SiteSetting.allow_anonymous_posting = true SiteSetting.allow_anonymous_posting = true
AnonymousShadowCreator.get(Fabricate.build(:user, trust_level: 0)).should == nil expect(AnonymousShadowCreator.get(Fabricate.build(:user, trust_level: 0))).to eq(nil)
end end
it "returns a new shadow once time expires" do it "returns a new shadow once time expires" do
@ -21,13 +21,13 @@ describe AnonymousShadowCreator do
freeze_time 2.minutes.from_now freeze_time 2.minutes.from_now
shadow2 = AnonymousShadowCreator.get(user) shadow2 = AnonymousShadowCreator.get(user)
shadow.id.should == shadow2.id expect(shadow.id).to eq(shadow2.id)
create_post(user: shadow) create_post(user: shadow)
freeze_time 4.minutes.from_now freeze_time 4.minutes.from_now
shadow3 = AnonymousShadowCreator.get(user) shadow3 = AnonymousShadowCreator.get(user)
shadow2.id.should_not == shadow3.id expect(shadow2.id).not_to eq(shadow3.id)
end end
@ -38,20 +38,20 @@ describe AnonymousShadowCreator do
shadow = AnonymousShadowCreator.get(user) shadow = AnonymousShadowCreator.get(user)
shadow2 = AnonymousShadowCreator.get(user) shadow2 = AnonymousShadowCreator.get(user)
shadow.id.should == shadow2.id expect(shadow.id).to eq(shadow2.id)
shadow.trust_level.should == 1 expect(shadow.trust_level).to eq(1)
shadow.username.should == "anonymous" expect(shadow.username).to eq("anonymous")
shadow.created_at.should_not == user.created_at expect(shadow.created_at).not_to eq(user.created_at)
p = create_post p = create_post
Guardian.new(shadow).post_can_act?(p, :like).should == false expect(Guardian.new(shadow).post_can_act?(p, :like)).to eq(false)
Guardian.new(user).post_can_act?(p, :like).should == true expect(Guardian.new(user).post_can_act?(p, :like)).to eq(true)
user.anonymous?.should == false expect(user.anonymous?).to eq(false)
shadow.anonymous?.should == true expect(shadow.anonymous?).to eq(true)
end end
end end

View file

@ -144,7 +144,7 @@ describe SpamRule::AutoBlock do
enforcer = described_class.new(user) enforcer = described_class.new(user)
enforcer.expects(:num_spam_flags_against_user).never enforcer.expects(:num_spam_flags_against_user).never
enforcer.expects(:num_users_who_flagged_spam_against_user).never enforcer.expects(:num_users_who_flagged_spam_against_user).never
enforcer.block?.should eq(false) expect(enforcer.block?).to eq(false)
end end
end end

View file

@ -17,13 +17,13 @@ describe BadgeGranter do
BadgeGranter.revoke_ungranted_titles! BadgeGranter.revoke_ungranted_titles!
user.reload user.reload
user.title.should == badge.name expect(user.title).to eq(badge.name)
badge.update_column(:allow_title, false) badge.update_column(:allow_title, false)
BadgeGranter.revoke_ungranted_titles! BadgeGranter.revoke_ungranted_titles!
user.reload user.reload
user.title.should == '' expect(user.title).to eq('')
user.title = "CEO" user.title = "CEO"
user.save user.save
@ -31,7 +31,7 @@ describe BadgeGranter do
BadgeGranter.revoke_ungranted_titles! BadgeGranter.revoke_ungranted_titles!
user.reload user.reload
user.title.should == "CEO" expect(user.title).to eq("CEO")
end end
end end
@ -39,7 +39,7 @@ describe BadgeGranter do
it 'can correctly preview' do it 'can correctly preview' do
Fabricate(:user, email: 'sam@gmail.com') Fabricate(:user, email: 'sam@gmail.com')
result = BadgeGranter.preview('select id user_id, null post_id, created_at granted_at from users where email like \'%gmail.com\'') result = BadgeGranter.preview('select id user_id, null post_id, created_at granted_at from users where email like \'%gmail.com\'')
result[:grant_count].should == 1 expect(result[:grant_count]).to eq(1)
end end
end end
@ -61,11 +61,11 @@ describe BadgeGranter do
BadgeGranter.backfill(Badge.find(Badge::FirstLike)) BadgeGranter.backfill(Badge.find(Badge::FirstLike))
b = UserBadge.find_by(user_id: post.user_id) b = UserBadge.find_by(user_id: post.user_id)
b.post_id.should == post.id expect(b.post_id).to eq(post.id)
b.badge_id = Badge::Welcome b.badge_id = Badge::Welcome
b = UserBadge.find_by(user_id: user2.id) b = UserBadge.find_by(user_id: user2.id)
b.post_id.should == post.id expect(b.post_id).to eq(post.id)
b.badge_id = Badge::FirstLike b.badge_id = Badge::FirstLike
end end
@ -77,12 +77,12 @@ describe BadgeGranter do
} }
# TODO add welcome # TODO add welcome
post.user.user_badges.pluck(:badge_id).sort.should == [Badge::NiceTopic,Badge::GoodTopic] expect(post.user.user_badges.pluck(:badge_id).sort).to eq([Badge::NiceTopic,Badge::GoodTopic])
post.user.notifications.count.should == 2 expect(post.user.notifications.count).to eq(2)
Badge.find(Badge::NiceTopic).grant_count.should == 1 expect(Badge.find(Badge::NiceTopic).grant_count).to eq(1)
Badge.find(Badge::GoodTopic).grant_count.should == 1 expect(Badge.find(Badge::GoodTopic).grant_count).to eq(1)
end end
end end
@ -92,9 +92,9 @@ describe BadgeGranter do
badge = Fabricate(:badge, multiple_grant: true) badge = Fabricate(:badge, multiple_grant: true)
user_badge = BadgeGranter.grant(badge, user) user_badge = BadgeGranter.grant(badge, user)
user_badge = BadgeGranter.grant(badge, user) user_badge = BadgeGranter.grant(badge, user)
user_badge.should be_present expect(user_badge).to be_present
UserBadge.where(user_id: user.id).count.should == 2 expect(UserBadge.where(user_id: user.id).count).to eq(2)
end end
it 'sets granted_at' do it 'sets granted_at' do
@ -102,7 +102,7 @@ describe BadgeGranter do
Timecop.freeze time Timecop.freeze time
user_badge = BadgeGranter.grant(badge, user) user_badge = BadgeGranter.grant(badge, user)
user_badge.granted_at.should eq(time) expect(user_badge.granted_at).to eq(time)
Timecop.return Timecop.return
end end
@ -111,24 +111,24 @@ describe BadgeGranter do
admin = Fabricate(:admin) admin = Fabricate(:admin)
StaffActionLogger.any_instance.expects(:log_badge_grant).once StaffActionLogger.any_instance.expects(:log_badge_grant).once
user_badge = BadgeGranter.grant(badge, user, granted_by: admin) user_badge = BadgeGranter.grant(badge, user, granted_by: admin)
user_badge.granted_by.should eq(admin) expect(user_badge.granted_by).to eq(admin)
end end
it 'defaults granted_by to the system user' do it 'defaults granted_by to the system user' do
StaffActionLogger.any_instance.expects(:log_badge_grant).never StaffActionLogger.any_instance.expects(:log_badge_grant).never
user_badge = BadgeGranter.grant(badge, user) user_badge = BadgeGranter.grant(badge, user)
user_badge.granted_by_id.should eq(Discourse.system_user.id) expect(user_badge.granted_by_id).to eq(Discourse.system_user.id)
end end
it 'does not allow a regular user to grant badges' do it 'does not allow a regular user to grant badges' do
user_badge = BadgeGranter.grant(badge, user, granted_by: Fabricate(:user)) user_badge = BadgeGranter.grant(badge, user, granted_by: Fabricate(:user))
user_badge.should_not be_present expect(user_badge).not_to be_present
end end
it 'increments grant_count on the badge and creates a notification' do it 'increments grant_count on the badge and creates a notification' do
BadgeGranter.grant(badge, user) BadgeGranter.grant(badge, user)
badge.reload.grant_count.should eq(1) expect(badge.reload.grant_count).to eq(1)
user.notifications.find_by(notification_type: Notification.types[:granted_badge]).data_hash["badge_id"].should == badge.id expect(user.notifications.find_by(notification_type: Notification.types[:granted_badge]).data_hash["badge_id"]).to eq(badge.id)
end end
end end
@ -140,13 +140,13 @@ describe BadgeGranter do
it 'revokes the badge and does necessary cleanup' do it 'revokes the badge and does necessary cleanup' do
user.title = badge.name; user.save! user.title = badge.name; user.save!
badge.reload.grant_count.should eq(1) expect(badge.reload.grant_count).to eq(1)
StaffActionLogger.any_instance.expects(:log_badge_revoke).with(user_badge) StaffActionLogger.any_instance.expects(:log_badge_revoke).with(user_badge)
BadgeGranter.revoke(user_badge, revoked_by: admin) BadgeGranter.revoke(user_badge, revoked_by: admin)
UserBadge.find_by(user: user, badge: badge).should_not be_present expect(UserBadge.find_by(user: user, badge: badge)).not_to be_present
badge.reload.grant_count.should eq(0) expect(badge.reload.grant_count).to eq(0)
user.notifications.where(notification_type: Notification.types[:granted_badge]).should be_empty expect(user.notifications.where(notification_type: Notification.types[:granted_badge])).to be_empty
user.reload.title.should == nil expect(user.reload.title).to eq(nil)
end end
end end
@ -166,7 +166,7 @@ describe BadgeGranter do
user.save user.save
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.where(user_id: user.id, badge_id: Badge::Autobiographer).count.should eq(1) expect(UserBadge.where(user_id: user.id, badge_id: Badge::Autobiographer).count).to eq(1)
end end
it "grants read guidlines" do it "grants read guidlines" do
@ -174,7 +174,7 @@ describe BadgeGranter do
user.user_stat.save user.user_stat.save
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.where(user_id: user.id, badge_id: Badge::ReadGuidelines).count.should eq(1) expect(UserBadge.where(user_id: user.id, badge_id: Badge::ReadGuidelines).count).to eq(1)
end end
it "grants first link" do it "grants first link" do
@ -182,7 +182,7 @@ describe BadgeGranter do
post2 = create_post(raw: "#{Discourse.base_url}/t/slug/#{post.topic_id}") post2 = create_post(raw: "#{Discourse.base_url}/t/slug/#{post.topic_id}")
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.where(user_id: post2.user.id, badge_id: Badge::FirstLink).count.should eq(1) expect(UserBadge.where(user_id: post2.user.id, badge_id: Badge::FirstLink).count).to eq(1)
end end
it "grants first edit" do it "grants first edit" do
@ -190,24 +190,24 @@ describe BadgeGranter do
post = create_post post = create_post
user = post.user user = post.user
UserBadge.where(user_id: user.id, badge_id: Badge::Editor).count.should eq(0) expect(UserBadge.where(user_id: user.id, badge_id: Badge::Editor).count).to eq(0)
PostRevisor.new(post).revise!(user, { raw: "This is my new test 1235 123" }) PostRevisor.new(post).revise!(user, { raw: "This is my new test 1235 123" })
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.where(user_id: user.id, badge_id: Badge::Editor).count.should eq(1) expect(UserBadge.where(user_id: user.id, badge_id: Badge::Editor).count).to eq(1)
end end
it "grants and revokes trust level badges" do it "grants and revokes trust level badges" do
user.change_trust_level!(TrustLevel[4]) user.change_trust_level!(TrustLevel[4])
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.where(user_id: user.id, badge_id: Badge.trust_level_badge_ids).count.should eq(4) expect(UserBadge.where(user_id: user.id, badge_id: Badge.trust_level_badge_ids).count).to eq(4)
user.change_trust_level!(TrustLevel[1]) user.change_trust_level!(TrustLevel[1])
BadgeGranter.backfill(Badge.find(1)) BadgeGranter.backfill(Badge.find(1))
BadgeGranter.backfill(Badge.find(2)) BadgeGranter.backfill(Badge.find(2))
UserBadge.where(user_id: user.id, badge_id: 1).first.should_not == nil expect(UserBadge.where(user_id: user.id, badge_id: 1).first).not_to eq(nil)
UserBadge.where(user_id: user.id, badge_id: 2).first.should == nil expect(UserBadge.where(user_id: user.id, badge_id: 2).first).to eq(nil)
end end
it "grants system like badges" do it "grants system like badges" do
@ -215,7 +215,7 @@ describe BadgeGranter do
# Welcome badge # Welcome badge
action = PostAction.act(liker, post, PostActionType.types[:like]) action = PostAction.act(liker, post, PostActionType.types[:like])
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.find_by(user_id: user.id, badge_id: 5).should_not == nil expect(UserBadge.find_by(user_id: user.id, badge_id: 5)).not_to eq(nil)
post = create_post(topic: post.topic, user: user) post = create_post(topic: post.topic, user: user)
action = PostAction.act(liker, post, PostActionType.types[:like]) action = PostAction.act(liker, post, PostActionType.types[:like])
@ -226,25 +226,25 @@ describe BadgeGranter do
BadgeGranter.queue_badge_grant(Badge::Trigger::PostAction, post_action: action) BadgeGranter.queue_badge_grant(Badge::Trigger::PostAction, post_action: action)
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.find_by(user_id: user.id, badge_id: Badge::NicePost).should_not == nil expect(UserBadge.find_by(user_id: user.id, badge_id: Badge::NicePost)).not_to eq(nil)
UserBadge.where(user_id: user.id, badge_id: Badge::NicePost).count.should == 1 expect(UserBadge.where(user_id: user.id, badge_id: Badge::NicePost).count).to eq(1)
# Good post badge # Good post badge
post.update_attributes like_count: 25 post.update_attributes like_count: 25
BadgeGranter.queue_badge_grant(Badge::Trigger::PostAction, post_action: action) BadgeGranter.queue_badge_grant(Badge::Trigger::PostAction, post_action: action)
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.find_by(user_id: user.id, badge_id: Badge::GoodPost).should_not == nil expect(UserBadge.find_by(user_id: user.id, badge_id: Badge::GoodPost)).not_to eq(nil)
# Great post badge # Great post badge
post.update_attributes like_count: 50 post.update_attributes like_count: 50
BadgeGranter.queue_badge_grant(Badge::Trigger::PostAction, post_action: action) BadgeGranter.queue_badge_grant(Badge::Trigger::PostAction, post_action: action)
BadgeGranter.process_queue! BadgeGranter.process_queue!
UserBadge.find_by(user_id: user.id, badge_id: Badge::GreatPost).should_not == nil expect(UserBadge.find_by(user_id: user.id, badge_id: Badge::GreatPost)).not_to eq(nil)
# Revoke badges on unlike # Revoke badges on unlike
post.update_attributes like_count: 49 post.update_attributes like_count: 49
BadgeGranter.backfill(Badge.find(Badge::GreatPost)) BadgeGranter.backfill(Badge.find(Badge::GreatPost))
UserBadge.find_by(user_id: user.id, badge_id: Badge::GreatPost).should == nil expect(UserBadge.find_by(user_id: user.id, badge_id: Badge::GreatPost)).to eq(nil)
end end
end end

View file

@ -15,14 +15,14 @@ describe ColorSchemeRevisor do
it "can change the name" do it "can change the name" do
described_class.revise(color_scheme, valid_params.merge(name: "Changed Name")) described_class.revise(color_scheme, valid_params.merge(name: "Changed Name"))
color_scheme.reload.name.should == "Changed Name" expect(color_scheme.reload.name).to eq("Changed Name")
end end
it "can enable and disable" do it "can enable and disable" do
described_class.revise(color_scheme, valid_params.merge(enabled: true)) described_class.revise(color_scheme, valid_params.merge(enabled: true))
color_scheme.reload.should be_enabled expect(color_scheme.reload).to be_enabled
described_class.revise(color_scheme, valid_params.merge(enabled: false)) described_class.revise(color_scheme, valid_params.merge(enabled: false))
color_scheme.reload.should_not be_enabled expect(color_scheme.reload).not_to be_enabled
end end
def test_color_change(color_scheme_arg, expected_enabled) def test_color_change(color_scheme_arg, expected_enabled)
@ -30,9 +30,9 @@ describe ColorSchemeRevisor do
{name: color.name, hex: 'BEEF99'} {name: color.name, hex: 'BEEF99'}
])) ]))
color_scheme_arg.reload color_scheme_arg.reload
color_scheme_arg.enabled.should == expected_enabled expect(color_scheme_arg.enabled).to eq(expected_enabled)
color_scheme_arg.colors.size.should == 1 expect(color_scheme_arg.colors.size).to eq(1)
color_scheme_arg.colors.first.hex.should == 'BEEF99' expect(color_scheme_arg.colors.first.hex).to eq('BEEF99')
end end
it "can change colors of a color scheme that's not enabled" do it "can change colors of a color scheme that's not enabled" do
@ -47,8 +47,8 @@ describe ColorSchemeRevisor do
it "disables other color scheme before enabling" do it "disables other color scheme before enabling" do
prev_enabled = Fabricate(:color_scheme, enabled: true) prev_enabled = Fabricate(:color_scheme, enabled: true)
described_class.revise(color_scheme, valid_params.merge(enabled: true)) described_class.revise(color_scheme, valid_params.merge(enabled: true))
prev_enabled.reload.enabled.should == false expect(prev_enabled.reload.enabled).to eq(false)
color_scheme.reload.enabled.should == true expect(color_scheme.reload.enabled).to eq(true)
end end
it "doesn't make changes when a color is invalid" do it "doesn't make changes when a color is invalid" do
@ -56,10 +56,10 @@ describe ColorSchemeRevisor do
cs = described_class.revise(color_scheme, valid_params.merge(colors: [ cs = described_class.revise(color_scheme, valid_params.merge(colors: [
{name: color.name, hex: 'OOPS'} {name: color.name, hex: 'OOPS'}
])) ]))
cs.should_not be_valid expect(cs).not_to be_valid
cs.errors.should be_present expect(cs.errors).to be_present
}.to_not change { color_scheme.reload.version } }.to_not change { color_scheme.reload.version }
color_scheme.colors.first.hex.should == color.hex expect(color_scheme.colors.first.hex).to eq(color.hex)
end end
describe "versions" do describe "versions" do
@ -77,10 +77,10 @@ describe ColorSchemeRevisor do
])) ]))
}.to change { color_scheme.reload.version }.by(1) }.to change { color_scheme.reload.version }.by(1)
old_version = ColorScheme.find_by(versioned_id: color_scheme.id, version: (color_scheme.version - 1)) old_version = ColorScheme.find_by(versioned_id: color_scheme.id, version: (color_scheme.version - 1))
old_version.should_not == nil expect(old_version).not_to eq(nil)
old_version.colors.count.should == color_scheme.colors.count expect(old_version.colors.count).to eq(color_scheme.colors.count)
old_version.colors_by_name[color.name].hex.should == old_hex expect(old_version.colors_by_name[color.name].hex).to eq(old_hex)
color_scheme.colors_by_name[color.name].hex.should == 'BEEF99' expect(color_scheme.colors_by_name[color.name].hex).to eq('BEEF99')
end end
it "doesn't create a new version if colors have not changed" do it "doesn't create a new version if colors have not changed" do
@ -97,7 +97,7 @@ describe ColorSchemeRevisor do
context "when there are no previous versions" do context "when there are no previous versions" do
it "does nothing" do it "does nothing" do
expect { expect {
described_class.revert(color_scheme).should == color_scheme expect(described_class.revert(color_scheme)).to eq(color_scheme)
}.to_not change { color_scheme.reload.version } }.to_not change { color_scheme.reload.version }
end end
end end
@ -111,20 +111,20 @@ describe ColorSchemeRevisor do
end end
it "reverts the colors to the previous version" do it "reverts the colors to the previous version" do
color_scheme.colors_by_name[new_color_params[:name]].hex.should == new_color_params[:hex] expect(color_scheme.colors_by_name[new_color_params[:name]].hex).to eq(new_color_params[:hex])
expect { expect {
described_class.revert(color_scheme) described_class.revert(color_scheme)
}.to change { color_scheme.reload.version }.by(-1) }.to change { color_scheme.reload.version }.by(-1)
color_scheme.colors.size.should == 1 expect(color_scheme.colors.size).to eq(1)
color_scheme.colors.first.hex.should == @prev_hex expect(color_scheme.colors.first.hex).to eq(@prev_hex)
color_scheme.colors_by_name[new_color_params[:name]].hex.should == @prev_hex expect(color_scheme.colors_by_name[new_color_params[:name]].hex).to eq(@prev_hex)
end end
it "destroys the old version's record" do it "destroys the old version's record" do
expect { expect {
described_class.revert(color_scheme) described_class.revert(color_scheme)
}.to change { ColorScheme.count }.by(-1) }.to change { ColorScheme.count }.by(-1)
color_scheme.reload.previous_version.should == nil expect(color_scheme.reload.previous_version).to eq(nil)
end end
end end
end end

View file

@ -13,7 +13,7 @@ describe SpamRule::FlagSockpuppets do
SiteSetting.stubs(:flag_sockpuppets).returns(false) SiteSetting.stubs(:flag_sockpuppets).returns(false)
rule.expects(:reply_is_from_sockpuppet?).never rule.expects(:reply_is_from_sockpuppet?).never
rule.expects(:flag_sockpuppet_users).never rule.expects(:flag_sockpuppet_users).never
perform.should eq(false) expect(perform).to eq(false)
end end
context 'flag_sockpuppets is enabled' do context 'flag_sockpuppets is enabled' do
@ -22,91 +22,91 @@ describe SpamRule::FlagSockpuppets do
it 'flags posts when it should' do it 'flags posts when it should' do
rule.expects(:reply_is_from_sockpuppet?).returns(:true) rule.expects(:reply_is_from_sockpuppet?).returns(:true)
rule.expects(:flag_sockpuppet_users).once rule.expects(:flag_sockpuppet_users).once
perform.should eq(true) expect(perform).to eq(true)
end end
it "doesn't flag posts when it shouldn't" do it "doesn't flag posts when it shouldn't" do
rule.expects(:reply_is_from_sockpuppet?).returns(false) rule.expects(:reply_is_from_sockpuppet?).returns(false)
rule.expects(:flag_sockpuppet_users).never rule.expects(:flag_sockpuppet_users).never
perform.should eq(false) expect(perform).to eq(false)
end end
end end
end end
describe 'reply_is_from_sockpuppet?' do describe 'reply_is_from_sockpuppet?' do
it 'is false for the first post in a topic' do it 'is false for the first post in a topic' do
described_class.new(post1).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post1).reply_is_from_sockpuppet?).to eq(false)
end end
it 'is false if users have different IP addresses' do it 'is false if users have different IP addresses' do
post2 = Fabricate(:post, user: Fabricate(:user, ip_address: '182.189.199.199'), topic: post1.topic) post2 = Fabricate(:post, user: Fabricate(:user, ip_address: '182.189.199.199'), topic: post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(false)
end end
it 'is true if users have the same IP address and are new' do it 'is true if users have the same IP address and are new' do
post2 = Fabricate(:post, user: Fabricate(:user, ip_address: user1.ip_address), topic: post1.topic) post2 = Fabricate(:post, user: Fabricate(:user, ip_address: user1.ip_address), topic: post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(true) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(true)
end end
it 'is false if the ip address is whitelisted' do it 'is false if the ip address is whitelisted' do
ScreenedIpAddress.stubs(:is_whitelisted?).with(user1.ip_address).returns(true) ScreenedIpAddress.stubs(:is_whitelisted?).with(user1.ip_address).returns(true)
post2 = Fabricate(:post, user: Fabricate(:user, ip_address: user1.ip_address), topic: post1.topic) post2 = Fabricate(:post, user: Fabricate(:user, ip_address: user1.ip_address), topic: post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(false)
end end
it 'is false if reply and first post are from the same user' do it 'is false if reply and first post are from the same user' do
post2 = Fabricate(:post, user: user1, topic: post1.topic) post2 = Fabricate(:post, user: user1, topic: post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(false)
end end
it 'is false if first post user is staff' do it 'is false if first post user is staff' do
staff1 = Fabricate(:admin, ip_address: '182.189.119.174') staff1 = Fabricate(:admin, ip_address: '182.189.119.174')
staff_post1 = Fabricate(:post, user: staff1, topic: Fabricate(:topic, user: staff1)) staff_post1 = Fabricate(:post, user: staff1, topic: Fabricate(:topic, user: staff1))
post2 = Fabricate(:post, user: Fabricate(:user, ip_address: staff1.ip_address), topic: staff_post1.topic) post2 = Fabricate(:post, user: Fabricate(:user, ip_address: staff1.ip_address), topic: staff_post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(false)
end end
it 'is false if second post user is staff' do it 'is false if second post user is staff' do
post2 = Fabricate(:post, user: Fabricate(:moderator, ip_address: user1.ip_address), topic: post1.topic) post2 = Fabricate(:post, user: Fabricate(:moderator, ip_address: user1.ip_address), topic: post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(false)
end end
it 'is false if both users are staff' do it 'is false if both users are staff' do
staff1 = Fabricate(:moderator, ip_address: '182.189.119.174') staff1 = Fabricate(:moderator, ip_address: '182.189.119.174')
staff_post1 = Fabricate(:post, user: staff1, topic: Fabricate(:topic, user: staff1)) staff_post1 = Fabricate(:post, user: staff1, topic: Fabricate(:topic, user: staff1))
post2 = Fabricate(:post, user: Fabricate(:admin, ip_address: staff1.ip_address), topic: staff_post1.topic) post2 = Fabricate(:post, user: Fabricate(:admin, ip_address: staff1.ip_address), topic: staff_post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(false)
end end
it 'is true if first post user was created over 24 hours ago and has trust level higher than 0' do it 'is true if first post user was created over 24 hours ago and has trust level higher than 0' do
old_user = Fabricate(:user, ip_address: '182.189.119.174', created_at: 25.hours.ago, trust_level: TrustLevel[1]) old_user = Fabricate(:user, ip_address: '182.189.119.174', created_at: 25.hours.ago, trust_level: TrustLevel[1])
first_post = Fabricate(:post, user: old_user, topic: Fabricate(:topic, user: old_user)) first_post = Fabricate(:post, user: old_user, topic: Fabricate(:topic, user: old_user))
post2 = Fabricate(:post, user: Fabricate(:user, ip_address: old_user.ip_address), topic: first_post.topic) post2 = Fabricate(:post, user: Fabricate(:user, ip_address: old_user.ip_address), topic: first_post.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(true) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(true)
end end
it 'is false if second post user was created over 24 hours ago and has trust level higher than 0' do it 'is false if second post user was created over 24 hours ago and has trust level higher than 0' do
post2 = Fabricate(:post, user: Fabricate(:user, ip_address: user1.ip_address, created_at: 25.hours.ago, trust_level: TrustLevel[1]), topic: post1.topic) post2 = Fabricate(:post, user: Fabricate(:user, ip_address: user1.ip_address, created_at: 25.hours.ago, trust_level: TrustLevel[1]), topic: post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(false)
end end
it 'is true if first post user was created less that 24 hours ago and has trust level higher than 0' do it 'is true if first post user was created less that 24 hours ago and has trust level higher than 0' do
new_user = Fabricate(:user, ip_address: '182.189.119.174', created_at: 1.hour.ago, trust_level: TrustLevel[1]) new_user = Fabricate(:user, ip_address: '182.189.119.174', created_at: 1.hour.ago, trust_level: TrustLevel[1])
first_post = Fabricate(:post, user: new_user, topic: Fabricate(:topic, user: new_user)) first_post = Fabricate(:post, user: new_user, topic: Fabricate(:topic, user: new_user))
post2 = Fabricate(:post, user: Fabricate(:user, ip_address: new_user.ip_address), topic: first_post.topic) post2 = Fabricate(:post, user: Fabricate(:user, ip_address: new_user.ip_address), topic: first_post.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(true) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(true)
end end
it 'is true if second user was created less that 24 hours ago and has trust level higher than 0' do it 'is true if second user was created less that 24 hours ago and has trust level higher than 0' do
post2 = Fabricate(:post, user: Fabricate(:user, ip_address: user1.ip_address, created_at: 23.hours.ago, trust_level: TrustLevel[1]), topic: post1.topic) post2 = Fabricate(:post, user: Fabricate(:user, ip_address: user1.ip_address, created_at: 23.hours.ago, trust_level: TrustLevel[1]), topic: post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(true) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(true)
end end
# A weird case # A weird case
it 'is false when user is nil on first post' do it 'is false when user is nil on first post' do
post1.user = nil; post1.save! post1.user = nil; post1.save!
post2 = Fabricate(:post, user: Fabricate(:user), topic: post1.topic) post2 = Fabricate(:post, user: Fabricate(:user), topic: post1.topic)
described_class.new(post2).reply_is_from_sockpuppet?.should eq(false) expect(described_class.new(post2).reply_is_from_sockpuppet?).to eq(false)
end end
end end

View file

@ -44,7 +44,7 @@ describe GroupMessage do
before { GroupMessage.any_instance.stubs(:sent_recently?).returns(true) } before { GroupMessage.any_instance.stubs(:sent_recently?).returns(true) }
subject { GroupMessage.create(moderators_group, :user_automatically_blocked, {user: user}) } subject { GroupMessage.create(moderators_group, :user_automatically_blocked, {user: user}) }
it { should eq(false) } it { is_expected.to eq(false) }
it 'should not send the same notification again' do it 'should not send the same notification again' do
PostCreator.expects(:create).never PostCreator.expects(:create).never

View file

@ -15,29 +15,29 @@ describe PostAlerter do
post = Fabricate(:post, raw: '[quote="EvilTrout, post:1"]whatup[/quote]') post = Fabricate(:post, raw: '[quote="EvilTrout, post:1"]whatup[/quote]')
MutedUser.create!(user_id: evil_trout.id, muted_user_id: post.user_id) MutedUser.create!(user_id: evil_trout.id, muted_user_id: post.user_id)
lambda { expect {
PostAlerter.post_created(post) PostAlerter.post_created(post)
}.should change(evil_trout.notifications, :count).by(0) }.to change(evil_trout.notifications, :count).by(0)
end end
it 'notifies a user by username' do it 'notifies a user by username' do
lambda { expect {
create_post_with_alerts(raw: '[quote="EvilTrout, post:1"]whatup[/quote]') create_post_with_alerts(raw: '[quote="EvilTrout, post:1"]whatup[/quote]')
}.should change(evil_trout.notifications, :count).by(1) }.to change(evil_trout.notifications, :count).by(1)
end end
it "won't notify the user a second time on revision" do it "won't notify the user a second time on revision" do
p1 = create_post_with_alerts(raw: '[quote="Evil Trout, post:1"]whatup[/quote]') p1 = create_post_with_alerts(raw: '[quote="Evil Trout, post:1"]whatup[/quote]')
lambda { expect {
p1.revise(p1.user, { raw: '[quote="Evil Trout, post:1"]whatup now?[/quote]' }) p1.revise(p1.user, { raw: '[quote="Evil Trout, post:1"]whatup now?[/quote]' })
}.should_not change(evil_trout.notifications, :count) }.not_to change(evil_trout.notifications, :count)
end end
it "doesn't notify the poster" do it "doesn't notify the poster" do
topic = create_post_with_alerts.topic topic = create_post_with_alerts.topic
lambda { expect {
Fabricate(:post, topic: topic, user: topic.user, raw: '[quote="Bruce Wayne, post:1"]whatup[/quote]') Fabricate(:post, topic: topic, user: topic.user, raw: '[quote="Bruce Wayne, post:1"]whatup[/quote]')
}.should_not change(topic.user.notifications, :count) }.not_to change(topic.user.notifications, :count)
end end
end end
@ -47,16 +47,16 @@ describe PostAlerter do
user = post1.user user = post1.user
create_post(raw: "my magic topic\n##{Discourse.base_url}#{post1.url}") create_post(raw: "my magic topic\n##{Discourse.base_url}#{post1.url}")
user.notifications.count.should == 1 expect(user.notifications.count).to eq(1)
create_post(user: user, raw: "my magic topic\n##{Discourse.base_url}#{post1.url}") create_post(user: user, raw: "my magic topic\n##{Discourse.base_url}#{post1.url}")
user.reload user.reload
user.notifications.count.should == 1 expect(user.notifications.count).to eq(1)
# don't notify on reflection # don't notify on reflection
post1.reload post1.reload
PostAlerter.new.extract_linked_users(post1).length.should == 0 expect(PostAlerter.new.extract_linked_users(post1).length).to eq(0)
end end
end end
@ -68,24 +68,24 @@ describe PostAlerter do
let(:topic) { mention_post.topic } let(:topic) { mention_post.topic }
it 'notifies a user' do it 'notifies a user' do
lambda { expect {
mention_post mention_post
}.should change(evil_trout.notifications, :count).by(1) }.to change(evil_trout.notifications, :count).by(1)
end end
it "won't notify the user a second time on revision" do it "won't notify the user a second time on revision" do
mention_post mention_post
lambda { expect {
mention_post.revise(mention_post.user, { raw: "New raw content that still mentions @eviltrout" }) mention_post.revise(mention_post.user, { raw: "New raw content that still mentions @eviltrout" })
}.should_not change(evil_trout.notifications, :count) }.not_to change(evil_trout.notifications, :count)
end end
it "doesn't notify the user who created the topic in regular mode" do it "doesn't notify the user who created the topic in regular mode" do
topic.notify_regular!(user) topic.notify_regular!(user)
mention_post mention_post
lambda { expect {
create_post_with_alerts(user: user, raw: 'second post', topic: topic) create_post_with_alerts(user: user, raw: 'second post', topic: topic)
}.should_not change(user.notifications, :count) }.not_to change(user.notifications, :count)
end end
end end

View file

@ -60,33 +60,33 @@ describe PostOwnerChanger do
change_owners change_owners
p1user.reload; p2user.reload; user_a.reload p1user.reload; p2user.reload; user_a.reload
p1user.topic_count.should == 0 expect(p1user.topic_count).to eq(0)
p1user.post_count.should == 0 expect(p1user.post_count).to eq(0)
p2user.topic_count.should == 0 expect(p2user.topic_count).to eq(0)
p2user.post_count.should == 0 expect(p2user.post_count).to eq(0)
user_a.topic_count.should == 1 expect(user_a.topic_count).to eq(1)
user_a.post_count.should == 2 expect(user_a.post_count).to eq(2)
p1user.user_stat.first_post_created_at.should == nil expect(p1user.user_stat.first_post_created_at).to eq(nil)
p2user.user_stat.first_post_created_at.should == nil expect(p2user.user_stat.first_post_created_at).to eq(nil)
p1user.user_stat.topic_reply_count.should == 0 expect(p1user.user_stat.topic_reply_count).to eq(0)
p2user.user_stat.topic_reply_count.should == 0 expect(p2user.user_stat.topic_reply_count).to eq(0)
user_a.user_stat.first_post_created_at.should be_present expect(user_a.user_stat.first_post_created_at).to be_present
end end
it "updates UserAction records" do it "updates UserAction records" do
g = Guardian.new(editor) g = Guardian.new(editor)
UserAction.stats(user_a.id, g).should == [] expect(UserAction.stats(user_a.id, g)).to eq([])
change_owners change_owners
UserAction.stats(p1user.id, g).should == [] expect(UserAction.stats(p1user.id, g)).to eq([])
UserAction.stats(p2user.id, g).should == [] expect(UserAction.stats(p2user.id, g)).to eq([])
stats = UserAction.stats(user_a.id, g) stats = UserAction.stats(user_a.id, g)
stats.size.should == 2 expect(stats.size).to eq(2)
stats[0].action_type.should == UserAction::NEW_TOPIC expect(stats[0].action_type).to eq(UserAction::NEW_TOPIC)
stats[0].count.should == 1 expect(stats[0].count).to eq(1)
stats[1].action_type.should == UserAction::REPLY expect(stats[1].action_type).to eq(UserAction::REPLY)
stats[1].count.should == 1 expect(stats[1].count).to eq(1)
end end
end end
end end

View file

@ -11,8 +11,8 @@ describe RandomTopicSelector do
$redis.rpush key, t $redis.rpush key, t
end end
RandomTopicSelector.next(2).should == [0,1] expect(RandomTopicSelector.next(2)).to eq([0,1])
RandomTopicSelector.next(2).should == [2,3] expect(RandomTopicSelector.next(2)).to eq([2,3])
end end
it 'can correctly backfill' do it 'can correctly backfill' do
@ -22,6 +22,6 @@ describe RandomTopicSelector do
_t3 = Fabricate(:topic, category_id: category.id, deleted_at: 1.minute.ago) _t3 = Fabricate(:topic, category_id: category.id, deleted_at: 1.minute.ago)
t4 = Fabricate(:topic, category_id: category.id) t4 = Fabricate(:topic, category_id: category.id)
RandomTopicSelector.next(5, category).sort.should == [t1.id,t4.id].sort expect(RandomTopicSelector.next(5, category).sort).to eq([t1.id,t4.id].sort)
end end
end end

View file

@ -35,15 +35,15 @@ describe StaffActionLogger do
describe "log_show_emails" do describe "log_show_emails" do
it "logs the user history" do it "logs the user history" do
-> { logger.log_show_emails([admin]) }.should change(UserHistory, :count).by(1) expect { logger.log_show_emails([admin]) }.to change(UserHistory, :count).by(1)
end end
it "doesn't raise an exception with nothing to log" do it "doesn't raise an exception with nothing to log" do
-> { logger.log_show_emails([]) }.should_not raise_error expect { logger.log_show_emails([]) }.not_to raise_error
end end
it "doesn't raise an exception with nil input" do it "doesn't raise an exception with nil input" do
-> { logger.log_show_emails(nil) }.should_not raise_error expect { logger.log_show_emails(nil) }.not_to raise_error
end end
end end
@ -107,7 +107,7 @@ describe StaffActionLogger do
it 'creates a new UserHistory record' do it 'creates a new UserHistory record' do
expect { log_trust_level_change }.to change { UserHistory.count }.by(1) expect { log_trust_level_change }.to change { UserHistory.count }.by(1)
UserHistory.last.details.should include "new trust level: #{new_trust_level}" expect(UserHistory.last.details).to include "new trust level: #{new_trust_level}"
end end
end end
@ -132,21 +132,21 @@ describe StaffActionLogger do
it "logs new site customizations" do it "logs new site customizations" do
log_record = logger.log_site_customization_change(nil, valid_params) log_record = logger.log_site_customization_change(nil, valid_params)
log_record.subject.should == valid_params[:name] expect(log_record.subject).to eq(valid_params[:name])
log_record.previous_value.should == nil expect(log_record.previous_value).to eq(nil)
log_record.new_value.should be_present expect(log_record.new_value).to be_present
json = ::JSON.parse(log_record.new_value) json = ::JSON.parse(log_record.new_value)
json['stylesheet'].should be_present expect(json['stylesheet']).to be_present
json['header'].should be_present expect(json['header']).to be_present
end end
it "logs updated site customizations" do it "logs updated site customizations" do
existing = SiteCustomization.new(name: 'Banana', stylesheet: "body {color: yellow;}", header: "h1 {color: brown;}") existing = SiteCustomization.new(name: 'Banana', stylesheet: "body {color: yellow;}", header: "h1 {color: brown;}")
log_record = logger.log_site_customization_change(existing, valid_params) log_record = logger.log_site_customization_change(existing, valid_params)
log_record.previous_value.should be_present expect(log_record.previous_value).to be_present
json = ::JSON.parse(log_record.previous_value) json = ::JSON.parse(log_record.previous_value)
json['stylesheet'].should == existing.stylesheet expect(json['stylesheet']).to eq(existing.stylesheet)
json['header'].should == existing.header expect(json['header']).to eq(existing.header)
end end
end end
@ -158,11 +158,11 @@ describe StaffActionLogger do
it "creates a new UserHistory record" do it "creates a new UserHistory record" do
site_customization = SiteCustomization.new(name: 'Banana', stylesheet: "body {color: yellow;}", header: "h1 {color: brown;}") site_customization = SiteCustomization.new(name: 'Banana', stylesheet: "body {color: yellow;}", header: "h1 {color: brown;}")
log_record = logger.log_site_customization_destroy(site_customization) log_record = logger.log_site_customization_destroy(site_customization)
log_record.previous_value.should be_present expect(log_record.previous_value).to be_present
log_record.new_value.should == nil expect(log_record.new_value).to eq(nil)
json = ::JSON.parse(log_record.previous_value) json = ::JSON.parse(log_record.previous_value)
json['stylesheet'].should == site_customization.stylesheet expect(json['stylesheet']).to eq(site_customization.stylesheet)
json['header'].should == site_customization.header expect(json['header']).to eq(site_customization.header)
end end
end end
@ -181,9 +181,9 @@ describe StaffActionLogger do
it "creates a new UserHistory record" do it "creates a new UserHistory record" do
reason = "He was a big meanie." reason = "He was a big meanie."
log_record = logger.log_user_suspend(user, reason) log_record = logger.log_user_suspend(user, reason)
log_record.should be_valid expect(log_record).to be_valid
log_record.details.should == reason expect(log_record.details).to eq(reason)
log_record.target_user.should == user expect(log_record.target_user).to eq(user)
end end
end end
@ -196,8 +196,8 @@ describe StaffActionLogger do
it "creates a new UserHistory record" do it "creates a new UserHistory record" do
log_record = logger.log_user_unsuspend(user) log_record = logger.log_user_unsuspend(user)
log_record.should be_valid expect(log_record).to be_valid
log_record.target_user.should == user expect(log_record.target_user).to eq(user)
end end
end end
@ -212,9 +212,9 @@ describe StaffActionLogger do
it "creates a new UserHistory record" do it "creates a new UserHistory record" do
log_record = logger.log_badge_grant(user_badge) log_record = logger.log_badge_grant(user_badge)
log_record.should be_valid expect(log_record).to be_valid
log_record.target_user.should == user expect(log_record.target_user).to eq(user)
log_record.details.should == badge.name expect(log_record.details).to eq(badge.name)
end end
end end
@ -229,9 +229,9 @@ describe StaffActionLogger do
it "creates a new UserHistory record" do it "creates a new UserHistory record" do
log_record = logger.log_badge_revoke(user_badge) log_record = logger.log_badge_revoke(user_badge)
log_record.should be_valid expect(log_record).to be_valid
log_record.target_user.should == user expect(log_record.target_user).to eq(user)
log_record.details.should == badge.name expect(log_record.details).to eq(badge.name)
end end
end end
@ -241,8 +241,8 @@ describe StaffActionLogger do
it 'creates a new UserHistory record' do it 'creates a new UserHistory record' do
log_record = logger.log_roll_up(subnets) log_record = logger.log_roll_up(subnets)
log_record.should be_valid expect(log_record).to be_valid
log_record.details.should == subnets.join(", ") expect(log_record.details).to eq(subnets.join(", "))
end end
end end
@ -257,11 +257,11 @@ describe StaffActionLogger do
clicked_on: 'thing', clicked_on: 'thing',
topic_id: 1234 topic_id: 1234
}) })
logged.should be_valid expect(logged).to be_valid
logged.details.should == "evil: trout\nclicked_on: thing" expect(logged.details).to eq("evil: trout\nclicked_on: thing")
logged.action.should == UserHistory.actions[:custom_staff] expect(logged.action).to eq(UserHistory.actions[:custom_staff])
logged.custom_type.should == 'clicked_something' expect(logged.custom_type).to eq('clicked_something')
logged.topic_id.should === 1234 expect(logged.topic_id).to be === 1234
end end
end end
end end

View file

@ -10,22 +10,22 @@ describe UserAnonymizer do
it "changes username" do it "changes username" do
make_anonymous make_anonymous
user.reload.username.should =~ /^anon\d{3,}$/ expect(user.reload.username).to match(/^anon\d{3,}$/)
end end
it "changes email address" do it "changes email address" do
make_anonymous make_anonymous
user.reload.email.should == "#{user.username}@example.com" expect(user.reload.email).to eq("#{user.username}@example.com")
end end
it "turns off all notifications" do it "turns off all notifications" do
make_anonymous make_anonymous
user.reload user.reload
user.email_digests.should == false expect(user.email_digests).to eq(false)
user.email_private_messages.should == false expect(user.email_private_messages).to eq(false)
user.email_direct.should == false expect(user.email_direct).to eq(false)
user.email_always.should == false expect(user.email_always).to eq(false)
user.mailing_list_mode.should == false expect(user.mailing_list_mode).to eq(false)
end end
it "resets profile to default values" do it "resets profile to default values" do
@ -42,17 +42,17 @@ describe UserAnonymizer do
make_anonymous make_anonymous
user.reload user.reload
user.name.should_not be_present expect(user.name).not_to be_present
user.date_of_birth.should == nil expect(user.date_of_birth).to eq(nil)
user.title.should_not be_present expect(user.title).not_to be_present
profile = user.user_profile(true) profile = user.user_profile(true)
profile.location.should == nil expect(profile.location).to eq(nil)
profile.website.should == nil expect(profile.website).to eq(nil)
profile.bio_cooked.should == nil expect(profile.bio_cooked).to eq(nil)
profile.profile_background.should == nil expect(profile.profile_background).to eq(nil)
profile.bio_cooked_version.should == nil expect(profile.bio_cooked_version).to eq(nil)
profile.card_background.should == nil expect(profile.card_background).to eq(nil)
end end
it "removes the avatar" do it "removes the avatar" do
@ -61,7 +61,7 @@ describe UserAnonymizer do
user.save! user.save!
expect { make_anonymous }.to change { Upload.count }.by(-1) expect { make_anonymous }.to change { Upload.count }.by(-1)
user.reload user.reload
user.user_avatar.should == nil expect(user.user_avatar).to eq(nil)
end end
it "logs the action" do it "logs the action" do
@ -78,20 +78,20 @@ describe UserAnonymizer do
UserOpenId.create(user_id: user.id, email: user.email, url: "http://example.com/openid", active: true) UserOpenId.create(user_id: user.id, email: user.email, url: "http://example.com/openid", active: true)
make_anonymous make_anonymous
user.reload user.reload
user.twitter_user_info.should == nil expect(user.twitter_user_info).to eq(nil)
user.google_user_info.should == nil expect(user.google_user_info).to eq(nil)
user.github_user_info.should == nil expect(user.github_user_info).to eq(nil)
user.facebook_user_info.should == nil expect(user.facebook_user_info).to eq(nil)
user.single_sign_on_record.should == nil expect(user.single_sign_on_record).to eq(nil)
user.oauth2_user_info.should == nil expect(user.oauth2_user_info).to eq(nil)
user.user_open_ids.count.should == 0 expect(user.user_open_ids.count).to eq(0)
end end
it "removes api key" do it "removes api key" do
ApiKey.create(user_id: user.id, key: "123123123") ApiKey.create(user_id: user.id, key: "123123123")
expect { make_anonymous }.to change { ApiKey.count }.by(-1) expect { make_anonymous }.to change { ApiKey.count }.by(-1)
user.reload user.reload
user.api_key.should == nil expect(user.api_key).to eq(nil)
end end
end end

View file

@ -58,7 +58,7 @@ describe UserBlocker do
user.stubs(:blocked?).returns(true) user.stubs(:blocked?).returns(true)
SystemMessage.unstub(:create) SystemMessage.unstub(:create)
SystemMessage.expects(:create).never SystemMessage.expects(:create).never
block_user.should == false expect(block_user).to eq(false)
end end
end end

View file

@ -42,8 +42,8 @@ describe UserDestroyer do
it 'should return the deleted user record' do it 'should return the deleted user record' do
return_value = destroy return_value = destroy
return_value.should == @user expect(return_value).to eq(@user)
return_value.should be_destroyed expect(return_value).to be_destroyed
end end
it 'should log the action' do it 'should log the action' do
@ -123,22 +123,22 @@ describe UserDestroyer do
it "deletes the posts" do it "deletes the posts" do
destroy destroy
post.reload.deleted_at.should_not == nil expect(post.reload.deleted_at).not_to eq(nil)
post.user_id.should == nil expect(post.user_id).to eq(nil)
end end
it "does not delete topics started by others in which the user has replies" do it "does not delete topics started by others in which the user has replies" do
destroy destroy
topic.reload.deleted_at.should == nil expect(topic.reload.deleted_at).to eq(nil)
topic.user_id.should_not == nil expect(topic.user_id).not_to eq(nil)
end end
it "deletes topics started by the deleted user" do it "deletes topics started by the deleted user" do
spammer_topic = Fabricate(:topic, user: @user) spammer_topic = Fabricate(:topic, user: @user)
spammer_post = Fabricate(:post, user: @user, topic: spammer_topic) spammer_post = Fabricate(:post, user: @user, topic: spammer_topic)
destroy destroy
spammer_topic.reload.deleted_at.should_not == nil expect(spammer_topic.reload.deleted_at).not_to eq(nil)
spammer_topic.user_id.should == nil expect(spammer_topic.user_id).to eq(nil)
end end
context "delete_as_spammer is true" do context "delete_as_spammer is true" do
@ -148,12 +148,12 @@ describe UserDestroyer do
it "agrees with flags on user's posts" do it "agrees with flags on user's posts" do
spammer_post = Fabricate(:post, user: @user) spammer_post = Fabricate(:post, user: @user)
flag = PostAction.act(@admin, spammer_post, PostActionType.types[:inappropriate]) flag = PostAction.act(@admin, spammer_post, PostActionType.types[:inappropriate])
flag.agreed_at.should == nil expect(flag.agreed_at).to eq(nil)
destroy destroy
flag.reload flag.reload
flag.agreed_at.should_not == nil expect(flag.agreed_at).not_to eq(nil)
end end
end end
@ -167,8 +167,8 @@ describe UserDestroyer do
it "deletes the posts" do it "deletes the posts" do
destroy destroy
post.reload.deleted_at.should_not == nil expect(post.reload.deleted_at).not_to eq(nil)
post.user_id.should == nil expect(post.user_id).to eq(nil)
end end
end end
end end
@ -188,7 +188,7 @@ describe UserDestroyer do
let!(:deleted_post) { Fabricate(:post, user: @user, deleted_at: 1.hour.ago) } let!(:deleted_post) { Fabricate(:post, user: @user, deleted_at: 1.hour.ago) }
it "should mark the user's deleted posts as belonging to a nuked user" do it "should mark the user's deleted posts as belonging to a nuked user" do
expect { UserDestroyer.new(@admin).destroy(@user) }.to change { User.count }.by(-1) expect { UserDestroyer.new(@admin).destroy(@user) }.to change { User.count }.by(-1)
deleted_post.reload.user_id.should == nil expect(deleted_post.reload.user_id).to eq(nil)
end end
end end
@ -209,7 +209,7 @@ describe UserDestroyer do
end end
it 'should return false' do it 'should return false' do
destroy.should == false expect(destroy).to eq(false)
end end
it 'should not log the action' do it 'should not log the action' do
@ -289,9 +289,9 @@ describe UserDestroyer do
it "assigns the system user to the categories" do it "assigns the system user to the categories" do
UserDestroyer.new(@admin).destroy(@user, {delete_posts: true}) UserDestroyer.new(@admin).destroy(@user, {delete_posts: true})
category.reload.user_id.should == Discourse.system_user.id expect(category.reload.user_id).to eq(Discourse.system_user.id)
category.topic.should be_present expect(category.topic).to be_present
category.topic.user_id.should == Discourse.system_user.id expect(category.topic.user_id).to eq(Discourse.system_user.id)
end end
end end
@ -317,7 +317,7 @@ describe UserDestroyer do
expect { expect {
UserDestroyer.new(@admin).destroy(@user, {delete_posts: true}) UserDestroyer.new(@admin).destroy(@user, {delete_posts: true})
}.to change { PostAction.count }.by(-1) }.to change { PostAction.count }.by(-1)
@post.reload.like_count.should == 0 expect(@post.reload.like_count).to eq(0)
end end
end end
end end

View file

@ -125,7 +125,7 @@ describe UserUpdater do
updater = described_class.new(acting_user, user) updater = described_class.new(acting_user, user)
updater.update(website: 'example.com', custom_fields: '') updater.update(website: 'example.com', custom_fields: '')
user.reload.custom_fields.should == {'import_username' => 'my_old_username'} expect(user.reload.custom_fields).to eq({'import_username' => 'my_old_username'})
end end
end end
end end

View file

@ -35,14 +35,14 @@ describe UsernameCheckerService do
User.stubs(:username_available?).returns(false) User.stubs(:username_available?).returns(false)
UserNameSuggester.stubs(:suggest).returns('einar-j') UserNameSuggester.stubs(:suggest).returns('einar-j')
result = @service.check_username('vincent', @nil_email) result = @service.check_username('vincent', @nil_email)
result[:available].should == false expect(result[:available]).to eq(false)
result[:suggestion].should eq('einar-j') expect(result[:suggestion]).to eq('einar-j')
end end
it 'username available locally' do it 'username available locally' do
User.stubs(:username_available?).returns(true) User.stubs(:username_available?).returns(true)
result = @service.check_username('vincent', @nil_email) result = @service.check_username('vincent', @nil_email)
result[:available].should == true expect(result[:available]).to eq(true)
end end
end end

View file

@ -61,7 +61,7 @@ module Helpers
sleep 0.001 sleep 0.001
end end
result.should == true expect(result).to eq(true)
end end
end end

View file

@ -2,7 +2,7 @@ shared_examples_for "a versioned model" do
let(:model) { Fabricate(described_class.to_s.downcase) } let(:model) { Fabricate(described_class.to_s.downcase) }
it 'should be versioned' do it 'should be versioned' do
model.should respond_to(:version) expect(model).to respond_to(:version)
model.version.should == 1 expect(model.version).to eq(1)
end end
end end