Hi Deep,

Using `params` is ok. However, if you're expecting a JSON response,
you have to add this to the request.
https://relishapp.com/rspec/rspec-rails/v/4-0/docs/request-specs/request-spec#requesting-a-json-response

On Tue, Jan 19, 2021 at 4:59 AM Deep Dhanak <deep.dha...@gmail.com> wrote:
>
> Hi Jack,
>
> Thank you for the quick response. I am currently writing a request spec; 
> however, when I write “get '/api/v1/repairs', params: { id: repair.id }", I 
> get text/html returned and not JSON. Not only that no breakpoint gets 
> triggered in my controller.
>
> I noticed that I can write this "get api_v1_path(repair)" instead and the 
> rspec will pass but as you mentioned, it seems I should use that syntax if I 
> write a feature spec.
>
> Again thanks for your help.
>
> Regards,
> Deep
>
> On Mon, Jan 18, 2021 at 4:07 PM Jack Royal-Gordon <jac...@pobox.com> wrote:
>>
>> The answer depends on what kind of spec (controller, feature, request) you 
>> are writing, and what version of RSpec.
>>
>> My answer is for the newer versions of RSpec. Older versions may require you 
>> to remove the “params:"
>>
>> For controller specs, use: “get :action, params: {id: id}” where “action” is 
>> the controller action routed to by the URL.
>>
>> For request specs, use “get ‘/api/v1/repairs’, params: {id: id}"
>>
>> For feature specs, use “visit url” and I suppose you can use the 
>> capabilities of Rails path helpers (including #url_for) or just add it to 
>> the URL (e.g. “/api/v1/repairs?id=#i{id}"),  but I can’t find any write-ups 
>> about testing APIs with feature specs, so I’m not sure this really makes 
>> sense.
>>
>>
>> On Jan 17, 2021, at 7:43 PM, Frozensoil <deep.dha...@gmail.com> wrote:
>>
>> Hi,
>>
>> I am just getting started with Rails & Rspec. I have something that looks 
>> like this currently in a request spec:
>>
>> describe 'GET repairs/index/1' do
>> let!(:repair) { FactoryBot.create(:repair) }
>>
>> before do
>> # TODO: check if there is a better way to call the get here
>> get '/api/v1/repairs/' + repair.id.to_s
>> end
>>
>> it 'returns status code 200' do
>> expect(response).to have_http_status(200)
>> end
>>
>> it 'returns a valid json response' do
>> expect(response.content_type).to eq('application/json; charset=utf-8')
>> end
>>
>> it 'returns the first repairs' do
>> # TODO: currently json return 6 attributes, that is why we have eq(6), we 
>> should validate attributes of object
>> expect(JSON.parse(response.body).size).to eq(6)
>> end
>> end
>>
>> It does work; however, I am trying to understand to see how I can first 
>> build the GET request in a better way. Also, the get request returns a JSON, 
>> should I parse the JSON into a repair object and expect on the model 
>> attributes?
>>
>> Thanks!
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "rspec" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to rspec+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/rspec/270ce60b-8e73-49ea-8b34-96db0ddfbb44n%40googlegroups.com.
>>
>>
>> --
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "rspec" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/rspec/Bkrojb8TGKA/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> rspec+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/rspec/5F96496F-1F0A-4F96-A8CB-9AEB3114042C%40pobox.com.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rspec+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rspec/CAKW5Rd%3DaQ6j_Pu3e51_4CctR3irMo60zzmSSREk15Fg5Ae%2BWwg%40mail.gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rspec+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/CAAk5Ok8F27TDPhegQZ5B7cgcN%3Dbd-7vmMyF94EOMjg2uVeSY3w%40mail.gmail.com.

Reply via email to