Tenho um teste que começou a falhar há alguns dias. Parece ser algo relacionado ao timezone? Não vejo como isso seja culpa do meu plugin, mas talvez eu esteja perdendo algo?
require 'rails_helper'
describe TopicDefaultTag::ActionsController do
before do
Jobs.run_immediately!
end
it 'can list' do
sign_in(Fabricate(:user))
get "/topic-default-tag/list.json"
expect(response.status).to eq(200)
end
end
Executando Rspec: plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb
Carregando plugins enquanto executa os testes
Ocorreu um erro ao carregar ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb.
Failure/Error: UserOption.create!(user_id: id)
NoMethodError:
método `timezone' não definido para #<UserOption:0x000055dd7af16ca8>
Significava? timeout
# ./app/models/user.rb:1343:in `create_user_option'
# (eval):19:in `block (2 levels) in run_file'
# ./spec/rails_helper.rb:79:in `<top (required)>'
# ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb:1:in `require'
# ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb:1:in `<top (required)>'
Nenhum exemplo encontrado.
Finalizado em 0,00005 segundos (os arquivos levaram 3,52 segundos para carregar)
0 exemplos, 0 falhas, 1 erro ocorreu fora dos exemplos
Parece que você está com a coluna de fuso horário faltando na sua tabela user_options. Você executou as migrações recentemente no seu banco de dados de teste? RAILS_ENV=test bin/rake db:migrate
Você deve receber uma mensagem quando houver migrações pendentes
Mas isso só funcionará se você estiver usando o rails_helper. Suspeito que você precise adicionar require "rails_helper" no topo do seu arquivo spec. Isso pode resolver também os outros problemas que você está enfrentando.
Edição: hmm… talvez devêssemos adicionar --require rails_helper ao arquivo .rspec, para que não seja necessário adicioná-lo manualmente
Isso parece o tipo de erro bobo que eu faria! Infelizmente, eu realmente tenho require 'rails_helper'.
Talvez executar ./bin/rake autospec em vez de bundle exec rake autospec tenha sido o problema, mas ainda está falhando no Travis. Agora, esse spec parece estar fazendo um monte de coisas que eu não entendo para o meu único spec pequeno, mas vou apenas esperar e ver o que acontece.
Você tem um acima que cria esse usuário? (Não sou bom o suficiente para lembrar como se chama ou exatamente como fazer. Ah, um fabricador, talvez. Você fabricou esse usuário?
(ou talvez eu não tenha visto, pois estou no celular))
Sim, o usuário foi criado com sucesso. O objeto do usuário foi instanciado. O problema está dentro do método sign_in ou tem algo a ver com o ambiente? (Mas isso deveria estar controlado)
Não tenho certeza do motivo pelo qual @env[CURRENT_USER_KEY] seria nil após o login de um usuário dentro da especificação.
Notei que, durante a execução do teste, current_user é chamado várias vezes durante apenas um teste e, em um determinado momento, esse atributo possui um valor, mas não em todas as chamadas e não quando importa.
Ah, obrigado por verificar, David! Então deve ser algo peculiar na minha configuração de desenvolvimento!
Não, não há outros plugins instalados (além dos embutidos e do data explorer), mas, já que funciona para você, estou inspirado a configurar uma nova instância limpa de dev no Docker e ver se consigo executá-la com sucesso por lá. Valeu!