Test actions wrapped in transaction with Hanami
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
Piste de recherche
Commencez par les exemples RSpec en échec et la configuration before/after de DatabaseCleaner présentée ; vérifiez comment la transaction du dépôt interagit avec la transaction du cleaner et avec l’état avorté de PostgreSQL. Le travail est terminé lorsque les exemples duplicate-email et duplicate-note s’exécutent indépendamment sans PG::InFailedSqlTransaction tout en conservant leurs assertions d’exception attendues.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
- Langage dominant
- Ruby
- Étoiles
- 76
- Forks
- 76
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de DatabaseCleaner/database_cleaner-active_record
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
DatabaseCleaner/database_cleaner-active_record#128 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
DatabaseCleaner/database_cleaner-active_record#127 · 3 commentaires ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
-
Parallelized truncatesOuverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
Toutes les issues de DatabaseCleaner/database_cleaner-active_record
Issues similaires
-
security
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
IBM/aspera-cli#265 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
Les mainteneurs répondent en général sous 7 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
Les mainteneurs répondent en général sous 3 jours
-
[Bug]: QR Code do Evolution Go não aparece no CRM com Evolution Go 0.7.2 (campos em minúsculo)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
evolution-foundation/evo-ai-crm-community#423 ·
Les mainteneurs répondent en général sous 1 jour