big_door 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +72 -0
  3. data/README.rdoc +170 -0
  4. data/Rakefile +32 -0
  5. data/autotest/discover.rb +1 -0
  6. data/big_door.gemspec +56 -0
  7. data/bin/example.rb +93 -0
  8. data/features/resources/attribute.feature +41 -0
  9. data/features/resources/currency_type.feature +12 -0
  10. data/features/resources/end_user.feature +92 -0
  11. data/features/resources/named_award_collection.feature +42 -0
  12. data/features/resources/named_good_collection.feature +40 -0
  13. data/features/resources/named_level_collection.feature +44 -0
  14. data/features/resources/url.feature +41 -0
  15. data/features/step_definitions/resources_steps.rb +370 -0
  16. data/features/support/env.rb +9 -0
  17. data/lib/big_door/attribute.rb +21 -0
  18. data/lib/big_door/award.rb +24 -0
  19. data/lib/big_door/client.rb +281 -0
  20. data/lib/big_door/currency.rb +26 -0
  21. data/lib/big_door/currency_balance.rb +27 -0
  22. data/lib/big_door/currency_type.rb +29 -0
  23. data/lib/big_door/end_user.rb +32 -0
  24. data/lib/big_door/good.rb +32 -0
  25. data/lib/big_door/leaderboard.rb +41 -0
  26. data/lib/big_door/level.rb +25 -0
  27. data/lib/big_door/named_award.rb +24 -0
  28. data/lib/big_door/named_award_collection.rb +21 -0
  29. data/lib/big_door/named_good.rb +24 -0
  30. data/lib/big_door/named_good_collection.rb +22 -0
  31. data/lib/big_door/named_level.rb +26 -0
  32. data/lib/big_door/named_level_collection.rb +23 -0
  33. data/lib/big_door/named_transaction.rb +21 -0
  34. data/lib/big_door/named_transaction_group.rb +74 -0
  35. data/lib/big_door/profile.rb +28 -0
  36. data/lib/big_door/resource.rb +204 -0
  37. data/lib/big_door/resource_end_user.rb +84 -0
  38. data/lib/big_door/resource_with_association.rb +37 -0
  39. data/lib/big_door/resource_with_parent.rb +43 -0
  40. data/lib/big_door/url.rb +21 -0
  41. data/lib/big_door.rb +40 -0
  42. data/script/console +10 -0
  43. data/script/destroy +14 -0
  44. data/script/generate +14 -0
  45. data/spec/big_door/attribute_spec.rb +18 -0
  46. data/spec/big_door/award_spec.rb +19 -0
  47. data/spec/big_door/client_spec.rb +163 -0
  48. data/spec/big_door/currency_balance_spec.rb +14 -0
  49. data/spec/big_door/currency_spec.rb +81 -0
  50. data/spec/big_door/currency_type_spec.rb +21 -0
  51. data/spec/big_door/end_user_spec.rb +23 -0
  52. data/spec/big_door/good_spec.rb +14 -0
  53. data/spec/big_door/leaderboard_spec.rb +15 -0
  54. data/spec/big_door/level_spec.rb +19 -0
  55. data/spec/big_door/named_award_collection_spec.rb +23 -0
  56. data/spec/big_door/named_award_spec.rb +23 -0
  57. data/spec/big_door/named_good_collection_spec.rb +23 -0
  58. data/spec/big_door/named_good_spec.rb +23 -0
  59. data/spec/big_door/named_level_collection_spec.rb +23 -0
  60. data/spec/big_door/named_level_spec.rb +24 -0
  61. data/spec/big_door/named_transaction_group_spec.rb +29 -0
  62. data/spec/big_door/named_transaction_spec.rb +23 -0
  63. data/spec/big_door/profile_spec.rb +19 -0
  64. data/spec/big_door/resource_end_user_spec.rb +22 -0
  65. data/spec/big_door/resource_spec.rb +22 -0
  66. data/spec/big_door/resource_with_association_spec.rb +23 -0
  67. data/spec/big_door/resource_with_parent_spec.rb +22 -0
  68. data/spec/big_door/url_spec.rb +23 -0
  69. data/spec/spec.opts +1 -0
  70. data/spec/spec_helper.rb +17 -0
  71. data/tasks/cucumber.rake +5 -0
  72. data/tasks/rspec.rake +29 -0
  73. metadata +263 -0
