sklik-api 0.0.16 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,131 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'helper'
3
+ class KeywordIntegrationTest < Test::Unit::TestCase
4
+ context "Integration:Keyword" do
5
+
6
+ setup do
7
+ @campaign_hash = {
8
+ :name => "integration keyword - #{Time.now.strftime("%Y.%m.%d %H:%M:%S.%L")}",
9
+ :status => :running,
10
+ :budget => 15.0,
11
+ :customer_id => 192495,
12
+ :excluded_search_services => [2,3,4,5,6,7,8], #choose only seznam.cz
13
+ :network_setting => {
14
+ :content => true,
15
+ :search => true
16
+ },
17
+ :ad_groups => []
18
+ }
19
+ @campaign = SklikApi::Campaign.new(@campaign_hash)
20
+ unless @campaign.save
21
+ raise "Unable to continue - Campaign: #{@campaign.errors}"
22
+ end
23
+
24
+ @adgroup_hash = {
25
+ :name => "my adgroup name - #{Time.now.strftime("%Y.%m.%d %H:%M:%S.%L")}",
26
+ :cpc => 6.0,
27
+ :campaign_id => @campaign.args[:campaign_id],
28
+ :keywords => [],
29
+ :ads => [],
30
+ :status => :running,
31
+ }
32
+
33
+ @adgroup = SklikApi::Adgroup.new(@adgroup_hash)
34
+ unless @adgroup.save
35
+ raise "Unable to continue - Adgroup: #{@adgroup.errors}"
36
+ end
37
+
38
+ @keyword_hash = {
39
+ :adgroup_id => @adgroup.args[:adgroup_id],
40
+ :keyword => 'testing keyword',
41
+ :status => :running,
42
+ }
43
+ @keyword = SklikApi::Keyword.new(@keyword_hash)
44
+ unless @keyword.save
45
+ raise "Unable to continue - Keyword: #{@keyword.errors}"
46
+ end
47
+
48
+ end
49
+
50
+ def teardown
51
+ @campaign.remove if SklikApi::Campaign.get(@campaign.args[:campaign_id]).args[:status] != :stopped
52
+ end
53
+
54
+ should "create keyword with match type!" do
55
+ keyword_hash = {
56
+ :adgroup_id => @adgroup.args[:adgroup_id],
57
+ :keyword => "[phrase]",
58
+ :status => :running
59
+ }
60
+ keyword = SklikApi::Keyword.new(keyword_hash)
61
+ assert keyword.save, "Problem with creating phrase keyword: #{keyword.errors}"
62
+ assert_equal SklikApi::Keyword.get(keyword.args[:keyword_id]).args[:keyword], keyword_hash[:keyword]
63
+
64
+ keyword_hash = {
65
+ :adgroup_id => @adgroup.args[:adgroup_id],
66
+ :keyword => "broad",
67
+ :status => :running
68
+ }
69
+ keyword = SklikApi::Keyword.new(keyword_hash)
70
+ assert keyword.save, "Problem with creating broad keyword: #{keyword.errors}"
71
+ assert_equal SklikApi::Keyword.get(keyword.args[:keyword_id]).args[:keyword], keyword_hash[:keyword]
72
+
73
+ keyword_hash = {
74
+ :adgroup_id => @adgroup.args[:adgroup_id],
75
+ :keyword => "\"exact\"",
76
+ :status => :running
77
+ }
78
+ keyword = SklikApi::Keyword.new(keyword_hash)
79
+ assert keyword.save, "Problem with creating exact keyword: #{keyword.errors}"
80
+ assert_equal SklikApi::Keyword.get(keyword.args[:keyword_id]).args[:keyword], keyword_hash[:keyword]
81
+
82
+ end
83
+ should "create paused keyword" do
84
+ @keyword_hash[:keyword] += "Paused"
85
+ @keyword_hash[:status] = :paused
86
+ keyword = SklikApi::Keyword.new(@keyword_hash)
87
+ assert keyword.save, "Problem with creating keyword: #{keyword.errors}"
88
+
89
+ assert_equal SklikApi::Keyword.get(keyword.args[:keyword_id]).args[:status], :paused
90
+ end
91
+
92
+ should "create stopped keyword" do
93
+ @keyword_hash[:keyword] += " stopped"
94
+ @keyword_hash[:status] = :stopped
95
+ keyword = SklikApi::Keyword.new(@keyword_hash)
96
+ assert keyword.save, "Problem with creating keyword: #{keyword.errors}"
97
+
98
+ assert_equal SklikApi::Keyword.get(keyword.args[:keyword_id]).args[:status], :stopped
99
+ end
100
+
101
+ should "find" do
102
+ assert_equal SklikApi::Keyword.find(@keyword.args[:keyword_id]).to_hash.to_a.sort, @keyword_hash.to_a.sort, "By ID"
103
+ assert_equal SklikApi::Keyword.find(keyword_id: @keyword.args[:keyword_id]).first.to_hash.to_a.sort, @keyword_hash.to_a.sort, "By Hash with ID"
104
+ end
105
+
106
+ should "get" do
107
+ assert_equal SklikApi::Keyword.get(@keyword.args[:keyword_id]).to_hash.to_a.sort, @keyword_hash.to_a.sort
108
+ end
109
+
110
+ should "update" do
111
+ keyword = SklikApi::Keyword.get(@keyword.args[:keyword_id])
112
+
113
+ new_attributes = {
114
+ status: :stopped,
115
+ }
116
+ keyword.update new_attributes
117
+
118
+ keyword = SklikApi::Keyword.get(@keyword.args[:keyword_id])
119
+ assert_equal keyword.to_hash.to_a.sort, @keyword_hash.merge(new_attributes).to_a.sort, "First update"
120
+
121
+ new_attributes = {
122
+ status: :paused,
123
+ }
124
+ keyword.update new_attributes
125
+ keyword = SklikApi::Keyword.get(@keyword.args[:keyword_id])
126
+ assert_equal keyword.to_hash.to_a.sort, @keyword_hash.merge(new_attributes).to_a.sort, "Second update"
127
+
128
+ end
129
+
130
+ end
131
+ end
@@ -0,0 +1,147 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'helper'
3
+ class AdgroupTest < Test::Unit::TestCase
4
+ context "Adgroup" do
5
+
6
+ setup do
7
+ @campaign_hash = {
8
+ :name => "Campaign adgroup test - #{Time.now.strftime("%Y.%m.%d %H:%M:%S.%L")}",
9
+ :status => :running,
10
+ :budget => 15.0,
11
+ :cpc => 3.5,
12
+ :customer_id => 192495,
13
+ :excluded_search_services => [2,3,4,5,6,7,8], #choose only seznam.cz
14
+ :network_setting => {
15
+ :content => true,
16
+ :search => true
17
+ },
18
+ :ad_groups => [
19
+ {
20
+ :name => "my adgroup name",
21
+ :ads => [
22
+ {
23
+ :headline => "Super headline",
24
+ :description1 => "Trying to do ",
25
+ :description2 => "best description ever",
26
+ :display_url => "bartas.cz",
27
+ :url => "http://www.bartas.cz"
28
+ }
29
+ ],
30
+ :keywords => [
31
+ "\"some funny keyword\"",
32
+ "[myphrase keyword]",
33
+ "mybroad keyword for me",
34
+ "test of diarcritics âô"
35
+ ]
36
+ }
37
+ ]
38
+ }
39
+
40
+ if @campaign = SklikApi::Campaign.find(@campaign_hash).first
41
+ unless @campaign.update @campaign_hash
42
+ pp @campaign.errors
43
+ raise 'Unable to update campaign!!! Fix this before tesing more'
44
+ end
45
+ else
46
+ @campaign = SklikApi::Campaign.new(@campaign_hash)
47
+ unless @campaign.save
48
+ pp @campaign.errors
49
+ raise 'Unable to Create campaign!!! Fix this before tesing more'
50
+ end
51
+ end
52
+ end
53
+
54
+ should "be found in campaign" do
55
+ assert SklikApi::Adgroup.find(campaign_id: @campaign.args[:campaign_id]).size > 0, "In sklik should be some adgroups"
56
+ end
57
+
58
+ should "be found/get by id" do
59
+ adgroup = SklikApi::Adgroup.get(7053769)
60
+ assert_not_nil adgroup
61
+ assert adgroup.is_a?(SklikApi::Adgroup), "return SklikApi::Adgroup"
62
+
63
+ adgroup = SklikApi::Adgroup.find(adgroup_id: 7053769).first
64
+ assert_not_nil adgroup
65
+ assert adgroup.is_a?(SklikApi::Adgroup), "return SklikApi::Adgroup"
66
+
67
+ adgroup = SklikApi::Adgroup.find(campaign_id: 'doesnt matter', adgroup_id: 7053769).first
68
+ assert_not_nil adgroup
69
+ assert adgroup.is_a?(SklikApi::Adgroup), "return SklikApi::Adgroup"
70
+ end
71
+
72
+ should "return empty array when asking for not known adgroup" do
73
+ assert_equal SklikApi::Adgroup.find(:campaign_id => @campaign.args[:campaign_id], :name => 'unknown').size , 0
74
+ end
75
+
76
+ context "only adgroup" do
77
+ setup do
78
+
79
+ @adgroup_hash = {
80
+ :name => "my adgroup name - #{Time.now}",
81
+ :campaign_id => @campaign.args[:campaign_id],
82
+ :cpc => 2.0,
83
+ :ads => [
84
+ {
85
+ :headline => "Super headline",
86
+ :description1 => "Trying to do ",
87
+ :description2 => "best description ever",
88
+ :display_url => "bartas.cz",
89
+ :url => "http://www.bartas.cz"
90
+ }
91
+ ],
92
+ :keywords => [
93
+ "\"some funny keyword\"",
94
+ "[myphrase keyword]",
95
+ "mybroad keyword for me",
96
+ "test of diarcritics âô"
97
+ ]
98
+ }
99
+ @adgroup = SklikApi::Adgroup.new(@adgroup_hash)
100
+ end
101
+
102
+ should "be initialized" do
103
+ assert_nothing_raised do
104
+ SklikApi::Adgroup.new(@adgroup_hash)
105
+ end
106
+ end
107
+
108
+ should "be invalid without given campaign_id or campaign" do
109
+ @adgroup_hash.delete(:campaign_id)
110
+ refute SklikApi::Adgroup.new(@adgroup_hash).valid?
111
+ end
112
+
113
+ should "be valid with given campaign_id" do
114
+ assert SklikApi::Adgroup.new(@adgroup_hash).valid?
115
+ end
116
+
117
+ should "be valid with given campaign" do
118
+ @adgroup_hash.delete(:campaign_id)
119
+ @adgroup_hash[:campaign] = @campaign
120
+ adgroup = SklikApi::Adgroup.new(@adgroup_hash)
121
+ assert adgroup.valid?, "Problem with: #{adgroup.errors}"
122
+ end
123
+
124
+ should "use campaign cpc (if no cpc given)" do
125
+ @adgroup_hash.delete(:campaign_id)
126
+ @adgroup_hash.delete(:cpc)
127
+ @adgroup_hash[:campaign] = @campaign
128
+ @campaign.args[:cpc] = @campaign_hash[:cpc]
129
+ adgroup = SklikApi::Adgroup.new(@adgroup_hash)
130
+ assert adgroup.valid?
131
+ assert_equal adgroup.args[:cpc], @campaign_hash[:cpc]
132
+ end
133
+
134
+ should "use cpc of adgroup if campaign was given" do
135
+ @adgroup_hash.delete(:campaign_id)
136
+ @adgroup_hash[:campaign] = @campaign
137
+ adgroup = SklikApi::Adgroup.new(@adgroup_hash)
138
+ assert adgroup.valid?
139
+ assert_equal adgroup.args[:cpc], @adgroup_hash[:cpc]
140
+ end
141
+
142
+ should "have hash stored inside" do
143
+ assert_equal @adgroup.args, @adgroup_hash
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,318 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'helper'
3
+ class CampaignTest < Test::Unit::TestCase
4
+
5
+ context "Campaign" do
6
+
7
+ should "be found" do
8
+ assert SklikApi::Campaign.find(:customer_id => 192495).size > 0, "In sklik sandbox should be some campaigns"
9
+ end
10
+
11
+ should "be found without specifying customer_id" do
12
+ assert SklikApi::Campaign.find().size > 0, "In sklik sandbox should be some campaigns"
13
+ end
14
+
15
+ should "return empty array when asking for not known campaign" do
16
+ assert_equal SklikApi::Campaign.find(:campaign_id => 123456789).size , 0
17
+ end
18
+
19
+ should "return array of search services" do
20
+ assert_equal SklikApi::Campaign.list_search_services, [{:id=>1, :name=>"Vyhledávání na Seznam.cz"},
21
+ {:id=>2, :name=>"Firmy.cz"},
22
+ {:id=>3, :name=>"Sbazar.cz"},
23
+ {:id=>4, :name=>"Encyklopedie.Seznam.cz"},
24
+ {:id=>5, :name=>"Seznam na mobil (Smobil.cz)"},
25
+ {:id=>6, :name=>"Seznam Obrázky (Obrazky.cz)"},
26
+ {:id=>7, :name=>"Seznam Zboží (Zbozi.cz)"},
27
+ {:id=>8, :name=>"Partnerské vyhledávače"}]
28
+ end
29
+
30
+ context "only campaign" do
31
+ setup do
32
+ #preserve uniq names of campaigns!
33
+ @only_campaign_hash = {
34
+ :name => "hustokrutě megapřísně - #{Time.now.strftime("%Y.%m.%d %H:%M:%S.%L")} - only",
35
+ :status => :running,
36
+ :budget => 15.0,
37
+ :customer_id => 192495,
38
+ :excluded_search_services => [2,3,4,5,6,7,8], #choose only seznam.cz
39
+ :network_setting => {
40
+ :content => true,
41
+ :search => true
42
+ }
43
+ }
44
+ @campaign = SklikApi::Campaign.new(@only_campaign_hash)
45
+ end
46
+
47
+ def teardown
48
+ @campaign.remove if @campaign && @campaign.args[:campaign_id] && SklikApi::Campaign.get(@campaign.args[:campaign_id]) && SklikApi::Campaign.get(@campaign.args[:campaign_id]).args[:status] != :stopped
49
+ end
50
+
51
+ should "be initialized" do
52
+ assert_nothing_raised do
53
+ SklikApi::Campaign.new(@only_campaign_hash)
54
+ end
55
+ end
56
+
57
+ should "have hash stored inside" do
58
+ assert_equal @campaign.args, @only_campaign_hash
59
+ end
60
+
61
+ context "create" do
62
+ setup do
63
+ @campaign = SklikApi::Campaign.new(@only_campaign_hash)
64
+ unless @campaign.save
65
+ puts "ERROR: \n #{@campaign.errors.join("\n")}"
66
+ end
67
+ end
68
+
69
+ should "return campaign by get method" do
70
+ campaign = SklikApi::Campaign.get(@campaign.args[:campaign_id])
71
+ campaign_hash = campaign.to_hash
72
+ assert_equal campaign_hash[:ad_groups].size, 0, "Campaign should have 0 adgroups"
73
+ end
74
+
75
+ should "be found/get by id" do
76
+ campaign = SklikApi::Campaign.get(@campaign.args[:campaign_id])
77
+ assert_not_nil campaign
78
+ assert campaign.is_a?(SklikApi::Campaign), "return SklikApi::Campaign"
79
+
80
+ campaign = SklikApi::Campaign.find(campaign_id: @campaign.args[:campaign_id]).first
81
+ assert_not_nil campaign
82
+ assert campaign.is_a?(SklikApi::Campaign), "return SklikApi::Campaign"
83
+ end
84
+
85
+ should "return valid to_hash" do
86
+ campaigns = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id])
87
+ assert_equal campaigns.size, 1, "Find should return array containing one campaign"
88
+ campaign = campaigns.first
89
+ campaign_hash = campaign.to_hash
90
+ assert_equal campaign_hash[:ad_groups].size, 0, "Campaign should have 0 adgroups"
91
+ end
92
+
93
+ should "be created with right parameters" do
94
+ assert_equal @campaign.args[:status], :running, "Must be running"
95
+
96
+ campaigns = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id])
97
+ campaign_hash = campaigns.first.to_hash
98
+
99
+ assert_equal campaign_hash[:campaign_id], @campaign.args[:campaign_id], "campaign id should be same"
100
+ assert_equal campaign_hash[:status], :running , "campaign should be running"
101
+ assert_equal campaign_hash[:budget].to_f, @only_campaign_hash[:budget].to_f, "budgets should be same"
102
+ assert_equal campaign_hash[:name], @only_campaign_hash[:name], "campaign name should be same"
103
+ assert_equal campaign_hash[:ad_groups].size, 0, "campaign ad_groups should have 0 adgroups"
104
+ end
105
+
106
+ should "be created and updated by changing arguments" do
107
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
108
+ new_name = "Test of updated campaign name- #{Time.now.strftime("%Y.%m.%d %H:%M:%S")} - only"
109
+ campaign.args[:name] = new_name
110
+ campaign.save
111
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
112
+ assert_equal campaign_hash[:name], new_name, "campaign name should be same"
113
+
114
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
115
+ campaign.args[:status] = :paused
116
+ campaign.save
117
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
118
+ assert_equal campaign_hash[:status], :paused, "campaign should be paused"
119
+
120
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
121
+ campaign.args[:status] = :stopped
122
+ campaign.save
123
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
124
+ assert_equal campaign.args[:status], :stopped, "campaign should be stopped"
125
+
126
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
127
+ campaign.args[:status] = :paused
128
+ campaign.save
129
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
130
+ assert_equal campaign.args[:status], :paused, "campaign should be paused"
131
+ end
132
+
133
+ should "be created and updated by update method" do
134
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
135
+ new_name = "Test of updated campaign name- #{Time.now.strftime("%Y.%m.%d %H:%M:%S")}"
136
+ assert campaign.update(name: new_name), "Should update name"
137
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
138
+ assert_equal campaign_hash[:name], new_name, "campaign name should be same"
139
+
140
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
141
+ assert campaign.update(status: :paused), "should update status to paused"
142
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
143
+ assert_equal campaign_hash[:status], :paused, "campaign should be paused"
144
+
145
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
146
+ assert campaign.update(status: :stopped), "should update status to stopped"
147
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
148
+ assert_equal campaign.args[:status], :stopped, "campaign should be stopped"
149
+
150
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
151
+ assert campaign.update(status: :paused), "should update status to paused"
152
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
153
+ assert_equal campaign.args[:status], :paused, "campaign should be paused"
154
+ end
155
+ end
156
+
157
+ end
158
+
159
+ context "full creation" do
160
+
161
+ setup do
162
+ @test_campaign_hash = {
163
+ :name => "hustokrutě megapřísně - #{Time.now.strftime("%Y.%m.%d %H:%M:%S.%L")}",
164
+ :status => :running,
165
+ :cpc => 3.5,
166
+ :budget => 15.0,
167
+ :customer_id => 192495,
168
+ :excluded_search_services => [2,3,4,5,6,7,8], #choose only seznam.cz
169
+ :network_setting => {
170
+ :content => true,
171
+ :search => true
172
+ },
173
+
174
+ :ad_groups => [
175
+ {
176
+ :name => "my adgroup name",
177
+ :ads => [
178
+ {
179
+ :headline => "Super headline",
180
+ :description1 => "Trying to do ",
181
+ :description2 => "best description ever",
182
+ :display_url => "bartas.cz",
183
+ :url => "http://www.bartas.cz"
184
+ }
185
+ ],
186
+ :keywords => [
187
+ "\"some funny keyword\"",
188
+ "[myphrase keyword]",
189
+ "mybroad keyword for me",
190
+ "test of diarcritics âô"
191
+ ]
192
+ },
193
+ {
194
+ :name => "hustokrutě mazácká adgroupa",
195
+ :ads => [
196
+ {
197
+ :headline => "Super bombasitcký",
198
+ :description1 => "Trying to do ",
199
+ :description2 => "best description ever",
200
+ :display_url => "bartas.cz",
201
+ :url => "http://www.bartas.cz?utm_adgroup=4"
202
+ }
203
+ ],
204
+ :keywords => [
205
+ "\"some funny keyword\"",
206
+ "[myphrase keyword]",
207
+ "-negative broad keyword",
208
+ "test of diarcritics âô",
209
+ "dokonalý kw"
210
+ ]
211
+ }
212
+ ]
213
+ }
214
+ @campaign = SklikApi::Campaign.new(@test_campaign_hash)
215
+ end
216
+
217
+ should "be initialized" do
218
+ assert_nothing_raised do
219
+ SklikApi::Campaign.new(@test_campaign_hash)
220
+ end
221
+ end
222
+
223
+ should "have hash stored inside" do
224
+ assert_equal @campaign.args, @test_campaign_hash
225
+ end
226
+
227
+ context "create" do
228
+ setup do
229
+ @campaign = SklikApi::Campaign.new(@test_campaign_hash)
230
+ unless @campaign.save
231
+ puts "ERROR: \n #{@campaign.errors.join("\n")}"
232
+ end
233
+ end
234
+
235
+ should "return stats" do
236
+ assert_nothing_raised do
237
+ SklikApi::Campaign.find(@campaign.args[:campaign_id]).get_stats Date.today, Date.today
238
+ end
239
+ end
240
+
241
+
242
+ should "return valid to_hash" do
243
+ campaigns = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id])
244
+ assert_equal campaigns.size, 1, "Find should return array containing one campaign"
245
+ campaign = campaigns.first
246
+ campaign_hash = campaign.to_hash
247
+ assert_equal campaign_hash[:ad_groups].size, @test_campaign_hash[:ad_groups].size, "Campaign should have right adgroup count"
248
+ assert_equal campaign_hash[:ad_groups].inject(0){|i,o| i + o[:keywords].size}, @test_campaign_hash[:ad_groups].inject(0){|i,o| i + o[:keywords].size}, "Campaign should have right keywords count"
249
+ assert_equal campaign_hash[:ad_groups].inject(0){|i,o| i + o[:ads].size}, @test_campaign_hash[:ad_groups].inject(0){|i,o| i + o[:ads].size}, "Campaign should have right ads count"
250
+ end
251
+
252
+ should "be created with right parameters" do
253
+
254
+ assert_equal @campaign.args[:status], :running, "Must be running"
255
+
256
+ campaigns = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id])
257
+ campaign_hash = campaigns.first.to_hash
258
+
259
+ assert_equal campaign_hash[:campaign_id], @campaign.args[:campaign_id], "campaign id should be same"
260
+ assert_equal campaign_hash[:status], :running , "campaign should be running"
261
+ assert_equal campaign_hash[:budget].to_f, @test_campaign_hash[:budget].to_f, "budgets should be same"
262
+ assert_equal campaign_hash[:name], @test_campaign_hash[:name], "campaign name should be same"
263
+ assert_equal campaign_hash[:ad_groups].size, @test_campaign_hash[:ad_groups].size, "campaign ad_groups should have same count"
264
+ end
265
+
266
+ should "be created and updated by changing arguments" do
267
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
268
+ new_name = "Test of updated campaign name- #{Time.now.strftime("%Y.%m.%d %H:%M:%S")}"
269
+ campaign.args[:name] = new_name
270
+ campaign.save
271
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
272
+ assert_equal campaign_hash[:name], new_name, "campaign name should be same"
273
+
274
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
275
+ campaign.args[:status] = :paused
276
+ campaign.save
277
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
278
+ assert_equal campaign_hash[:status], :paused, "campaign should be paused"
279
+
280
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
281
+ campaign.args[:status] = :stopped
282
+ campaign.save
283
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
284
+ assert_equal campaign.args[:status], :stopped, "campaign should be stopped"
285
+
286
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
287
+ campaign.args[:status] = :paused
288
+ campaign.save
289
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
290
+ assert_equal campaign.args[:status], :paused, "campaign should be paused"
291
+ end
292
+
293
+ should "be created and updated by update method" do
294
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
295
+ new_name = "Test of updated campaign name- #{Time.now.strftime("%Y.%m.%d %H:%M:%S")}"
296
+ assert campaign.update(name: new_name), "Should update name"
297
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
298
+ assert_equal campaign_hash[:name], new_name, "campaign name should be same"
299
+
300
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
301
+ assert campaign.update(status: :paused), "should update status to paused"
302
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
303
+ assert_equal campaign_hash[:status], :paused, "campaign should be paused"
304
+
305
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
306
+ assert campaign.update(status: :stopped), "should update status to stopped"
307
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
308
+ assert_equal campaign.args[:status], :stopped, "campaign should be stopped"
309
+
310
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
311
+ assert campaign.update(status: :paused), "should update status to paused"
312
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
313
+ assert_equal campaign.args[:status], :paused, "campaign should be paused"
314
+ end
315
+ end
316
+ end
317
+ end
318
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'helper'
3
+ class ClientTest < Test::Unit::TestCase
4
+ context "Client" do
5
+
6
+ should "be initialized" do
7
+ assert_nothing_raised do
8
+ SklikApi::Client.new()
9
+ end
10
+ end
11
+
12
+ should "found all Clients" do
13
+ assert_equal SklikApi::Client.find().size, 2
14
+ end
15
+
16
+ should "be found by id" do
17
+ assert_equal SklikApi::Client.find(:customer_id => 192107).first.args[:email], "test-ataxo@seznam.cz"
18
+ assert_equal SklikApi::Client.find(:customer_id => 192495).first.args[:email], "test3-ataxo@seznam.cz"
19
+ end
20
+
21
+ should "be found by email" do
22
+ assert_equal SklikApi::Client.find(:email => "test-ataxo@seznam.cz").first.args[:customer_id], 192107
23
+ assert_equal SklikApi::Client.find(:email => "test3-ataxo@seznam.cz").first.args[:customer_id], 192495
24
+ end
25
+
26
+ end
27
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sklik-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-21 00:00:00.000000000 Z
12
+ date: 2013-06-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -275,12 +275,20 @@ files:
275
275
  - lib/sklik-api/campaign_parts/keyword.rb
276
276
  - lib/sklik-api/client.rb
277
277
  - lib/sklik-api/connection.rb
278
+ - lib/sklik-api/exceptions.rb
278
279
  - lib/sklik-api/sklik_object.rb
279
280
  - lib/sklik-api/xmlrpc_setup.rb
280
281
  - sklik-api.gemspec
281
282
  - test/fake_web.rb
282
283
  - test/helper.rb
283
- - test/unit/campaign.rb
284
+ - test/integration/adgroup_test.rb
285
+ - test/integration/adtext_test.rb
286
+ - test/integration/campaign_test.rb
287
+ - test/integration/errors_test.rb
288
+ - test/integration/keyword_test.rb
289
+ - test/unit/adgroup_test.rb
290
+ - test/unit/campaign_test.rb
291
+ - test/unit/client_test.rb
284
292
  homepage: http://github.com/ondrejbartas/sklik-api
285
293
  licenses:
286
294
  - MIT
@@ -296,7 +304,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
296
304
  version: '0'
297
305
  segments:
298
306
  - 0
299
- hash: -3350698988788175861
307
+ hash: 3135873328890994326
300
308
  required_rubygems_version: !ruby/object:Gem::Requirement
301
309
  none: false
302
310
  requirements: