Test actions wrapped in transaction with Hanami
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
Línea de trabajo
Comienza con los ejemplos de RSpec que fallan y la configuración before/after de DatabaseCleaner mostrada; verifica cómo interactúa la transacción del repositorio con la transacción del cleaner y con el estado abortado de PostgreSQL. Se considera terminado cuando tanto los ejemplos duplicate-email como duplicate-note se ejecutan de forma independiente sin PG::InFailedSqlTransaction y conservan sus aserciones de excepción esperadas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Ruby
- Estrellas
- 76
- Forks
- 76
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de DatabaseCleaner/database_cleaner-active_record
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
DatabaseCleaner/database_cleaner-active_record#128 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
DatabaseCleaner/database_cleaner-active_record#127 · 3 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
-
Parallelized truncatesAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de DatabaseCleaner/database_cleaner-active_record
Issues similares
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
jetrockets/jet_ui#47 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
FreeCAD/homebrew-freecad#870 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Messages with a markdown image that has a relative or malformed URL throw TypeError: Invalid URLAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día