This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Poor specs | |
# ========== | |
# Customer relation is irrelevant in this case. Same as each order's subject. | |
# `match_array` expectation verifies count implicitly, so additional check seems obsolete. | |
describe MostProfitableOrdersQuery do | |
describe '.call' do | |
it 'returns top 50% orders with the biggest total value' do | |
customer = create(:customer, name: 'Tony stark') | |
create(:order, customer: customer, subject: 'Iron armor', total_value: 1000) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Feature specs are used to test validation and authorization details, when those | |
# should be handled in faster, lower level specs (i.e. model & controller specs) | |
RSpec.describe 'Properties management', type: :feature do | |
scenario 'Admin creates a property' | |
scenario 'Admin attempts to create a property with missing name' | |
scenario 'Admin attempts to create a property with name which is too short' | |
scenario 'Admin attempts to create a property with duplicate name' | |
scenario 'Guest attempts to create a property' | |
scenario 'Regular user attempts to create a property' | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class OMDBClient | |
HOST_URL = 'www.omdbapi.com' | |
# http://www.omdbapi.com/ | |
def get_movie(args = {}) | |
uri = URI::HTTP.build( | |
host: HOST_URL, | |
query: { | |
apikey: ENV.fetch('OMDB_API_KEY') | |
}.merge(args).to_query |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
expect(result).to match_array( | |
[ | |
be_a_kind_of(User::Member).and(have_attributes(name: ‘Tony’)), | |
be_a_kind_of(User::Admin).and(have_attributes(name: ‘Mike’)) | |
] | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
allow(UserNotifier).to receive(:deletion_notification) | |
DestroyUser.call(user) | |
expect(UserNotifier).to have_received(:deletion_notification).with(user, delay: 5.minutes) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
allow(OMDBClient).to receive(:get_movie) { | |
{ | |
"Title" => "The Rock", | |
"Year" => "1996", | |
"Rated" => "R", | |
"Released" => "07 Jun 1996", | |
"Runtime" => "136 min", | |
"Genre" => "Action, Adventure, Thriller" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
expect(OMDBClient).to receive(:get_movie).with(t: 'The Rock') { | |
{ | |
"Title" => "The Rock", | |
"Year" => "1996", | |
"Rated" => "R", | |
"Released" => "07 Jun 1996", | |
"Runtime" => "136 min", | |
"Genre" => "Action, Adventure, Thriller" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
it 'returns accounts expired in last week' do | |
create(:account, expiry_date: 1.day.from_now) | |
create(:account, expiry_date: Date.current) | |
account_1 = create(:account, expiry_date: 1.day.ago) | |
account_2 = create(:account, expiry_date: 7.days.ago) | |
create(:account, expiry_date: 8.days.ago) | |
result = RecentlyExpiredAccountsQuery.call | |
expect(result).to match_array([account_1, account_2]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
it 'returns accounts expired in last week' do | |
account_1 = create(:account, expiry_date: 1.day.ago) | |
account_2 = create(:account, expiry_date: 7.days.ago) | |
result = RecentlyExpiredAccountsQuery.call | |
expect(result).to match_array([account_1, account_2]) | |
end | |
it 'does not return accounts expiring in the future' do |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
it 'returns users with member privileges only' do | |
member_privilege = create(:privilege, :member) | |
admin_privilege = create(:privilege, :member) | |
member = create(:user) | |
admin = create(:user) | |
member_and_admin = create(:user) | |
create(:access_rule, user: member, privilege: member_privilege) | |
create(:access_rule, user: admin, privilege: admin_privilege) | |
create(:access_rule, user: member_and_admin, privilege: member_privilege) | |
create(:access_rule, user: member_and_admin, privilege: admin_privilege) |