require 'spec_helper' RSpec.describe Base::Apis::Search do let(:client_secret) { Base::APIClient::ClientSecret.new } subject { Base::Apis::Search.new client_secret } let(:query) { '白 シャツ 綿' } let(:request_parameters) do { client_id: '623f75000821c16163ec570ca6469539', client_secret: 'e321f43620ac47bc92f83e766107d78c', q: query } end describe '::new' do include_examples 'Base::Apis::Something.new' end describe '#request' do let(:response) do VCR.use_cassette('Search_request') { subject.request(query) } end it 'contains code "200"' do expect(response.code).to eq '200' end it '@body contains searched items info' do expect(response.body).to match(/found/) expect(response.body).to match(/items/) expect(response.body).to match(/item_id/) expect(response.body).to match(/title/) expect(response.body).to match(/detail/) expect(response.body).to match(/price/) expect(response.body).to match(/stock/) expect(response.body).to match(/modified/) expect(response.body).to match(/shop_id/) expect(response.body).to match(/shop_name/) expect(response.body).to match(/shop_url/) expect(response.body).to match(/categories/) end end describe '#request_parameters=' do it 'returns request_parameters' do client_secret = instance_double('Base::Apis::ClientSecret') client_secret.instance_variable_set( :@search_client_id, '623f75000821c16163ec570ca6469539') client_secret.instance_variable_set( :@search_client_secret, 'e321f43620ac47bc92f83e766107d78c') allow(subject).to receive(:client_secret) { client_secret } expect(subject).to respond_to(:request_parameters) do { client_id: '623f75000821c16163ec570ca6469539', client_secret: 'e321f43620ac47bc92f83e766107d78c', q: '白 シャツ 綿' } end subject.send(:request_parameters=, '白 シャツ 綿') end end describe '#uri=' do it 'has instance variable @uri' do expect(subject).to respond_to(:uri) end it 'returns an object of URI::HTTPS' do expect(subject.send(:uri=, request_parameters)).to \ be_kind_of URI::HTTPS end it 'return value to_s is uri like' do expect(subject.send(:uri=, request_parameters).to_s).to eq \ 'https://api.thebase.in/1/search?client_id=623f75000821c16163ec570ca6469539&client_secret=e321f43620ac47bc92f83e766107d78c&q=%E7%99%BD+%E3%82%B7%E3%83%A3%E3%83%84+%E7%B6%BF' end end end