Estoy trabajando en un plugin que añade un modelo. Estoy intentando escribir specs que prueben que el modelo (¿y el controlador?) se comportan como se espera.
Este código en una biblioteca de Ansible está PUTteando correctamente a esta ruta y actualizando un campo en el modelo/registro:
headers = {
'Api-Key': discourse_api_key,
'Api-Username': discourse_api_username,
}
payload = {
"server[request_status]": status
}
url = "%spfaffmanager/servers/%s" % (discourse_url, server_id)
# raise Exception(url)
result = requests.put(url, data=payload, headers=headers)
Este es el spec que estoy intentando escribir para probar las actualizaciones en esa ruta. Estoy confundido porque tengo un millón de puts en el controlador y ninguno se está imprimiendo, aunque los puts en el modelo (por ejemplo, en una función llamada por before_save) sí aparecen en lo que veo en rake autospec.
Mi mejor suposición es que estoy fallando en:
# frozen_string_literal: true
require 'rails_helper'
describe Pfaffmanager::ServersController do
fab!(:user) { Fabricate(:user) }
fab!(:admin) { Fabricate(:admin) }
fab!(:another_user) { Fabricate(:user) }
fab!(:trust_level_2) { Fabricate(:user, trust_level: TrustLevel[2]) }
before do
Jobs.run_immediately!
end
it 'can update status' do
request_status = 'new status'
sign_in(admin)
s=Pfaffmanager::Server.createServerFromParams(user_id: user.id,
hostname: 'bogus.invalid' , request_status: 'not updated')
puts "can update status created server id: #{s.id}"
params = {server: {request_status: request_status}}
expect {
put "/pfaffmanager/servers/#{s.id}", params: params
}.to change { s.request_status }
expect(response.status).to eq(200)
expect(s.request_status).to eq('new status')
end
end
Ayer pasé casi todo el día con esto y agradecería cualquier pista sobre soluciones o técnicas para depurar.