
Evgeny
06.03.2017
04:44:23
Все ок тут, а вот этот render json не попадает в response
Везде норм тесты сделал,а тут какая то непонятка блин

Google

Evgeny
06.03.2017
04:50:45
есть еще в тестах параметры as: :json и xhr: true, если их добавить тоже ничего не меняется
Хотя json тут ни к чему, посмотрел доки

Victor
06.03.2017
05:23:24
Ну да, json для формата, xhr для аякса

Evgeny
06.03.2017
05:27:22
В общем я все перегуглил, я хз) В браузере response корректный, тут nil

Victor
06.03.2017
05:38:54
сделай
describe PhotosController do
render_views
...

Evgeny
06.03.2017
05:43:22
Там нет вьюх)
Всего 2 экшена create, destroy
У меня просто он отвечает за загрузку картинок из гема drop_zone
Наверняка че то где то не так делаю) А еще это рельсы 5.0.0.1

Victor
06.03.2017
06:05:06
Ты попробуй, может сработает ))

Vasiliy
06.03.2017
06:15:13
responce.body уже советовали?
и попробуй в post format укажи

Victor
06.03.2017
06:24:55
не нужно ни то, ни другое

Google

Vasiliy
06.03.2017
06:27:24
и вот же http://guides.rubyonrails.org/testing.html#testing-xhr-ajax-requests

Victor
06.03.2017
06:28:28
это не яакс, а простой запрос, и ты кидаешь доку на минитест, а это рспек

Vasiliy
06.03.2017
06:29:05
метод post из минитеста вроде как

Victor
06.03.2017
06:29:39
post есть и там, и там

Vasiliy
06.03.2017
06:29:50
из ActionController::TestCase

Victor
06.03.2017
06:30:44
но в rspec response, а в минитест @response

Vasiliy
06.03.2017
06:32:11
так там attr_reader
attr_reader :response, :request
response есть в view_example_group, но он депрекейтед и ссылается на rendered из ActionView::TestCase и вот это уже точно не то
ну я могу ошибаться

Victor
06.03.2017
06:39:54
**Note:** To encourage more isolated testing, views are not rendered by default
in controller specs. If you are verifying discrete view logic, use a [view
spec](#view-specs). If you are verifying the behaviour of a controller and view
together, consider a [request spec](#request-specs). You can use
[render\_views](https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/render-views)
if you must verify the rendered view contents within a controller spec, but
this is not recommended.
для request спек действительно подтягивают ActionDispatch::Integration::Runner

Vasiliy
06.03.2017
06:41:26
вообще дебагером сейчас скакнул в get и да, ActionController::TestCase попал

Victor
06.03.2017
06:43:45
тогда ты прав насчет ActionController::TestCase, но у Жени с чем-то другим проблема
я подозреваю, что вот с этим `views are not rendered by default
in controller specs`

Vasiliy
06.03.2017
06:45:12
вообще я думаю надо и
render_views
и
post ...., xhr: true
указать, чтобы контроллер знал что надо нужный формат рендерить(хотя у него рендер только в одном формате, так что скорее не надо)

Evgeny
06.03.2017
06:46:12
Dьюхи не робят тут, т.к. это request тесты
Хотя робят если прописать аргументы
xhr я делал
все ровно тоже самое

Google

Vasiliy
06.03.2017
06:46:43
эм... реквест тесты по моему просто элиас на контроллер тесты

Evgeny
06.03.2017
06:46:55
Ну да там типа фул стэк

Victor
06.03.2017
06:47:10
зачем xhr? это просто ставит хедер в реквесте специфический, толку от него здесь?

Evgeny
06.03.2017
06:47:22
Я в нете с десяток примеров таких же нашел и у них респонс приходит

Victor
06.03.2017
06:47:45
а ты поставил render_views?

Vasiliy
06.03.2017
06:47:51
да, с xhr я чет гусей погнал, один же рендер

Victor
06.03.2017
06:48:02
ну
тут ни формат, ни xhr не нужны

Evgeny
06.03.2017
06:48:45

Victor
06.03.2017
06:49:13
а версия rspec какая?

Evgeny
06.03.2017
06:49:13
render_template аргументы требует
Че ему имя вьюхи надо?

Evgeny
06.03.2017
06:49:21
3.5
Вообще ни с чем не было проблем, вот с render json уже весь мозг сломал
В остальном уже 90+ тестов всяких
Щас проведу эксперимент без всяких json

Victor
06.03.2017
06:51:31
https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/controller-specs/render-views
вообще, должно работать, попробуй код из доки со своим сравнить

Vasiliy
06.03.2017
06:52:31
рендер_темплате по моему вообще не то, оно для вьюх .html и прочего

Victor
06.03.2017
06:53:02
да, рендер_темплейт не нужен

Google

Victor
06.03.2017
06:53:18
может type забыл указать?

Vasiliy
06.03.2017
06:53:54
и путь к нему

Victor
06.03.2017
06:54:12
путь на скриншоте есть

Admin
ERROR: S client not available

Victor
06.03.2017
06:54:42
spec/requests/photos_spec.rb

Evgeny
06.03.2017
06:55:18
Ща 5 сек, проверю еще и гист кину

Victor
06.03.2017
06:55:41
по хорошему, должно быть spec/controllers/photos_controller_spec.rb

Vasiliy
06.03.2017
06:57:42
вообще в байбаге на скрине где пост слал можешь local_variables вывести и посмотреть че у тебя там есть или появилось
что там в итоге с response то?

Evgeny
06.03.2017
07:29:00
https://gist.github.com/EvgenyKungurov/181bf57cc9b5e6b6eed686b2419c1e4b
на работе кипишь, поэтому торможу

Alex
06.03.2017
07:30:20
добавил дополнительные таски для капистраны и все, даже форкать не надо.

Victor
06.03.2017
08:02:47
require 'rails_helper'
RSpec.describe PhotosController, type: :controller do
describe "POST #create" do
it "returns http success" do
post :create
expect(response).to have_http_status(:success)
json = JSON.parse(response.body)
expect(json['message']).to eql 'Created!'
end
вот так у меня все работает без render_views и прочих костылей
логин юзера можно через дивайсовский хелпер сделать

Evgeny
06.03.2017
08:04:13
Это если контроллерный тест, а реквест не сможешь проверить?

Victor
06.03.2017
08:05:27
def create
render json: {message: 'Created!'}
end

Google

Evgeny
06.03.2017
08:05:48
Щас сделаю как у тебя

Victor
06.03.2017
08:08:10
Это если контроллерный тест, а реквест не сможешь проверить?
require 'rails_helper'
RSpec.describe 'Photos', type: :request do
describe "POST #create" do
it "returns http success" do
post photos_create_path
expect(response).to have_http_status(:success)
json = JSON.parse(response.body)
expect(json['message']).to eql 'Created!'
end
end
end

Di
06.03.2017
08:13:38
Братцы, а подскажите про такую конструкцию:
::OAuth2::Client.new(
@key,
@secret,
defaults.merge!(options)
)
Непонятно про вот эти два двоеточия в начале, как их интерпретировать.
Я предположил что впереди надо подставить текущий модуль, типа текущий неймспейс. Но мы итак внутри модуля Oauth2
Я встретил эту конструкцию внутри такого неймспейса:
module Sorcery
module Protocols
module Oauth2
Прикол в том, что Oauth2::Client класса такого не существует, не могу найти его. Это код гема sorcery

ojab
06.03.2017
08:18:30
::OAuth2 означает искать костанту OAuth2 в top-level namespace
и, прозреваю, OAuth2 определён в геме oauth2

Di
06.03.2017
08:20:20
Ок, спс. А top-level прям совсем топ левел? В основном коде rails приложения?

ojab
06.03.2017
08:21:26
константа в top-level namespace может быть откуда угодно определена

Di
06.03.2017
08:24:07
да? А как это делается? Ведь если я просто определаю константу в модуле, то она доступна только из модуля. А запулить ее в топ-девел как? ::Foo = bar - так что ли?
*фигню написал про доступна только из модуля
Имел ввиду что доступ к ней будет через модуль.

ojab
06.03.2017
08:26:36
ну можно и ::Foo = :bar. Но вообще если определение класса class Whatever; end не внутри модуля — оно создаст константу Whatever в top-level namespace
(классы и модули — это константы, если непонятно)
и ищутся по неймспейсам рубями как обычные константы