data/History.txt ADDED
@@ -0,0 +1,4 @@
1
+ === 0.0.1 2010-12-14
2
+
3
+ * 1 major enhancement:
4
+ * Initial release
data/Manifest.txt ADDED
@@ -0,0 +1,72 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.rdoc
4
+ Rakefile
5
+ autotest/discover.rb
6
+ big_door.gemspec
7
+ bin/example.rb
8
+ features/resources/attribute.feature
9
+ features/resources/currency_type.feature
10
+ features/resources/end_user.feature
11
+ features/resources/named_award_collection.feature
12
+ features/resources/named_good_collection.feature
13
+ features/resources/named_level_collection.feature
14
+ features/resources/url.feature
15
+ features/step_definitions/resources_steps.rb
16
+ features/support/env.rb
17
+ lib/big_door.rb
18
+ lib/big_door/attribute.rb
19
+ lib/big_door/award.rb
20
+ lib/big_door/client.rb
21
+ lib/big_door/currency.rb
22
+ lib/big_door/currency_balance.rb
23
+ lib/big_door/currency_type.rb
24
+ lib/big_door/end_user.rb
25
+ lib/big_door/good.rb
26
+ lib/big_door/leaderboard.rb
27
+ lib/big_door/level.rb
28
+ lib/big_door/named_award.rb
29
+ lib/big_door/named_award_collection.rb
30
+ lib/big_door/named_good.rb
31
+ lib/big_door/named_good_collection.rb
32
+ lib/big_door/named_level.rb
33
+ lib/big_door/named_level_collection.rb
34
+ lib/big_door/named_transaction.rb
35
+ lib/big_door/named_transaction_group.rb
36
+ lib/big_door/profile.rb
37
+ lib/big_door/resource.rb
38
+ lib/big_door/resource_end_user.rb
39
+ lib/big_door/resource_with_association.rb
40
+ lib/big_door/resource_with_parent.rb
41
+ lib/big_door/url.rb
42
+ script/console
43
+ script/destroy
44
+ script/generate
45
+ spec/big_door/attribute_spec.rb
46
+ spec/big_door/award_spec.rb
47
+ spec/big_door/client_spec.rb
48
+ spec/big_door/currency_balance_spec.rb
49
+ spec/big_door/currency_spec.rb
50
+ spec/big_door/currency_type_spec.rb
51
+ spec/big_door/end_user_spec.rb
52
+ spec/big_door/good_spec.rb
53
+ spec/big_door/leaderboard_spec.rb
54
+ spec/big_door/level_spec.rb
55
+ spec/big_door/named_award_collection_spec.rb
56
+ spec/big_door/named_award_spec.rb
57
+ spec/big_door/named_good_collection_spec.rb
58
+ spec/big_door/named_good_spec.rb
59
+ spec/big_door/named_level_collection_spec.rb
60
+ spec/big_door/named_level_spec.rb
61
+ spec/big_door/named_transaction_group_spec.rb
62
+ spec/big_door/named_transaction_spec.rb
63
+ spec/big_door/profile_spec.rb
64
+ spec/big_door/resource_end_user_spec.rb
65
+ spec/big_door/resource_spec.rb
66
+ spec/big_door/resource_with_association_spec.rb
67
+ spec/big_door/resource_with_parent_spec.rb
68
+ spec/big_door/url_spec.rb
69
+ spec/spec.opts
70
+ spec/spec_helper.rb
71
+ tasks/cucumber.rake
72
+ tasks/rspec.rake
data/README.rdoc ADDED
@@ -0,0 +1,170 @@
1
+ = bigdoorkit
2
+
3
+ * http://bitbucket.org/AlexeyDemidov/bigdoorkit-ruby/
4
+
5
+ == DESCRIPTION:
6
+
7
+ Client library for the BigDoor REST API (http://bigdoor.com). This package
8
+ provides both low-level procedural (BigDoor::Client) and object-oriented
9
+ (BigDoor::Resource object hierarchy) interfaces to BigDoor REST API.
10
+
11
+ == FEATURES/PROBLEMS:
12
+
13
+ See documentation for BigDoor REST API at http://publisher.bigdoor.com/
14
+
15
+ == SYNOPSIS:
16
+
17
+ require 'rubygems'
18
+ require 'bigdoor'
19
+
20
+ # see API Keys http://publisher.bigdoor.com/
21
+ APP_KEY = '28d3da80bf36fad415ab57b3130c6cb6'
22
+ APP_SECRET = 'B66F956ED83AE218612CB0FBAC2EF01C'
23
+
24
+ client = BigDoor::Client.new( APP_SECRET, APP_KEY )
25
+ currency = BigDoor::Currency.new({
26
+ 'pub_title' => 'Coins',
27
+ 'pub_description' => 'an example of the Purchase currency type',
28
+ 'end_user_title' => 'Coins',
29
+ 'end_user_description' => 'can only be purchased',
30
+ 'currency_type_id' => '1',
31
+ 'currency_type_title' => 'Purchase',
32
+ 'exchange_rate' => 900.00,
33
+ 'relative_weight' => 2,
34
+ })
35
+
36
+ currency.save( client )
37
+
38
+ currency.load( client ) # reload object
39
+
40
+ currency.pub_title = 'Bank Notes'
41
+ currency.save( client ) # update object keeping same ID
42
+
43
+ currency_id = currency.resource_id
44
+ currency.load( client, currency_id) # load object by explictly defined id
45
+
46
+ nlc = BigDoor::NamedLevelCollection.new({
47
+ 'pub_title' => 'Test Named Level Collection',
48
+ 'pub_description' => 'test description',
49
+ 'end_user_title' => 'test user title',
50
+ 'end_user_description' => 'test user description',
51
+ 'currency_id' => currency.resource_id,
52
+ })
53
+
54
+ nlc.save( client )
55
+
56
+ nl = BigDoor::NamedLevel.new({
57
+ 'pub_title' => 'Named Level pub title',
58
+ 'pub_description' => 'Named Level pub description',
59
+ 'end_user_title' => 'Named Level end user title',
60
+ 'end_user_description' => 'Named Level end user description',
61
+ 'relative_weight' => 1,
62
+ 'threshold' => 10,
63
+ 'named_level_collection_id' => nlc.resource_id,
64
+ })
65
+ nl.save( client )
66
+
67
+ ntg = BigDoor::NamedTransactionGroup.new({
68
+ 'pub_title' => 'Test Transaction Group',
69
+ 'pub_description' => 'test description',
70
+ 'end_user_title' => 'end user title',
71
+ 'end_user_description' => 'end user description',
72
+ 'end_user_cap' => '-1',
73
+ 'end_user_cap_interval' => '-1',
74
+ })
75
+ ntg.save( client )
76
+
77
+ nt = BigDoor::NamedTransaction.new({
78
+ 'pub_title' => 'Test Transaction',
79
+ 'pub_description' => 'test description',
80
+ 'end_user_title' => 'end user title',
81
+ 'end_user_description' => 'end user description',
82
+ 'currency_id' => currency.resource_id,
83
+ 'amount' => '50',
84
+ 'default_amount' => '50',
85
+ })
86
+ nt.save( client )
87
+
88
+ ntg.associate_with( nt, client, 1 )
89
+
90
+ username = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join
91
+
92
+ end_user = BigDoor::EndUser.new({
93
+ 'end_user_login' => username
94
+ })
95
+ end_user.save( client )
96
+
97
+ ntg.execute( username, { 'good_receiver' => username }, client )
98
+
99
+ # cleanup
100
+ currency.delete( client )
101
+ ntg.delete( client )
102
+ nt.delete( client )
103
+ nl.delete( client )
104
+ nlc.delete( client )
105
+ end_user.delete( client )
106
+
107
+ == REQUIREMENTS:
108
+
109
+ * rest-client
110
+ * uuidtools
111
+ * addressable
112
+ * json
113
+
114
+ == INSTALL:
115
+
116
+ The <code>bigdoorkit</code> is distributed as a RubyGem and is available
117
+ immediately after installation.
118
+
119
+ gem install bigdoorkit
120
+
121
+ Alternately, download the gem and install manually.
122
+
123
+
124
+ == TESTS:
125
+
126
+ Tests requre rspec 2.x and cucumber gems installed. To access BigDoor API you
127
+ need to get API keys ( see http://publisher.bigdoor.com/ site) - place them
128
+ into appropriate environment variable in you shell - BIGDOOR_API_KEY and
129
+ BIGDOOR_API_SECRET.
130
+
131
+ WARNING: Test suite was initially designed to be run against empty account
132
+ without any objects created (except predefined Attributes and CurrencyTypes)
133
+ and there is no checks for existing objects. While tests shouldn't touch or
134
+ remove any objects other than those they have created, there is still
135
+ possibility of bugs, so be careful running these tests against account with
136
+ live economy.
137
+
138
+ == LICENSE:
139
+
140
+ BigDoor Open License
141
+ Copyright (c) 2010 BigDoor Media, Inc.
142
+
143
+ Permission is hereby granted, free of charge, to any person obtaining a copy
144
+ of this software and associated documentation files (the "Software"), to deal
145
+ in the Software without restriction, including without limitation the rights to
146
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
147
+ of the Software, and to permit persons to whom the Software is furnished to
148
+ do so, subject to the following conditions:
149
+
150
+ - This copyright notice and all listed conditions and disclaimers shall
151
+ be included in all copies and portions of the Software including any
152
+ redistributions in binary form.
153
+
154
+ - The Software connects with the BigDoor API (api.bigdoor.com) and
155
+ all uses, copies, modifications, derivative works, mergers, publications,
156
+ distributions, sublicenses and sales shall also connect to the BigDoor API and
157
+ shall not be used to connect with any API, software or service that competes
158
+ with BigDoor's API, software and services.
159
+
160
+ - Except as contained in this notice, this license does not grant you rights to
161
+ use BigDoor Media, Inc. or any contributors' name, logo, or trademarks.
162
+
163
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
164
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
165
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
166
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
167
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
168
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
169
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
170
+ OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ require 'rubygems'
2
+ gem 'hoe', '>= 2.1.0'
3
+ require 'hoe'
4
+ require 'fileutils'
5
+ require 'metric_fu'
6
+ require './lib/big_door'
7
+
8
+ Hoe.plugin :newgem
9
+ # Hoe.plugin :website
10
+ #Hoe.plugin :cucumberfeatures
11
+
12
+ # Generate all the Rake tasks
13
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
14
+ $hoe = Hoe.spec 'big_door' do
15
+ self.developer 'Alex L. Demidov', 'alexeydemidov@gmail.com'
16
+ # self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
17
+ # self.rubyforge_name = self.name # TODO this is default value
18
+ self.test_globs = ['spec/**/*.rb']
19
+ extra_deps << ['rest-client', '~> 1.0']
20
+ extra_deps << ['addressable', '~> 2.0']
21
+ extra_deps << ['json', '~> 1.0']
22
+ extra_deps << ['uuidtools', '~> 2.0']
23
+ extra_dev_deps << ['cucumber', '~> 0.10']
24
+ extra_dev_deps << ['rspec', '~> 2.4']
25
+ end
26
+
27
+ require 'newgem/tasks'
28
+ Dir['tasks/**/*.rake'].each { |t| load t }
29
+
30
+ # TODO - want other tests/tasks run by default? Add them to the list
31
+ # remove_task :default
32
+ # task :default => [:spec, :features]
@@ -0,0 +1 @@
1
+ Autotest.add_discovery { "rspec2" }
data/big_door.gemspec ADDED
@@ -0,0 +1,56 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{big_door}
5
+ s.version = "0.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Alex L. Demidov"]
9
+ s.date = %q{2011-01-26}
10
+ s.default_executable = %q{example.rb}
11
+ s.description = %q{Client library for the BigDoor REST API (http://bigdoor.com). This package
12
+ provides both low-level procedural (BigDoor::Client) and object-oriented
13
+ (BigDoor::Resource object hierarchy) interfaces to BigDoor REST API.}
14
+ s.email = ["alexeydemidov@gmail.com"]
15
+ s.executables = ["example.rb"]
16
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt"]
17
+ s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "autotest/discover.rb", "big_door.gemspec", "bin/example.rb", "features/resources/attribute.feature", "features/resources/currency_type.feature", "features/resources/end_user.feature", "features/resources/named_award_collection.feature", "features/resources/named_good_collection.feature", "features/resources/named_level_collection.feature", "features/resources/url.feature", "features/step_definitions/resources_steps.rb", "features/support/env.rb", "lib/big_door.rb", "lib/big_door/attribute.rb", "lib/big_door/award.rb", "lib/big_door/client.rb", "lib/big_door/currency.rb", "lib/big_door/currency_balance.rb", "lib/big_door/currency_type.rb", "lib/big_door/end_user.rb", "lib/big_door/good.rb", "lib/big_door/leaderboard.rb", "lib/big_door/level.rb", "lib/big_door/named_award.rb", "lib/big_door/named_award_collection.rb", "lib/big_door/named_good.rb", "lib/big_door/named_good_collection.rb", "lib/big_door/named_level.rb", "lib/big_door/named_level_collection.rb", "lib/big_door/named_transaction.rb", "lib/big_door/named_transaction_group.rb", "lib/big_door/profile.rb", "lib/big_door/resource.rb", "lib/big_door/resource_end_user.rb", "lib/big_door/resource_with_association.rb", "lib/big_door/resource_with_parent.rb", "lib/big_door/url.rb", "script/console", "script/destroy", "script/generate", "spec/big_door/attribute_spec.rb", "spec/big_door/award_spec.rb", "spec/big_door/client_spec.rb", "spec/big_door/currency_balance_spec.rb", "spec/big_door/currency_spec.rb", "spec/big_door/currency_type_spec.rb", "spec/big_door/end_user_spec.rb", "spec/big_door/good_spec.rb", "spec/big_door/leaderboard_spec.rb", "spec/big_door/level_spec.rb", "spec/big_door/named_award_collection_spec.rb", "spec/big_door/named_award_spec.rb", "spec/big_door/named_good_collection_spec.rb", "spec/big_door/named_good_spec.rb", "spec/big_door/named_level_collection_spec.rb", "spec/big_door/named_level_spec.rb", "spec/big_door/named_transaction_group_spec.rb", "spec/big_door/named_transaction_spec.rb", "spec/big_door/profile_spec.rb", "spec/big_door/resource_end_user_spec.rb", "spec/big_door/resource_spec.rb", "spec/big_door/resource_with_association_spec.rb", "spec/big_door/resource_with_parent_spec.rb", "spec/big_door/url_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/cucumber.rake", "tasks/rspec.rake"]
18
+ s.homepage = %q{http://bitbucket.org/AlexeyDemidov/bigdoorkit-ruby/}
19
+ s.license = %q{restricted}
20
+ s.rdoc_options = ["--main", "README.rdoc"]
21
+ s.require_paths = ["lib"]
22
+ s.rubyforge_project = %q{big_door}
23
+ s.rubygems_version = %q{1.4.2}
24
+ s.summary = %q{Client library for the BigDoor REST API (http://bigdoor.com)}
25
+ s.test_files = ["spec/big_door/attribute_spec.rb", "spec/big_door/award_spec.rb", "spec/big_door/client_spec.rb", "spec/big_door/currency_balance_spec.rb", "spec/big_door/currency_spec.rb", "spec/big_door/currency_type_spec.rb", "spec/big_door/end_user_spec.rb", "spec/big_door/good_spec.rb", "spec/big_door/leaderboard_spec.rb", "spec/big_door/level_spec.rb", "spec/big_door/named_award_collection_spec.rb", "spec/big_door/named_award_spec.rb", "spec/big_door/named_good_collection_spec.rb", "spec/big_door/named_good_spec.rb", "spec/big_door/named_level_collection_spec.rb", "spec/big_door/named_level_spec.rb", "spec/big_door/named_transaction_group_spec.rb", "spec/big_door/named_transaction_spec.rb", "spec/big_door/profile_spec.rb", "spec/big_door/resource_end_user_spec.rb", "spec/big_door/resource_spec.rb", "spec/big_door/resource_with_association_spec.rb", "spec/big_door/resource_with_parent_spec.rb", "spec/big_door/url_spec.rb", "spec/spec_helper.rb"]
26
+
27
+ if s.respond_to? :specification_version then
28
+ s.specification_version = 3
29
+
30
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
31
+ s.add_runtime_dependency(%q<rest-client>, ["~> 1.0"])
32
+ s.add_runtime_dependency(%q<addressable>, ["~> 2.0"])
33
+ s.add_runtime_dependency(%q<json>, ["~> 1.0"])
34
+ s.add_runtime_dependency(%q<uuidtools>, ["~> 2.0"])
35
+ s.add_development_dependency(%q<cucumber>, ["~> 0.10"])
36
+ s.add_development_dependency(%q<rspec>, ["~> 2.4"])
37
+ s.add_development_dependency(%q<hoe>, [">= 2.8.0"])
38
+ else
39
+ s.add_dependency(%q<rest-client>, ["~> 1.0"])
40
+ s.add_dependency(%q<addressable>, ["~> 2.0"])
41
+ s.add_dependency(%q<json>, ["~> 1.0"])
42
+ s.add_dependency(%q<uuidtools>, ["~> 2.0"])
43
+ s.add_dependency(%q<cucumber>, ["~> 0.10"])
44
+ s.add_dependency(%q<rspec>, ["~> 2.4"])
45
+ s.add_dependency(%q<hoe>, [">= 2.8.0"])
46
+ end
47
+ else
48
+ s.add_dependency(%q<rest-client>, ["~> 1.0"])
49
+ s.add_dependency(%q<addressable>, ["~> 2.0"])
50
+ s.add_dependency(%q<json>, ["~> 1.0"])
51
+ s.add_dependency(%q<uuidtools>, ["~> 2.0"])
52
+ s.add_dependency(%q<cucumber>, ["~> 0.10"])
53
+ s.add_dependency(%q<rspec>, ["~> 2.4"])
54
+ s.add_dependency(%q<hoe>, [">= 2.8.0"])
55
+ end
56
+ end
data/bin/example.rb ADDED
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+
3
+
4
+ require 'rubygems'
5
+ require 'big_door'
6
+ require './lib/big_door.rb'
7
+
8
+ # see API Keys http://publisher.bigdoor.com/
9
+ APP_KEY = ENV['BIGDOOR_API_KEY']
10
+ APP_SECRET = ENV['BIGDOOR_API_SECRET']
11
+
12
+ client = BigDoor::Client.new( APP_SECRET, APP_KEY )
13
+ currency = BigDoor::Currency.new({
14
+ 'pub_title' => 'Coins',
15
+ 'pub_description' => 'an example of the Purchase currency type',
16
+ 'end_user_title' => 'Coins',
17
+ 'end_user_description' => 'can only be purchased',
18
+ 'currency_type_id' => '1',
19
+ 'currency_type_title' => 'Purchase',
20
+ 'exchange_rate' => 900.00,
21
+ 'relative_weight' => 2,
22
+ })
23
+
24
+ currency.save( client )
25
+
26
+ currency.load( client ) # reload object
27
+
28
+ currency.pub_title = 'Bank Notes'
29
+ currency.save( client ) # updates object keeping same ID
30
+
31
+ currency_id = currency.resource_id
32
+ currency.load( client, currency_id) # load object by explictly defined id
33
+
34
+ nlc = BigDoor::NamedLevelCollection.new({
35
+ 'pub_title' => 'Test Named Level Collection',
36
+ 'pub_description' => 'test description',
37
+ 'end_user_title' => 'test user title',
38
+ 'end_user_description' => 'test user description',
39
+ 'currency_id' => currency.resource_id,
40
+ })
41
+
42
+ nlc.save( client )
43
+
44
+ nl = BigDoor::NamedLevel.new({
45
+ 'pub_title' => 'Named Level pub title',
46
+ 'pub_description' => 'Named Level pub description',
47
+ 'end_user_title' => 'Named Level end user title',
48
+ 'end_user_description' => 'Named Level end user description',
49
+ 'relative_weight' => 1,
50
+ 'threshold' => 10,
51
+ 'named_level_collection_id' => nlc.resource_id,
52
+ })
53
+ nl.save( client )
54
+
55
+ ntg = BigDoor::NamedTransactionGroup.new({
56
+ 'pub_title' => 'Test Transaction Group',
57
+ 'pub_description' => 'test description',
58
+ 'end_user_title' => 'end user title',
59
+ 'end_user_description' => 'end user description',
60
+ 'end_user_cap' => '-1',
61
+ 'end_user_cap_interval' => '-1',
62
+ })
63
+ ntg.save( client )
64
+
65
+ nt = BigDoor::NamedTransaction.new({
66
+ 'pub_title' => 'Test Transaction',
67
+ 'pub_description' => 'test description',
68
+ 'end_user_title' => 'end user title',
69
+ 'end_user_description' => 'end user description',
70
+ 'currency_id' => currency.resource_id,
71
+ 'amount' => '50',
72
+ 'default_amount' => '50',
73
+ })
74
+ nt.save( client )
75
+
76
+ ntg.associate_with( nt, client, 1 )
77
+
78
+ username = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join
79
+
80
+ end_user = BigDoor::EndUser.new({
81
+ 'end_user_login' => username
82
+ })
83
+ end_user.save( client )
84
+
85
+ ntg.execute( username, { 'good_receiver' => username }, client )
86
+
87
+ # cleanup
88
+ currency.delete( client )
89
+ ntg.delete( client )
90
+ nt.delete( client )
91
+ nl.delete( client )
92
+ nlc.delete( client )
93
+ end_user.delete( client )
@@ -0,0 +1,41 @@
1
+ @passing
2
+ Feature: attribute API endpoint
3
+
4
+ In order to operate with attribute objects
5
+ As object-oriented API client user
6
+ I want to use Attribute object
7
+
8
+ @remote
9
+ Scenario: get list of all Attribute
10
+ Given low-level client
11
+ When I call it to list all "Attribute" objects
12
+ Then I should get list of "Attribute" objects
13
+
14
+ @local
15
+ Scenario: create a new Attribute
16
+ Given low-level client
17
+ When I create a new "Attribute" object
18
+ Then I should get a "Attribute" object
19
+
20
+ @remote
21
+ Scenario: create and save a new Attribute
22
+ Given low-level client
23
+ When I create a new "Attribute" object
24
+ And assign "Attribute" data to object
25
+ And save object
26
+ Then I should get a "Attribute" object
27
+ And object should has resource_id defined
28
+ And I should be able to remove object
29
+
30
+ @remote
31
+ Scenario: create, save and associate a new Attribute with Currency
32
+ Given low-level client
33
+ And some Currency
34
+ When I create a new "Attribute" object
35
+ And assign "Attribute" data to object
36
+ And save object
37
+ And associate "Attribute" with "Currency"
38
+ Then I should get a "Attribute" object
39
+ And object should has resource_id defined
40
+ And I should be able to remove object
41
+ And Currency should be removed
@@ -0,0 +1,12 @@
1
+ @passing
2
+ Feature: currency_type API endpoint shows list of currency types
3
+
4
+ In order to known which currency types are available
5
+ As object-oriented API client user
6
+ I want to get list of currency types
7
+
8
+ @remote
9
+ Scenario:
10
+ Given low-level client
11
+ When I call it to list all "CurrencyType" objects
12
+ Then I should get list of "CurrencyType" objects
@@ -0,0 +1,92 @@
1
+ @passing
2
+ Feature: end_user API endpoint
3
+
4
+ In order to operate with end users objects
5
+ As object-oriented API client user
6
+ I want to use EndUser object
7
+
8
+ @remote @passing
9
+ Scenario: get list of all EndUser
10
+ Given low-level client
11
+ When I call it to list all "EndUser" objects
12
+ Then I should get list of "EndUser" objects
13
+
14
+ @local @passing
15
+ Scenario: create a new EndUser
16
+ Given low-level client
17
+ When I create a new "EndUser" object
18
+ Then I should get a "EndUser" object
19
+
20
+ @remote @passing
21
+ Scenario: create and save a new EndUser
22
+ Given low-level client
23
+ When I create and save a new "EndUser" object with "random" name
24
+ Then I should get a "EndUser" object
25
+ And I should be able to assign "Profile" to "EndUser"
26
+ And object should has guid defined
27
+ And I should be able to remove object
28
+
29
+ @remote @passing
30
+ Scenario: get CurrencyBalances for EndUsers
31
+ Given low-level client
32
+ And freshly created "EndUser" object with "random" name
33
+ When I call it to list all "CurrencyBalance" objects from "EndUser"
34
+ Then I should get list of all "0" "CurrencyBalance" objects
35
+ And "EndUser" object should be removed
36
+
37
+ @remote @passing
38
+ Scenario: Run Transaction for EndUser
39
+ Given low-level client
40
+ And freshly created "EndUser" object with "random" name
41
+ And some Currency
42
+ And some NamedTransactionGroup with some NamedTransaction
43
+ And some NamedLevelCollection with some NamedLevel
44
+ When I execute NamedTransactionGroup
45
+ And I call it to list all "CurrencyBalance" objects from "EndUser"
46
+ Then I should get list of all "1" "CurrencyBalance" objects
47
+ And I should see Leaderboard
48
+ And "EndUser" object should be removed
49
+ And "NamedTransactionGroup" should be removed
50
+ And "NamedLevelCollection" should be removed
51
+ And Currency should be removed
52
+
53
+ @remote @passing
54
+ Scenario: Run Transaction for EndUser with Level Up
55
+ Given low-level client
56
+ And freshly created "EndUser" object with "random" name
57
+ And some Currency
58
+ And some NamedTransactionGroup with some NamedTransaction
59
+ And some NamedLevelCollection with some NamedLevel
60
+ When I execute NamedTransactionGroup
61
+ And I call it to list all "Level" objects from "EndUser"
62
+ Then I should get list of all "1" "Level" objects
63
+ And "EndUser" object should be removed
64
+ And "NamedTransactionGroup" should be removed
65
+ And "NamedLevelCollection" should be removed
66
+ And Currency should be removed
67
+
68
+ @remote @passing
69
+ Scenario: Assign Award to EndUser
70
+ Given low-level client
71
+ And freshly created "EndUser" object with "random" name
72
+ And some NamedAwardCollection with some NamedAward
73
+ When I assign Award to EndUser
74
+ And I call it to list all "Award" objects from "EndUser"
75
+ Then I should get list of all "1" "Award" objects
76
+ And "EndUser" object should be removed
77
+ And "NamedAwardCollection" should be removed
78
+
79
+ @remote @passing
80
+ Scenario: Run Transaction for EndUser with Good
81
+ Given low-level client
82
+ And freshly created "EndUser" object with "random" name
83
+ And some Currency
84
+ And some NamedGoodCollection with some NamedGood
85
+ And some NamedTransactionGroup with some NamedTransaction with Good
86
+ When I execute NamedTransactionGroup
87
+ And I call it to list all "Good" objects from "EndUser"
88
+ Then I should get list of all "1" "Good" objects
89
+ And "EndUser" object should be removed
90
+ And "NamedGoodCollection" should be removed
91
+ And "NamedTransactionGroup" should be removed
92
+ And Currency should be removed
@@ -0,0 +1,42 @@
1
+ @passing
2
+ Feature: named_award_collection API endpoint
3
+
4
+ In order to operate with named award collections
5
+ As object-oriented API client user
6
+ I want to use NamedAwardCollection object
7
+
8
+ @remote
9
+ Scenario: get list of all NamedAwardCollections
10
+ Given low-level client
11
+ When I call it to list all "NamedAwardCollection" objects
12
+ Then I should get list of "NamedAwardCollection" objects
13
+
14
+ @local
15
+ Scenario: create a new NamedAwardCollection
16
+ Given low-level client
17
+ When I create a new "NamedAwardCollection" object
18
+ Then I should get a "NamedAwardCollection" object
19
+
20
+ @remote
21
+ Scenario: create and save a new NamedAwardCollection
22
+ Given low-level client
23
+ When I create a new "NamedAwardCollection" object
24
+ And assign some NamedAwardCollection data to object
25
+ And save object
26
+ And load object
27
+ And save object
28
+ Then I should get a "NamedAwardCollection" object
29
+ And object should has resource_id defined
30
+ And I should be able to remove object
31
+
32
+ @remote
33
+ Scenario: add NamedAward to NamedAwardCollection
34
+ Given low-level client
35
+ And new empty "NamedAwardCollection" collection
36
+ When I create a new "NamedAward" object
37
+ And assign NamedAward data to object
38
+ And save object
39
+ Then I should get a "NamedAward" object
40
+ And object should has resource_id defined
41
+ And I should be able to remove object
42
+ And collection should be removed too
@@ -0,0 +1,40 @@
1
+ @passing
2
+ Feature: named_good_collection API endpoint
3
+
4
+ In order to operate with named good collections
5
+ As object-oriented API client user
6
+ I want to use NamedGoodCollection object
7
+
8
+ @remote
9
+ Scenario: get list of all NamedGoodCollections
10
+ Given low-level client
11
+ When I call it to list all "NamedGoodCollection" objects
12
+ Then I should get list of "NamedGoodCollection" objects
13
+
14
+ @local
15
+ Scenario: create a new NamedGoodCollection
16
+ Given low-level client
17
+ When I create a new "NamedGoodCollection" object
18
+ Then I should get a "NamedGoodCollection" object
19
+
20
+ @remote
21
+ Scenario: create and save a new NamedGoodCollection
22
+ Given low-level client
23
+ When I create a new "NamedGoodCollection" object
24
+ And assign some NamedGoodCollection data to object
25
+ And save object
26
+ Then I should get a "NamedGoodCollection" object
27
+ And object should has resource_id defined
28
+ And I should be able to remove object
29
+
30
+ @remote
31
+ Scenario: add NamedGood to NamedGoodCollection
32
+ Given low-level client
33
+ And new empty NamedGoodCollection
34
+ When I create a new "NamedGood" object
35
+ And assign NamedGood data to object
36
+ And save object
37
+ Then I should get a "NamedGood" object
38
+ And object should has resource_id defined
39
+ And I should be able to remove object
40
+ And collection should be removed too