From 9691ba81a0a6d099b6e3ad5a8cd13425c1e94eb6 Mon Sep 17 00:00:00 2001 From: Washington Botelho Date: Wed, 18 May 2022 11:15:20 -0300 Subject: [PATCH] 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. --- spec/models/rating/averager_data_spec.rb | 8 +++++++- spec/models/rating/data_spec.rb | 8 +++++++- spec/models/rating/update_rating_spec.rb | 16 ++++++++++++---- spec/support/database.rb | 2 +- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/spec/models/rating/averager_data_spec.rb b/spec/models/rating/averager_data_spec.rb index a962769..1e7ca27 100644 --- a/spec/models/rating/averager_data_spec.rb +++ b/spec/models/rating/averager_data_spec.rb @@ -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 - expect(result.count_avg).to eq(BigDecimal('1.333333333333333333')) + 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 diff --git a/spec/models/rating/data_spec.rb b/spec/models/rating/data_spec.rb index d870424..adfa826 100644 --- a/spec/models/rating/data_spec.rb +++ b/spec/models/rating/data_spec.rb @@ -21,7 +21,13 @@ RSpec.describe Rating::Rating, ':data' do end it 'returns the estimate for a resource' do - expect(result[:estimate]).to eq(BigDecimal('42.5000000000000000012000000505')) + 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 diff --git a/spec/models/rating/update_rating_spec.rb b/spec/models/rating/update_rating_spec.rb index 319f3f1..0afddca 100644 --- a/spec/models/rating/update_rating_spec.rb +++ b/spec/models/rating/update_rating_spec.rb @@ -9,10 +9,18 @@ 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) - expect(record.average).to eq(BigDecimal('50.5')) - expect(record.estimate).to eq(BigDecimal('42.5')) - expect(record.sum).to be(101) - expect(record.total).to be(2) + 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 end diff --git a/spec/support/database.rb b/spec/support/database.rb index ea50d67..9a38ec8 100644 --- a/spec/support/database.rb +++ b/spec/support/database.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -ENV['DB'] ||= 'mysql' +ENV['DB'] ||= 'postgres' conn_params = { database: :rating_test, host: '127.0.0.1' }