Я пишу спецификации для методов удаления, использующих rspe c в рельсах. Мой метод такой:
def destroy
if @user.destroy
json_response Hash({message: 'Successfully deleted'})
elsif @user.present?
json_response @user.errors.full_messages, :unprocessable_entity
else
json_response ["You can't delete it as it has been already deleted"], :unprocessable_entity
end
Мои спецификации такие же, и теперь я хочу добавить условие else.
describe "DELETE#destroy" do
it "Delete requeted user" do
user = User.create! valid_attributes
delete :destroy, params: {use_route: 'api/v1/', id: user.to_param}, format: :json
return_response = JSON.parse(response.body)
expect(return_response["message"]).to eq "Successfully deleted"
expect(response).to have_http_status(200)
end
it "Can't delete the user as it's already deleted" do
user = User.create! valid_attributes
delete :destroy, params: {use_route: 'api/v1/', id: user.to_param}, format: :json
delete :destroy, params: {use_route: 'api/v1/', id: user.to_param}, format: :json
return_response = JSON.parse(response.body)
expect(return_response[0]).to eq "You can't delete it as it has been already deleted"
expect(response).to have_http_status(422)
end
end
Когда я запускаю спецификации работает нормально. Но когда я вижу покрытие, оно не покрывает эти условия:
elsif @user.present?
json_response @user.errors.full_messages, :unprocessable_entity
Может кто-нибудь, пожалуйста, посмотрите на это.