Sto lavorando su un plugin che aggiunge un modello. Sto cercando di scrivere degli spec per verificare che il modello (e il controller?) si comportino come previsto.
Questo codice in una libreria ansible sta effettuando con successo una richiesta PUT a questo percorso e aggiornando un campo nel modello/record:
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)
Questo è lo spec che sto cercando di scrivere per testare gli aggiornamenti su quel percorso. Sono confuso perché ho un’infinità di puts nel controller e nessuno di questi viene stampato, mentre i puts nel modello (ad esempio, in una funzione chiamata da before_save) compaiono in ciò che vedo in rake autospec.
La mia migliore ipotesi è che stia sbagliando qualcosa con
# 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
Ho passato praticamente tutta la giornata di ieri su questo e apprezzerei qualsiasi suggerimento su soluzioni o tecniche per il debugging.