ppc 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +37 -0
- data/.rspec +2 -0
- data/LICENSE +339 -0
- data/README.md +78 -0
- data/lib/ppc.rb +17 -0
- data/lib/ppc/api.rb +10 -0
- data/lib/ppc/api/baidu.rb +138 -0
- data/lib/ppc/api/baidu/account.rb +47 -0
- data/lib/ppc/api/baidu/bulk.rb +41 -0
- data/lib/ppc/api/baidu/creative.rb +125 -0
- data/lib/ppc/api/baidu/group.rb +111 -0
- data/lib/ppc/api/baidu/keyword.rb +204 -0
- data/lib/ppc/api/baidu/plan.rb +68 -0
- data/lib/ppc/api/baidu/report.rb +143 -0
- data/lib/ppc/api/qihu.rb +107 -0
- data/lib/ppc/api/qihu/account.rb +86 -0
- data/lib/ppc/api/qihu/creative.rb +106 -0
- data/lib/ppc/api/qihu/group.rb +113 -0
- data/lib/ppc/api/qihu/keyword.rb +111 -0
- data/lib/ppc/api/qihu/plan.rb +64 -0
- data/lib/ppc/api/qihu/report.rb +159 -0
- data/lib/ppc/api/shenma.rb +64 -0
- data/lib/ppc/api/shenma/report.rb +135 -0
- data/lib/ppc/api/sogou.rb +122 -0
- data/lib/ppc/api/sogou/account.rb +42 -0
- data/lib/ppc/api/sogou/creative.rb +117 -0
- data/lib/ppc/api/sogou/group.rb +116 -0
- data/lib/ppc/api/sogou/keyword.rb +182 -0
- data/lib/ppc/api/sogou/plan.rb +66 -0
- data/lib/ppc/api/sogou/report.rb +129 -0
- data/lib/ppc/ext.rb +9 -0
- data/lib/ppc/operation.rb +196 -0
- data/lib/ppc/operation/account.rb +53 -0
- data/lib/ppc/operation/creative.rb +28 -0
- data/lib/ppc/operation/group.rb +59 -0
- data/lib/ppc/operation/keyword.rb +32 -0
- data/lib/ppc/operation/plan.rb +47 -0
- data/lib/ppc/operation/report.rb +19 -0
- data/ppc.gemspec +26 -0
- data/spec/baidu/api_baidu_account_spec.rb +15 -0
- data/spec/baidu/api_baidu_creative_spec.rb +67 -0
- data/spec/baidu/api_baidu_group_spec.rb +45 -0
- data/spec/baidu/api_baidu_keyword_spec.rb +61 -0
- data/spec/baidu/api_baidu_plan_spec.rb +43 -0
- data/spec/baidu/api_baidu_report_spec.rb +44 -0
- data/spec/baidu/api_baidu_spec.rb +55 -0
- data/spec/operation/operation_baidu_report_spec.rb +17 -0
- data/spec/operation/operation_baidu_spec.rb +78 -0
- data/spec/operation/operation_qihu_report_spec.rb +18 -0
- data/spec/operation/operation_qihu_spec.rb +51 -0
- data/spec/operation/operation_sogou_report_spec.rb +17 -0
- data/spec/operation/operation_sogou_spec.rb +51 -0
- data/spec/operation/operation_spec_helper.rb +51 -0
- data/spec/qihu/api_qihu_account_spec.rb +25 -0
- data/spec/qihu/api_qihu_creative_spec.rb +48 -0
- data/spec/qihu/api_qihu_group_spec.rb +40 -0
- data/spec/qihu/api_qihu_keyword_spec.rb +50 -0
- data/spec/qihu/api_qihu_plan_spec.rb +39 -0
- data/spec/qihu/api_qihu_report_spec.rb +54 -0
- data/spec/sogou/api_sogou_account_spec.rb +15 -0
- data/spec/sogou/api_sogou_creative_spec.rb +48 -0
- data/spec/sogou/api_sogou_group_spec.rb +45 -0
- data/spec/sogou/api_sogou_keyword_spec.rb +50 -0
- data/spec/sogou/api_sogou_plan_spec.rb +39 -0
- data/spec/sogou/api_sogou_report_spec.rb +51 -0
- data/spec/spec_helper.rb +134 -0
- metadata +177 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
module PPC
|
2
|
+
module Operation
|
3
|
+
class Creative
|
4
|
+
include ::PPC::Operation
|
5
|
+
|
6
|
+
def info()
|
7
|
+
::PPC::API::Baidu::Creative::get( @auth, @id )
|
8
|
+
end
|
9
|
+
|
10
|
+
def update( keywordType )
|
11
|
+
::PPC::API::Baidu::Keyword::update( @auth, keywordType )
|
12
|
+
end
|
13
|
+
|
14
|
+
def activate()
|
15
|
+
::PPC::API::Baidu::Creative::activate( @auth, @id )
|
16
|
+
end
|
17
|
+
|
18
|
+
def status()
|
19
|
+
::PPC::API::Baidu::Creative::status( @auth, @id )
|
20
|
+
end
|
21
|
+
|
22
|
+
def delete()
|
23
|
+
::PPC::API::Baidu::Creative::delete( @auth, @id )
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module PPC
|
2
|
+
module Operation
|
3
|
+
class Group
|
4
|
+
include ::PPC::Operation
|
5
|
+
|
6
|
+
def info()
|
7
|
+
call('group').get(@auth, @id)
|
8
|
+
end
|
9
|
+
|
10
|
+
def update( info )
|
11
|
+
info[:id] = @id unless info[:id]
|
12
|
+
call('group').update(@auth, info)
|
13
|
+
end
|
14
|
+
|
15
|
+
# =============================== #
|
16
|
+
def keywords()
|
17
|
+
call( 'keyword' ).search_by_group_id( @auth, @id )
|
18
|
+
end
|
19
|
+
|
20
|
+
def keyword_ids()
|
21
|
+
call( 'keyword' ).search_id_by_group_id( @auth, @id )
|
22
|
+
end
|
23
|
+
|
24
|
+
def creatives()
|
25
|
+
call( 'creative' ).search_by_group_id( @auth, @id )
|
26
|
+
end
|
27
|
+
|
28
|
+
def creative_ids()
|
29
|
+
call( 'creative' ).search_id_by_group_id( @auth, @id )
|
30
|
+
end
|
31
|
+
|
32
|
+
# keyword opeartion
|
33
|
+
include ::PPC::Operation::Keyword_operation
|
34
|
+
|
35
|
+
# creative opeartion
|
36
|
+
include ::PPC::Operation::Creative_operation
|
37
|
+
|
38
|
+
# Overwrite add method to provide more function
|
39
|
+
def add_keyword( keywords )
|
40
|
+
call('keyword').add( @auth, add_group_id( keywords ) )
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_creative( creatives )
|
44
|
+
call('creative').add( @auth, add_group_id( creatives ) )
|
45
|
+
end
|
46
|
+
|
47
|
+
# Auxilary function
|
48
|
+
private
|
49
|
+
def add_group_id( types )
|
50
|
+
types = [types] unless types.is_a? Array
|
51
|
+
types.each do |type|
|
52
|
+
type.merge!( {group_id:@id} )
|
53
|
+
end
|
54
|
+
return types
|
55
|
+
end
|
56
|
+
|
57
|
+
end # Group
|
58
|
+
end # Operation
|
59
|
+
end # PPC
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module PPC
|
2
|
+
module Operation
|
3
|
+
class Keyword
|
4
|
+
include ::PPC::Operation
|
5
|
+
|
6
|
+
def info()
|
7
|
+
::PPC::API::Baidu::Keyword::get( @auth, @id )
|
8
|
+
end
|
9
|
+
|
10
|
+
def update( type )
|
11
|
+
::PPC::API::Baidu::Keyword::update( @auth, type.merge( id:@id) )
|
12
|
+
end
|
13
|
+
|
14
|
+
def activate()
|
15
|
+
::PPC::API::Baidu::Keyword::activate( @auth, @id )
|
16
|
+
end
|
17
|
+
|
18
|
+
def status()
|
19
|
+
::PPC::API::Baidu::Keyword::status( @auth, @id )
|
20
|
+
end
|
21
|
+
|
22
|
+
def quality()
|
23
|
+
::PPC::API::Baidu::Keyword::quality( @auth, @id )
|
24
|
+
end
|
25
|
+
|
26
|
+
def delete()
|
27
|
+
::PPC::API::Baidu::Keyword::delete( @auth, @id )
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
module PPC
|
3
|
+
module Operation
|
4
|
+
class Plan
|
5
|
+
include ::PPC::Operation
|
6
|
+
|
7
|
+
def info
|
8
|
+
call('plan').get(@auth,@id)
|
9
|
+
end
|
10
|
+
|
11
|
+
def update( plan )
|
12
|
+
call('plan').update( @auth, plan.merge( id:@id ) )
|
13
|
+
end
|
14
|
+
|
15
|
+
def groups()
|
16
|
+
result = call('group').search_by_plan_id(@auth, @id)
|
17
|
+
result[:result] = result[:result][0][:groups]
|
18
|
+
return result
|
19
|
+
end
|
20
|
+
|
21
|
+
def group_ids()
|
22
|
+
result = call('group').search_id_by_plan_id(@auth, @id)
|
23
|
+
result[:result] = result[:result][0][:group_ids]
|
24
|
+
return result
|
25
|
+
end
|
26
|
+
|
27
|
+
# group opeartion
|
28
|
+
include ::PPC::Operation::Group_operation
|
29
|
+
|
30
|
+
# Overwirte add_group method to provide more function
|
31
|
+
def add_group( groups )
|
32
|
+
call('group').add( @auth, add_plan_id( groups ) )
|
33
|
+
end
|
34
|
+
|
35
|
+
# Auxilary function
|
36
|
+
private
|
37
|
+
def add_plan_id( types )
|
38
|
+
types = [types] unless types.is_a? Array
|
39
|
+
types.each do |type|
|
40
|
+
type.merge!({plan_id:@id})
|
41
|
+
end
|
42
|
+
return types
|
43
|
+
end
|
44
|
+
|
45
|
+
end # class plan
|
46
|
+
end # mudole Opeartion
|
47
|
+
end # PPC
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module PPC
|
2
|
+
module Operation
|
3
|
+
module Report
|
4
|
+
|
5
|
+
def query_report( param = nil, debug = false )
|
6
|
+
call('report').query_report( @auth, param, debug )
|
7
|
+
end
|
8
|
+
|
9
|
+
def creative_report( param = nil, debug = false )
|
10
|
+
call('report').creative_report( @auth, param, debug )
|
11
|
+
end
|
12
|
+
|
13
|
+
def keyword_report( param = nil, debug = false )
|
14
|
+
call('report').keyword_report( @auth, param, debug )
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/ppc.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
# require ppc for version
|
6
|
+
require 'ppc'
|
7
|
+
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.name = "ppc"
|
10
|
+
spec.version = PPC::VERSION
|
11
|
+
spec.authors = ["Chienli Ma, 刘梦晨, 刘明"]
|
12
|
+
spec.email = ["maqianlie@gmail.com, liuyu_tc@163.com, seoaqua@qq.com"]
|
13
|
+
spec.summary = %q{ppc api for baidu qihu sogou}
|
14
|
+
spec.description = %q{ppc api for baidu qihu sogou}
|
15
|
+
spec.homepage = "http://github.com/elong/ppc"
|
16
|
+
spec.license = "GNU"
|
17
|
+
|
18
|
+
spec.files = `git ls-files -z`.split("\x0")
|
19
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
|
23
|
+
spec.add_dependency 'httparty', '~> 0.13', '>= 0.13.0'
|
24
|
+
spec.add_dependency 'savon', '~> 3.0', '>= 3.0.0'
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
describe ::PPC::API::Baidu::Account do
|
2
|
+
auth = $baidu_auth
|
3
|
+
|
4
|
+
it 'can get account info' do
|
5
|
+
result = ::PPC::API::Baidu::Account::info( auth )
|
6
|
+
is_success( result )
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'can update account' do
|
10
|
+
update = {budget:2990}
|
11
|
+
result = ::PPC::API::Baidu::Account::update( auth, update )
|
12
|
+
is_success( result )
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# -*- coding:utf-8 -*-
|
2
|
+
describe ::PPC::API::Baidu::Creative do
|
3
|
+
auth = $baidu_auth
|
4
|
+
|
5
|
+
test_group_id = ::PPC::API::Baidu::Group::ids( auth )[:result][0][:group_ids][0]
|
6
|
+
test_plan_id = ::PPC::API::Baidu::Plan::all( auth )[:result][0][:plan_id]
|
7
|
+
test_creative_id = []
|
8
|
+
|
9
|
+
it 'can add creative' do
|
10
|
+
creative = { group_id: test_group_id,
|
11
|
+
title: 'TestCreative', preference:1,
|
12
|
+
description1:'this is rest',
|
13
|
+
description2:'also is a test',
|
14
|
+
pc_destination:$baidu_domain,
|
15
|
+
pc_display:$baidu_domain }
|
16
|
+
response = ::PPC::API::Baidu::Creative::add( auth, creative )
|
17
|
+
is_success( response )
|
18
|
+
test_creative_id << response[:result][0][:id]
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'can update creative' do
|
22
|
+
update = { id:test_creative_id[0],
|
23
|
+
title:'ElongUpdateTest',
|
24
|
+
description1:'test for update',
|
25
|
+
mobile_destination:$baidu_domain,
|
26
|
+
pc_destination:$baidu_domain,
|
27
|
+
pause:true}
|
28
|
+
response = ::PPC::API::Baidu::Creative::update( auth, update )
|
29
|
+
is_success( response )
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'can activate creative' do
|
33
|
+
response = ::PPC::API::Baidu::Creative::activate( auth, test_creative_id )
|
34
|
+
is_success( response )
|
35
|
+
end
|
36
|
+
|
37
|
+
# 连续测试的系统返回system_failured
|
38
|
+
# it 'can get status' do
|
39
|
+
# response1 = ::PPC::API::Baidu::Creative::status( auth, test_group_id, 'group' )
|
40
|
+
# response2 = ::PPC::API::Baidu::Creative::status( auth, test_creative_id, 'creative' )
|
41
|
+
# response3 = ::PPC::API::Baidu::Creative::status( auth, test_plan_id, 'plan' )
|
42
|
+
# is_success( response1 )
|
43
|
+
# is_success( response2 )
|
44
|
+
# is_success( response3 )
|
45
|
+
# end
|
46
|
+
|
47
|
+
it 'can search id by group id' do
|
48
|
+
response = ::PPC::API::Baidu::Creative::search_id_by_group_id( auth, test_group_id, 0 )
|
49
|
+
is_success( response )
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'can search creative by group id' do
|
53
|
+
response = ::PPC::API::Baidu::Creative::search_by_group_id( auth, test_group_id, 0 )
|
54
|
+
is_success( response )
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'can search creative by creative id' do
|
58
|
+
response = ::PPC::API::Baidu::Creative::get( auth, test_creative_id, 0 )
|
59
|
+
is_success( response )
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'can delete creative' do
|
63
|
+
response = ::PPC::API::Baidu::Creative::delete( auth, test_creative_id )
|
64
|
+
is_success( response )
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
describe ::PPC::API::Baidu::Group do
|
2
|
+
auth = $baidu_auth
|
3
|
+
|
4
|
+
test_plan_id = ::PPC::API::Baidu::Plan.ids(auth)[:result][0]
|
5
|
+
test_group_id = []
|
6
|
+
|
7
|
+
it 'can get all group' do
|
8
|
+
response = ::PPC::API::Baidu::Group::ids( auth )
|
9
|
+
is_success( response )
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'can add group' do
|
13
|
+
group = { name: 'test_group', plan_id:test_plan_id, price:500 }
|
14
|
+
response = ::PPC::API::Baidu::Group::add( auth, group )
|
15
|
+
is_success( response )
|
16
|
+
test_group_id << response[:result][0][:id]
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'can update group' do
|
20
|
+
group = { id: test_group_id[0], price:600 }
|
21
|
+
response = ::PPC::API::Baidu::Group::update( auth, group )
|
22
|
+
is_success( response )
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'can search group by group id' do
|
26
|
+
response = ::PPC::API::Baidu::Group::get( auth, test_group_id )
|
27
|
+
is_success( response )
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'can search group id by plan id' do
|
31
|
+
response = ::PPC::API::Baidu::Group::search_id_by_plan_id( auth, test_plan_id )
|
32
|
+
is_success( response )
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'search by plan id' do
|
36
|
+
response = ::PPC::API::Baidu::Group::search_by_plan_id( auth, test_plan_id )
|
37
|
+
is_success( response )
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'can delete group' do
|
41
|
+
response = ::PPC::API::Baidu::Group::delete( auth, test_group_id )
|
42
|
+
is_success( response )
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# -*- coding:utf-8 -*-
|
2
|
+
describe ::PPC::API::Baidu::Keyword do
|
3
|
+
auth = $baidu_auth
|
4
|
+
|
5
|
+
test_group_id = ::PPC::API::Baidu::Group::ids( auth )[:result][0][:group_ids][0]
|
6
|
+
test_plan_id = ::PPC::API::Baidu::Plan::all( auth )[:result][0][:plan_id]
|
7
|
+
test_keyword_id = []
|
8
|
+
|
9
|
+
it 'can search keyword by group id' do
|
10
|
+
response = ::PPC::API::Baidu::Keyword::search_by_group_id( auth, test_group_id )
|
11
|
+
is_success( response )
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'can add keyword' do
|
15
|
+
keyword = { group_id: test_group_id, keyword: 'testkeywordid', match_type:'exact' }
|
16
|
+
response = ::PPC::API::Baidu::Keyword::add( auth, keyword )
|
17
|
+
is_success( response )
|
18
|
+
test_keyword_id << response[:result][0][:id]
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'can update keyword' do
|
22
|
+
update = { id:test_keyword_id[0], pc_destination: $baidu_domain, pause:true}
|
23
|
+
response = ::PPC::API::Baidu::Keyword::update( auth, update )
|
24
|
+
is_success( response )
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'can activate keyword' do
|
28
|
+
response = ::PPC::API::Baidu::Keyword::activate( auth, test_keyword_id )
|
29
|
+
is_success( response )
|
30
|
+
end
|
31
|
+
|
32
|
+
# 连续测试系统返回system failure
|
33
|
+
# it 'can get status' do
|
34
|
+
# response1 = ::PPC::API::Baidu::Keyword::status( auth, test_group_id, 'group' )
|
35
|
+
# response2 = ::PPC::API::Baidu::Keyword::status( auth, test_keyword_id, 'keyword' )
|
36
|
+
# response3 = ::PPC::API::Baidu::Keyword::status( auth, test_plan_id, 'plan' )
|
37
|
+
# is_success( response1 )
|
38
|
+
# is_success( response2 )
|
39
|
+
# is_success( response3 )
|
40
|
+
# end
|
41
|
+
|
42
|
+
# it 'can get quality' do
|
43
|
+
# response1 = ::PPC::API::Baidu::Keyword::quality( auth, test_group_id, 'group', true )
|
44
|
+
# response2 = ::PPC::API::Baidu::Keyword::quality( auth, test_keyword_id, 'keyword', true )
|
45
|
+
# response3 = ::PPC::API::Baidu::Keyword::quality( auth, test_plan_id, 'plan', true )
|
46
|
+
# is_successed( response1 )
|
47
|
+
# is_successed( response2 )
|
48
|
+
# is_successed( response3 )
|
49
|
+
# end
|
50
|
+
|
51
|
+
it 'can get 10-quality' do
|
52
|
+
response = ::PPC::API::Baidu::Keyword::quality( auth, test_keyword_id, 'keyword', 'pc' )
|
53
|
+
is_success( response )
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'can delete keyword' do
|
57
|
+
response = ::PPC::API::Baidu::Keyword::delete( auth, test_keyword_id )
|
58
|
+
is_success( response )
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
describe ::PPC::API::Baidu::Plan do
|
2
|
+
auth = $baidu_auth
|
3
|
+
|
4
|
+
test_plan_id = []
|
5
|
+
|
6
|
+
::PPC::API::Baidu.debug_on
|
7
|
+
|
8
|
+
it "can get all plans" do
|
9
|
+
response = ::PPC::API::Baidu::Plan::all( auth )
|
10
|
+
is_success( response )
|
11
|
+
end
|
12
|
+
|
13
|
+
it "can get all plan id" do
|
14
|
+
response = ::PPC::API::Baidu::Plan::ids( auth )
|
15
|
+
is_success( response )
|
16
|
+
end
|
17
|
+
|
18
|
+
it "can add plan" do
|
19
|
+
test_plan = { name: "test_elong_e", negative: ["test"] }
|
20
|
+
response = ::PPC::API::Baidu::Plan::add( auth, test_plan )
|
21
|
+
is_success( response )
|
22
|
+
test_plan_id << response[:result][0][:id]
|
23
|
+
end
|
24
|
+
|
25
|
+
it "can get plan by id" do
|
26
|
+
response = ::PPC::API::Baidu::Plan::get( auth, test_plan_id )
|
27
|
+
is_success( response )
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'can update plan' do
|
31
|
+
update = { id: test_plan_id[0], name:"test_plan_update", is_dynamic:false }
|
32
|
+
response = ::PPC::API::Baidu::Plan::update( auth, update )
|
33
|
+
# param isDynamicCreative should not be default value
|
34
|
+
expect( response[:result][0][:is_dynamic] ).to eq false
|
35
|
+
is_success( response )
|
36
|
+
end
|
37
|
+
|
38
|
+
it "can delete plan" do
|
39
|
+
response = ::PPC::API::Baidu::Plan::delete( auth, test_plan_id )
|
40
|
+
is_success( response )
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|