Skip to content

Instantly share code, notes, and snippets.

@valterbarros
Created May 6, 2019 19:30
Show Gist options
  • Save valterbarros/8866fd885dc8302b890b35a555cd64aa to your computer and use it in GitHub Desktop.
Save valterbarros/8866fd885dc8302b890b35a555cd64aa to your computer and use it in GitHub Desktop.
# https://stackoverflow.com/questions/28670159/rspec-factory-girl-without-rails
# https://stackoverflow.com/questions/3661546/how-to-require-active-record-working-outside-of-rails
# https://stackoverflow.com/questions/1755665/get-names-of-all-files-from-a-folder-with-ruby
require 'active_record'
require 'pg'
ActiveRecord::Base.establish_connection(
adapter: 'postgresql',
database: 'stant_test',
username: 'stant',
password: 'stant',
host: 'localhost'
)
Dir['./app/models/*/**.rb'].each do |file|
require file
end
require './app/models/application_record'
require './app/models/concerns/by_company'
require './app/models/user'
require './app/models/sync_error'
require './app/repositories/searchable'
require './app/repositories/sync_errors/finder'
require 'factory_bot'
require './spec/factories/users'
require './spec/support/factory_bot'
require './spec/factories/sync_errors'
describe Repositories::SyncErrors::Finder, '#filter_paginate', type: %i[repository sync_error], slow: true do
subject { described_class.new SyncError }
let(:company_01) { create :empresa }
let(:company_02) { create :empresa }
let(:sync_error_01) { create :sync_error }
let(:sync_error_02) { create(:sync_error, company: company_02) }
let(:sync_error_03) { create(:sync_error, class_name: 'InspectionData') }
let(:params) {}
let(:options) {}
let(:setup) do
sync_error_01
sync_error_02
sync_error_03
end
let(:result) { subject.filter_paginate(params, options) }
before do
setup
result
end
context 'When have 3 sync_errors' do
context 'When params is blank' do
it 'return 3 sync_errors' do
expect(result).to match_array [sync_error_01, sync_error_02, sync_error_03]
end
end
context 'Whem filter by class_name' do
let(:params) { { class_name: 'InspectionData' } }
it 'return sync_error03' do
expect(result.first.id).to eq sync_error_03.id
end
end
context 'When filter by company_id' do
let(:params) { { company_id: company_02.id } }
it { expect(result.first.id).to eq sync_error_02.id }
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment