Created
August 4, 2020 03:47
-
-
Save ruvaleev/142f564ad7198edd7f15ea6181e99d31 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Вот, например, мы коротко, и с виду, мило применяем put_authenticated | |
| # dictionary_items_api_spec.rb | |
| context 'when PUT v1/dictionary_items/:id' do | |
| subject(:send_request) { put_authenticated("/dictionary_items/#{ id }", params) } | |
| let(:params) { { dictionary_item: attributes_for(:dictionary_item) } } | |
| it_behaves_like 'user authorization required', 'update', 'dictionary_items' | |
| it_behaves_like 'updates and returns updated object', 'dictionary_item' do | |
| let(:object) { dictionary_item } | |
| let(:update_params) { params[:dictionary_item] } | |
| end | |
| end | |
| # support/some_new_helper.rb | |
| def put_authenticated(path, params) | |
| put path, params: params, headers: headers | |
| end | |
| # Но что меня смущает: | |
| # 1) Из теста совсем не очевидно, что headers вообще нужно определять, а так как они у меня в зашаренном контексте, | |
| # то это еще одним квестом может стать для вновь прибывших | |
| # 2) метод у нас называется authenticated (что так и есть), но когда мы вызываем тесты 'user authorization required', | |
| # то мы вызываем все равно его для того, чтобы симулировать не аутентифицированный доступ в том числе. | |
| # В принципе, может быть, не очень критично, но мне кажется, мы слишком многое "под капот" спрячем, а выиграем крупицы. | |
| # Но это вкусовщина, конечно, если думаешь, что лучше так сделать, можно и сделать. | |
| # P.S. были бы это контроллер тесты, мы могли бы просто каким-нибудь before-ом в request.headers добавлять ключи-значения, | |
| # но поскольку это request тесты, то тут объекта request мы не имеем. Единственный способ его подключить, который я нашел, | |
| # это подключить в rails_helper.rb Rack::Test::Methods, но тогда он вообще замокает нам реквесты ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment