Testes de plugin falham com "undefined method `test_transaction='"

Eu criei um plugin no ano passado e queria verificar se ele ainda funciona na versão mais recente do Discourse. Após reinicializar meu ambiente de desenvolvimento (tinha problemas de migração de banco de dados), consegui verificar manualmente que o plugin ainda funciona. No entanto, ao executar meus testes de especificação (que passaram no ano passado quando os escrevi), recebo o seguinte erro:

Failure/Error: DB.test_transaction = ActiveRecord::Base.connection.current_transaction
      
      NoMethodError:
        undefined method `test_transaction=' for #<MiniSqlMultisiteConnection:0x00007fb8b3815c40>

Eu também tinha o Discourse Footnote instalado localmente, e recebo o mesmo erro ao executar esses testes.

Alguém pode sugerir como corrigir meu ambiente e/ou meus testes para que eles passem na versão atual do Discourse?

Qual comando você usou para executar seu teste?

3 curtidas

Certifique-se de incluir LOAD_PLUGINS=1 ao executar bin/rspec a partir do diretório de origem discourse (com o repositório do plugin vinculado simbolicamente na pasta plugins/).

1 curtida

Estou executando o seguinte comando a partir do diretório discourse:

d/rake plugin:spec['discourse-ruby']

@riking Não estou incluindo explicitamente LOAD_PLUGINS=1, mas isso parece acontecer de qualquer forma (acho que porque estou fazendo plugin:spec). A primeira linha após executar o comando é:

LOAD_PLUGINS=1 /usr/local/bin/ruby -S rspec ./plugins/discourse-ruby/spec/markdown_ruby_spec.rb --profile

Se eu incluí-lo explicitamente como no exemplo a seguir, obtenho o mesmo erro:

d/rake plugin:spec['discourse-ruby'] LOAD_PLUGINS=1

Parece que o script d/rake usa o ambiente development como padrão, então você precisará executar o seguinte em vez disso: RAILS_ENV=test d/rake plugin:spec['discourse-ruby']

3 curtidas

Isso funcionou, obrigado!

2 curtidas