Test actions wrapped in transaction with Hanami
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
Direzione di ricerca
Inizia con gli esempi RSpec che falliscono e con la configurazione before/after di DatabaseCleaner mostrata; verifica come la transazione del repository interagisce con la transazione del cleaner e con lo stato interrotto di PostgreSQL. Il lavoro è completato quando sia gli esempi duplicate-email sia quelli duplicate-note vengono eseguiti indipendentemente senza PG::InFailedSqlTransaction, mantenendo le rispettive asserzioni sulle eccezioni attese.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi,
I am using the hanami framework and the rspec lib to test my code and PG database. When I trying to test one action I get following error:
PG::InFailedSqlTransaction: ERROR: current transaction is aborted, commands ignored until end of transaction block
My action has been wrapped in repository transaction:
def call(params, dependencies)
begin
dependencies.repository.transaction do
create_user(params, dependencies)
assign_tags(params, dependencies)
assign_notes(params, dependencies)
end
rescue Hanami::Model::Error, Domain::Errors::Exception => error
raise Domain::Errors::CreateUserFailed, error.message
end
end
Here you can see part of my test which are failing:
it 'should raise exception if params contains duplicated email' do
expect{service.call(duplicated_email)}
.to raise_exception(Domain::Errors::CreateUserFailed)
.with_message('Duplicated values found (id or
email)')
end
it 'should raise exception if params contains duplicated note id' do
expect{service.call(duplicated_note_id)}
.to raise_exception(Domain::Errors::CreateUserFailed)
end
First test pass but the second one raises exception I mentioned earlier. I know this is caused that previous test raised exception in transaction block. I tried to configure DB cleaner to fix this but without success.
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.clean_with :deletion
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
- Lingua principale
- Ruby
- Stelle
- 76
- Fork
- 76
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di DatabaseCleaner/database_cleaner-active_record
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
DatabaseCleaner/database_cleaner-active_record#128 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
DatabaseCleaner/database_cleaner-active_record#127 · 3 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
-
Parallelized truncatesAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di DatabaseCleaner/database_cleaner-active_record
Issue simili
-
security
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
IBM/aspera-cli#265 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
I maintainer di solito rispondono entro 3 giorni
-
[Bug]: QR Code do Evolution Go não aparece no CRM com Evolution Go 0.7.2 (campos em minúsculo)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
evolution-foundation/evo-ai-crm-community#423 ·
I maintainer di solito rispondono entro 1 giorno