spc: uses conditional assert

For some reason that I don't know, the MySQL and Postgres has different precision to keep the decimal, so instead to match the exactly number, we're justing checking the Rating logic without worry with that precision.
main
Washington Botelho 2022-05-18 11:15:20 -03:00
parent 06b2caaa4b
commit 9691ba81a0
4 changed files with 27 additions and 7 deletions

View File

@ -13,7 +13,13 @@ RSpec.describe Rating::Rating, ':averager_data' do
end
it 'returns the average of number of records for the given resource type' do
if ENV.fetch('DB') == 'mysql'
expect(result.count_avg).to eq(BigDecimal('1.333333333333333333'))
elsif ENV.fetch('DB') == 'postgres'
expect(result.count_avg).to eq(BigDecimal('1.3333333333333333'))
else
raise('DB env missing!')
end
end
end

View File

@ -21,7 +21,13 @@ RSpec.describe Rating::Rating, ':data' do
end
it 'returns the estimate for a resource' do
if ENV.fetch('DB') == 'mysql'
expect(result[:estimate]).to eq(BigDecimal('42.5000000000000000012000000505'))
elsif ENV.fetch('DB') == 'postgres'
expect(result[:estimate]).to eq(BigDecimal('42.5000000000000001200000000000000012505'))
else
raise('DB env missing!')
end
end
end

View File

@ -9,8 +9,16 @@ RSpec.describe Rating::Rating, ':update_rating' do
it 'updates the rating data of the given resource' do
record = described_class.find_by(resource: article_1)
if ENV.fetch('DB') == 'mysql'
expect(record.average).to eq(BigDecimal('50.5'))
expect(record.estimate).to eq(BigDecimal('42.5'))
elsif ENV.fetch('DB') == 'postgres'
expect(record.average).to eq(BigDecimal('50.5'))
expect(record.estimate).to eq(BigDecimal('42.5000000000000001'))
else
raise('DB env missing!')
end
expect(record.sum).to be(101)
expect(record.total).to be(2)
end

View File

@ -1,6 +1,6 @@
# frozen_string_literal: true
ENV['DB'] ||= 'mysql'
ENV['DB'] ||= 'postgres'
conn_params = { database: :rating_test, host: '127.0.0.1' }