require_relative '../examples' RSpec.describe 'Keyword methods' do include_context 'use api' describe 'Keyword methods' do let(:a_keyword) do { bid: a_kind_of(Hash), bidding_scheme: a_kind_of(Hash), destination_url: a_kind_of(String), editorial_status: a_kind_of(String), final_app_urls: nil, final_mobile_urls: nil, final_url_suffix: nil, final_urls: nil, forward_compatibility_map: a_kind_of(String), id: a_kind_of(String), match_type: a_kind_of(String), param1: a_kind_of(String), param2: a_kind_of(String), param3: a_kind_of(String), status: a_kind_of(String), text: a_kind_of(String), tracking_url_template: nil, url_custom_parameters: nil, } end let(:keyword_id) { add_keywords[:keyword_ids].first } let(:add_keywords) do api.campaign_management.call(:add_keywords, ad_group_id: Examples.ad_group_id, keywords: { keyword: { bid: { amount: 0.05 }, match_type: 'Exact', text: "AcceptanceTestKeyword - #{random}", } } ) end describe '#add_keywords' do it 'returns created Keyword ids' do expect(add_keywords).to include( keyword_ids: [a_kind_of(Integer)], partial_errors: '' ) end end describe '#get_keywords_by_ad_group_id' do before { add_keywords } it 'returns a list of keywords' do expect(api.campaign_management.get_keywords_by_ad_group_id( ad_group_id: Examples.ad_group_id )).to include(a_keyword) end end describe '#get_keywords_by_editorial_status' do before { add_keywords } it 'returns a list of Keywords' do expect(api.campaign_management.get_keywords_by_editorial_status( ad_group_id: Examples.ad_group_id, editorial_status: 'Active' )).to include(a_keyword) end end describe '#get_keywords_by_ids' do before { add_keywords } it 'returns a list of Keywords' do expect(api.campaign_management.get_keywords_by_ids( ad_group_id: Examples.ad_group_id, keyword_ids: [{ long: keyword_id }] )).to include(a_keyword) end end describe '#update_keywords' do before { add_keywords } it 'updates the keyword' do expect(api.campaign_management.call(:update_keywords, ad_group_id: Examples.ad_group_id, keywords: { keyword: [ id: keyword_id, bid: { amount: 0.50 }, ] } )).to include(partial_errors: '') end end describe '#delete_keywords' do before { add_keywords } it 'returns no errors' do expect(api.campaign_management.call(:delete_keywords, ad_group_id: Examples.ad_group_id, keyword_ids: [{ long: keyword_id }] )).to eq(partial_errors: '') end end end end