gogcom 0.0.25 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1004baec7c101fd0fa67bbbccbeeddaeea446ef4
4
- data.tar.gz: 37087f3127b155a57be69fcf5c541840e62680bc
3
+ metadata.gz: a2ab1fa3184f6d9478b232c68f36aff9b96acb65
4
+ data.tar.gz: a2e348f78102657ec7e296df005f3f53e3625ebd
5
5
  SHA512:
6
- metadata.gz: 9d11c72f0d84c1f949d2b99449cc056e6a28832c6a63e2fc98b838f9265a4177e1d89e916e97c5e609fdee6369f6909d243d1870824dd7c9c8b893464496de5c
7
- data.tar.gz: 24c466f3eef4adb6b8696d1aab85ade49b67496e6ace8b58621f911144a35f7d628958515de5dcd25ba316441833524b9a59e1097d802644b947ab462ab0d5a4
6
+ metadata.gz: 5c889666703185cfdea0d8830d723139d47a5a8dc633507fa5d83ace9b15dbcb5b48cebfe00ac802ef87a7c269ff14c7fa4a3f220881c93c93e1ea2bc9761d9f
7
+ data.tar.gz: f5ae8c2bd3e78260117219436dac09dca92e6db1a840bd13db28cea0498f5b78ec15b874f2c8f45a1f863dfb3f1360e7d76dd047ff543094c155b3891cd61eae
data/README.md CHANGED
@@ -1,9 +1,12 @@
1
- gogcom [![Gem Version](https://badge.fury.io/rb/gogcom.svg)](http://badge.fury.io/rb/gogcom) [![Build Status](https://travis-ci.org/rbrs/gogcom.svg?branch=develop)](https://travis-ci.org/rbrs/gogcom) [![Dependency Status](https://gemnasium.com/rbrs/gogcom.svg)](https://gemnasium.com/rb-/gogcom) [![Coverage Status](https://coveralls.io/repos/rb-/gogcom/badge.png?branch=develop)](https://coveralls.io/r/rb-/gogcom?branch=develop)
1
+ gogcom [![Gem Version](https://badge.fury.io/rb/gogcom.svg)](http://badge.fury.io/rb/gogcom) [![Build Status](https://travis-ci.org/rbrs/gogcom.svg?branch=develop)](https://travis-ci.org/rbrs/gogcom) [![Dependency Status](https://gemnasium.com/rbrs/gogcom.svg)](https://gemnasium.com/rbrs/gogcom) [![Coverage Status](https://coveralls.io/repos/rbrs/gogcom/badge.png?branch=develop)](https://coveralls.io/r/rbrs/gogcom?branch=develop)
2
2
  ============
3
3
 
4
4
  Gogcom is a Ruby library for easy querying gog.com website.
5
5
 
6
- This library is in early stages and not ready for production use.
6
+ Because GOG.com doesn't have official API, data is being gathered by parsing global javascript object.
7
+ That means that there's no guarantee that gem will always work as expected. **Do not use this in production.**
8
+
9
+ I might be working on unnoficial GOG database, to make this API safe for production use. There's no timeline when it will be done, though.
7
10
 
8
11
  ## Usage
9
12
 
@@ -17,7 +20,7 @@ bundle install
17
20
  ```ruby
18
21
  require 'gogcom'
19
22
 
20
- game = Gogcom.game("Spelunky")
23
+ game = Gogcom.game(:name => "Spelunky")
21
24
 
22
25
  game.title # => "Spelunky"
23
26
  game.genres # => ["Action", "Adventure", "Platformer"]
@@ -29,7 +32,7 @@ game.avg_rating # => "4.6"
29
32
  game.avg_ratings_count # => 268
30
33
  game.platforms # => ["Windows"]
31
34
  game.languages # => ["English", "French", "Italian", "German", "Spanish"]
32
- game.pegiAge # => false
35
+ game.pegi_age # => false
33
36
  game.developer # => "Mossmouth"
34
37
  game.publisher # => "Mossmouth"
35
38
  game.bonus_content # => [...]
@@ -51,11 +54,12 @@ require 'gogcom'
51
54
  sale = Gogcom.sale
52
55
  # sale = Gogcom.sale(:type => "games")
53
56
  # sale = Gogcom.sale(:type => "movies")
57
+ # sale = Gogcom.sale(:limit => 5)
54
58
 
55
59
  sale.each do |game|
56
60
  game.title
57
- game.price_current
58
- game.price_original
61
+ game.current_price
62
+ game.original_price
59
63
  game.discount_percentage
60
64
  game.discount_amount
61
65
  end
@@ -2,18 +2,20 @@ module Gogcom
2
2
  class << self
3
3
  # Gets game information from website.
4
4
  #
5
- # @param [string] Game name
6
- def game(name)
7
- Gogcom::Game.get(name)
5
+ # @param [Hash]
6
+ # :name => "Spelunky"
7
+ def game(options)
8
+ Gogcom::Game.new(options).get()
8
9
  end
9
10
 
10
11
  # Gets all items on sale.
11
12
  #
12
13
  # @param [Hash]
13
14
  # :type => "games"
14
- # :type => "movies"
15
+ # :type => "movies"
16
+ # :limit => 5
15
17
  def sale(options = {})
16
- Gogcom::Sale.get(options)
18
+ Gogcom::Sale.new(options).get()
17
19
  end
18
20
 
19
21
  # Gets all news
@@ -21,7 +23,7 @@ module Gogcom
21
23
  # @param [Hash]
22
24
  # :limit => 5
23
25
  def news(options = {})
24
- Gogcom::News.get(options)
26
+ Gogcom::News.new(options).get()
25
27
  end
26
28
  end
27
29
  end
@@ -30,8 +32,6 @@ require 'net/http'
30
32
  require 'json'
31
33
  require 'simple-rss'
32
34
 
33
- require 'gogcom/func'
34
- require 'gogcom/review'
35
35
  require 'gogcom/game'
36
36
  require 'gogcom/sale'
37
37
  require 'gogcom/news'
@@ -1,21 +1,47 @@
1
1
  module Gogcom
2
2
  class Game
3
- attr_accessor :title, :genres, :download_size, :release_date, :description, :price, :avg_rating,
4
- :avg_ratings_count, :platforms, :pegiAge, :languages, :developer, :publisher,
5
- :game_modes, :bonus_content, :reviews
6
3
 
7
- def self.get_data(game_name)
8
- name = Gogcom::Func.urlfy(game_name)
4
+ def initialize(options)
5
+ @name = options[:name] || nil
6
+ end
7
+
8
+ # Main method to get game data
9
+ def get()
10
+ parse(fetch())
11
+ end
12
+
13
+ private
14
+
15
+ # Fetches raw data and parses as JSON object
16
+ #
17
+ # @return [Object]
18
+ def fetch()
19
+ name = urlfy(@name)
9
20
  page = Net::HTTP.get(URI("http://www.gog.com/game/" + name))
10
21
  data = JSON.parse(page[/(?<=var gogData = )(.*)(?=;)/,1])
11
22
  data
12
23
  end
13
24
 
14
- def self.get_title(data)
25
+ # Parses raw data and returns game item.
26
+ #
27
+ # @param [Object]
28
+ # @return [Struct]
29
+ def parse(data)
30
+ game = GameItem.new(get_title(data), get_genres(data),
31
+ get_download_size(data), get_release_date(data), get_description(data),
32
+ get_price(data), get_avg_rating(data), get_avg_ratings_count(data),
33
+ get_platforms(data), get_languages(data), get_developer(data),
34
+ get_publisher(data), get_modes(data), get_bonus_content(data),
35
+ get_reviews(data), get_pegi_age(data))
36
+
37
+ game
38
+ end
39
+
40
+ def get_title(data)
15
41
  data["gameProductData"]["title"]
16
42
  end
17
43
 
18
- def self.get_genres(data)
44
+ def get_genres(data)
19
45
  genres = []
20
46
  genres_raw = data["gameProductData"]["genres"]
21
47
  genres_raw.each do |genre|
@@ -25,31 +51,31 @@ module Gogcom
25
51
  genres
26
52
  end
27
53
 
28
- def self.get_download_size(data)
54
+ def get_download_size(data)
29
55
  data["gameProductData"]["downloadSize"]
30
56
  end
31
57
 
32
- def self.get_release_date(data)
58
+ def get_release_date(data)
33
59
  data["gameProductData"]["releaseDate"]
34
60
  end
35
61
 
36
- def self.get_description(data)
62
+ def get_description(data)
37
63
  data["gameProductData"]["description"]["full"]
38
64
  end
39
65
 
40
- def self.get_price(data)
66
+ def get_price(data)
41
67
  data["gameProductData"]["price"]["symbol"] + data["gameProductData"]["price"]["amount"]
42
68
  end
43
69
 
44
- def self.get_avg_rating(data)
70
+ def get_avg_rating(data)
45
71
  data["gameProductData"]["rating"].to_s.insert(1, ".")
46
72
  end
47
73
 
48
- def self.get_avg_ratings_count(data)
74
+ def get_avg_ratings_count(data)
49
75
  data["gameProductData"]["votesCount"]
50
76
  end
51
77
 
52
- def self.get_platforms(data)
78
+ def get_platforms(data)
53
79
  platforms = []
54
80
  platforms_raw = data["gameProductData"]["worksOn"]
55
81
  platforms_raw.each do |platform|
@@ -61,19 +87,19 @@ module Gogcom
61
87
  platforms
62
88
  end
63
89
 
64
- def self.get_languages(data)
90
+ def get_languages(data)
65
91
  data["gameProductData"]["languages"]
66
92
  end
67
93
 
68
- def self.get_developer(data)
94
+ def get_developer(data)
69
95
  data["gameProductData"]["developer"]["name"]
70
96
  end
71
97
 
72
- def self.get_publisher(data)
98
+ def get_publisher(data)
73
99
  data["gameProductData"]["publisher"]["name"]
74
100
  end
75
101
 
76
- def self.get_modes(data)
102
+ def get_modes(data)
77
103
  game_modes = []
78
104
  modes_raw = data["gameProductData"]["modes"]
79
105
  modes_raw.each do |mode|
@@ -83,7 +109,7 @@ module Gogcom
83
109
  game_modes
84
110
  end
85
111
 
86
- def self.get_bonusContent(data)
112
+ def get_bonus_content(data)
87
113
  bonusContent = []
88
114
  bonusContent_raw = data["gameProductData"]["bonusContent"]
89
115
 
@@ -98,7 +124,7 @@ module Gogcom
98
124
  bonusContent
99
125
  end
100
126
 
101
- def self.get_reviews(data)
127
+ def get_reviews(data)
102
128
  reviews = []
103
129
  reviews_raw = data["reviews"]["pages"][0]
104
130
  reviews_raw.each do |review|
@@ -115,32 +141,26 @@ module Gogcom
115
141
  reviews
116
142
  end
117
143
 
118
- def self.get_pegiAge(data)
144
+ def get_pegi_age(data)
119
145
  data["gameProductData"]["pegiAge"]
120
146
  end
121
147
 
122
- def self.get(game_name)
123
- data = self.get_data(game_name)
124
- game = Game.new
125
-
126
- game.title = get_title(data)
127
- game.genres = get_genres(data)
128
- game.download_size = get_download_size(data)
129
- game.release_date = get_release_date(data)
130
- game.description = get_description(data)
131
- game.price = get_price(data)
132
- game.avg_rating = get_avg_rating(data)
133
- game.avg_ratings_count = get_avg_ratings_count(data)
134
- game.platforms = get_platforms(data)
135
- game.pegiAge = get_pegiAge(data)
136
- game.languages = get_languages(data)
137
- game.developer = get_developer(data)
138
- game.publisher = get_publisher(data)
139
- game.game_modes = get_modes(data)
140
- game.bonus_content = get_bonusContent(data)
141
- game.reviews = get_reviews(data)
142
-
143
- game
148
+ # Converts "Game Name" to "game_name"
149
+ #
150
+ # @param [String]
151
+ # @return [String]
152
+ def urlfy(name)
153
+ name = name.gsub(/[^0-9A-Za-z\s]/, '').gsub(/\s/, '_').downcase
154
+ name
144
155
  end
145
156
  end
157
+
158
+ class GameItem < Struct.new(:title, :genres, :download_size, :release_date,
159
+ :description, :price, :avg_rating, :avg_ratings_count, :platforms,
160
+ :languages, :developer, :publisher, :game_modes, :bonus_content, :reviews,
161
+ :pegi_age)
162
+ end
163
+
164
+ class Review < Struct.new(:title, :rating, :author, :body)
165
+ end
146
166
  end
@@ -1,38 +1,47 @@
1
1
  module Gogcom
2
- class News
3
- attr_accessor :title, :link, :body, :date
4
-
5
- def self.get_data()
6
- data_url = "http://www.gog.com/frontpage/rss"
7
- page = Net::HTTP.get(URI(data_url))
8
- page
9
- end
10
-
11
- def self.parse_data(data, options = {})
12
- rss = SimpleRSS.parse data
13
- news = Array.new
14
- limit = options[:limit] || nil
15
- count = 0
16
-
17
- rss.items.each do |item|
18
- news_item = News.new
19
-
20
- news_item.title = item.title
21
- news_item.link = item.link
22
- news_item.body = item.description.force_encoding("UTF-8")
23
- news_item.date = item.pubDate
24
-
25
- news.push news_item
26
- count += 1
27
-
28
- break if !limit.nil? && count >= limit
29
- end
30
-
31
- news
32
- end
33
-
34
- def self.get(options)
35
- self.parse_data(self.get_data(), options)
36
- end
37
- end
2
+ class News
3
+
4
+ def initialize(options)
5
+ @limit = options[:limit] || nil
6
+ end
7
+
8
+ # Main method to get news data.
9
+ def get()
10
+ parse(fetch())
11
+ end
12
+
13
+ private
14
+
15
+ # Fetches raw data from source.
16
+ #
17
+ # @return [String]
18
+ def fetch()
19
+ url = "http://www.gog.com/frontpage/rss"
20
+ page = Net::HTTP.get(URI(url))
21
+ page
22
+ end
23
+
24
+ # Parses raw data and returns news items
25
+ #
26
+ # @return [Array]
27
+ def parse(data)
28
+ rss = SimpleRSS.parse data
29
+ news = Array.new
30
+
31
+ rss.items.each do |item|
32
+ news_item = NewsItem.new(item.title, item.link, item.description.force_encoding("UTF-8"), item.pubDate)
33
+
34
+ news.push news_item
35
+ end
36
+
37
+ unless @limit.nil?
38
+ news.take(@limit)
39
+ else
40
+ news
41
+ end
42
+ end
43
+ end
44
+
45
+ class NewsItem < Struct.new(:title, :link, :body, :date)
46
+ end
38
47
  end
@@ -1,73 +1,88 @@
1
1
  module Gogcom
2
2
  class Sale
3
- attr_accessor :title, :price_current, :price_original, :discount_percentage,
4
- :discount_amount
5
3
 
6
- def self.get_data
7
- page = Net::HTTP.get(URI("http://www.gog.com/"))
8
- data = JSON.parse(page[/(?<=var gogData = )(.*)(?=;)/,1])
9
- data
4
+ def initialize(options)
5
+ @type = options[:type] || nil
6
+ @limit = options[:limit] || nil
10
7
  end
11
8
 
12
- def self.get_title(data, i)
13
- data["on_sale"][i]["title"]
9
+ # Main method to get sales data.
10
+ def get()
11
+ parse(fetch())
14
12
  end
15
13
 
16
- def self.get_price_current(data, i)
17
- data["on_sale"][i]["price"]["symbol"] + data["on_sale"][i]["price"]["amount"]
18
- end
14
+ private
19
15
 
20
- def self.get_price_original(data, i)
21
- data["on_sale"][i]["price"]["symbol"] + data["on_sale"][i]["price"]["baseAmount"]
16
+ # Fetches raw data from source.
17
+ #
18
+ # @return [Object]
19
+ def fetch()
20
+ url = "http://www.gog.com/"
21
+ page = Net::HTTP.get(URI(url))
22
+ @data = JSON.parse(page[/(?<=var gogData = )(.*)(?=;)/,1])
22
23
  end
23
24
 
24
- def self.get_discount_percentage(data, i)
25
- data["on_sale"][i]["price"]["discountPercentage"]
26
- end
25
+ # Parses raw data and returns sale items.
26
+ #
27
+ # @return [Array]
28
+ def parse(data)
29
+ items = []
30
+
31
+ data["on_sale"].each do |item|
32
+ sale_item = SaleItem.new(get_title(item), get_current_price(item),
33
+ get_original_price(item), get_discount_percentage(item),
34
+ get_discount_amount(item))
35
+
36
+ if @type.nil?
37
+ items.push(sale_item)
38
+ else
39
+ if (@type == "games" && is_game?(item))
40
+ items.push(sale_item)
41
+ end
42
+
43
+ if (@type == "movies" && is_movie?(item))
44
+ items.push(sale_item)
45
+ end
46
+ end
47
+ end
48
+
49
+ unless @limit.nil?
50
+ items.take(@limit)
51
+ else
52
+ items
53
+ end
54
+ end
27
55
 
28
- def self.get_discount_amount(data, i)
29
- data["on_sale"][i]["price"]["symbol"] + data["on_sale"][i]["price"]["discountDifference"]
56
+ def get_title(data)
57
+ data["title"]
30
58
  end
31
59
 
32
- def self.is_game?(data, i)
33
- data["on_sale"][i]["isGame"]
60
+ def get_current_price(data)
61
+ data["price"]["symbol"] + data["price"]["amount"]
34
62
  end
35
63
 
36
- def self.is_movie?(data, i)
37
- data["on_sale"][i]["isMovie"]
64
+ def get_original_price(data)
65
+ data["price"]["symbol"] + data["price"]["baseAmount"]
38
66
  end
39
67
 
40
- def self.get(options = {})
41
- data = self.get_data
42
- sale = []
43
- count = 0
44
- type = options[:type] || nil
68
+ def get_discount_percentage(data)
69
+ data["price"]["discountPercentage"]
70
+ end
45
71
 
46
- data["on_sale"].each do |item|
47
- game = Sale.new
48
-
49
- game.title = get_title(data, count)
50
- game.price_current = get_price_current(data, count)
51
- game.price_original = get_price_original(data, count)
52
- game.discount_percentage = get_discount_percentage(data, count)
53
- game.discount_amount = get_discount_amount(data, count)
54
-
55
- if (type == "games")
56
- if (is_game?(data, count))
57
- sale.push(game)
58
- end
59
- elsif (type == "movies")
60
- if (is_movie?(data, count))
61
- sale.push(game)
62
- end
63
- else
64
- sale.push(game)
65
- end
72
+ def get_discount_amount(data)
73
+ data["price"]["symbol"] + data["price"]["discountDifference"]
74
+ end
66
75
 
67
- count += 1
68
- end
76
+ def is_game?(data)
77
+ data["isGame"]
78
+ end
69
79
 
70
- sale
80
+ def is_movie?(data)
81
+ data["isMovie"]
71
82
  end
72
83
  end
84
+
85
+ class SaleItem < Struct.new(:title, :current_price, :original_price,
86
+ :discount_percentage, :discount_amount, :isGame, :isMovie)
87
+ end
73
88
  end
@@ -1,3 +1,3 @@
1
1
  module Gogcom
2
- VERSION = "0.0.25"
2
+ VERSION = "0.0.26"
3
3
  end
@@ -3,82 +3,75 @@ require 'helper'
3
3
  class GogcomGameTest < Minitest::Test
4
4
  def setup
5
5
  VCR.use_cassette('game') do
6
- @data = Gogcom::Game.get_data("Faster Than Light")
6
+ @game = Gogcom.game(:name => "Faster Than Light")
7
7
  end
8
8
  end
9
9
 
10
- def test_get_data
11
- assert @data.is_a?(Hash)
10
+ def test_game
11
+ assert @game.is_a?(Struct)
12
12
  end
13
13
 
14
- def test_get_title
15
- assert_equal Gogcom::Game.get_title(@data), "FTL: Advanced Edition"
14
+ def test_game_title
15
+ assert_equal @game.title, "FTL: Advanced Edition"
16
16
  end
17
17
 
18
- def test_get_genres
19
- assert_equal Gogcom::Game.get_genres(@data), ["Strategy", "Simulation", "Sci-fi"]
18
+ def test_game_genres
19
+ assert_equal @game.genres, ["Strategy", "Simulation", "Sci-fi"]
20
20
  end
21
21
 
22
- def test_download_size
23
- assert_equal Gogcom::Game.get_download_size(@data), "205 MB"
22
+ def test_game_download_size
23
+ assert_equal @game.download_size, "205 MB"
24
24
  end
25
25
 
26
- def test_release_date
27
- assert_equal Gogcom::Game.get_release_date(@data), 1347595200
26
+ def test_game_release_date
27
+ assert_equal @game.release_date, 1347595200
28
28
  end
29
29
 
30
- def test_description
31
- assert_kind_of String, Gogcom::Game.get_description(@data)
30
+ def test_game_description
31
+ assert_kind_of String, @game.description
32
32
  end
33
33
 
34
- def test_price
35
- assert_match /^\$\d+(\.\d{2})?$/, Gogcom::Game.get_price(@data)
34
+ def test_game_price
35
+ assert_match /^\$\d+(\.\d{2})?$/, @game.price
36
36
  end
37
37
 
38
- def test_avg_ratings
39
- assert_match /\d.\d/, Gogcom::Game.get_avg_rating(@data).to_s
38
+ def test_game_avg_ratings
39
+ assert_match /\d.\d/, @game.avg_rating.to_s
40
40
  end
41
41
 
42
- def test_avg_ratings_count
43
- assert_kind_of Integer, Gogcom::Game.get_avg_ratings_count(@data)
42
+ def test_game_avg_ratings_count
43
+ assert_kind_of Integer, @game.avg_ratings_count
44
44
  end
45
45
 
46
- def test_platforms
47
- assert_equal Gogcom::Game.get_platforms(@data), ["Windows", "Mac"]
46
+ def test_game_platforms
47
+ assert_equal @game.platforms, ["Windows", "Mac"]
48
48
  end
49
49
 
50
- def test_pegiAge
51
- assert_equal Gogcom::Game.get_pegiAge(@data), false
50
+ def test_game_pegi_age
51
+ assert_equal @game.pegi_age, false
52
52
  end
53
53
 
54
- def test_languages
55
- assert_equal Gogcom::Game.get_languages(@data), ["English"]
54
+ def test_game_languages
55
+ assert_equal @game.languages, ["English"]
56
56
  end
57
57
 
58
- def test_developer
59
- assert_equal Gogcom::Game.get_developer(@data), "Subset Games"
58
+ def test_game_developer
59
+ assert_equal @game.developer, "Subset Games"
60
60
  end
61
61
 
62
- def test_publisher
63
- assert_equal Gogcom::Game.get_publisher(@data), "Subset Games"
62
+ def test_game_publisher
63
+ assert_equal @game.publisher, "Subset Games"
64
64
  end
65
65
 
66
- def test_modes
67
- assert_equal Gogcom::Game.get_modes(@data), ["Single-player"]
66
+ def test_game_modes
67
+ assert_equal @game.game_modes, ["Single-player"]
68
68
  end
69
69
 
70
- def test_bonus_content
71
- assert_equal Gogcom::Game.get_bonusContent(@data), ["wallpaper", "soundtrack sample (5 tracks)", "avatars", "artworks"]
70
+ def test_game_bonus_content
71
+ assert_equal @game.bonus_content, ["wallpaper", "soundtrack sample (5 tracks)", "avatars", "artworks"]
72
72
  end
73
73
 
74
- def test_reviews
75
- assert Gogcom::Game.get_reviews(@data).is_a?(Array)
76
- end
77
-
78
- def test_get
79
- VCR.use_cassette('game') do
80
- game = Gogcom::Game.get("Faster Than Light")
81
- assert_kind_of Object, game
82
- end
74
+ def test_game_reviews
75
+ assert @game.reviews.is_a?(Array)
83
76
  end
84
77
  end
@@ -1,8 +1,8 @@
1
1
  class GogcomTest < Minitest::Test
2
2
  def test_game
3
3
  VCR.use_cassette('game') do
4
- game = Gogcom.game("Faster Than Light")
5
- assert_kind_of Object, game
4
+ game = Gogcom.game(:name => "Faster Than Light")
5
+ assert_kind_of Struct, game
6
6
  end
7
7
  end
8
8
 
@@ -12,4 +12,11 @@ class GogcomTest < Minitest::Test
12
12
  assert_kind_of Array, sale
13
13
  end
14
14
  end
15
+
16
+ def test_news
17
+ VCR.use_cassette('news') do
18
+ news = Gogcom.news
19
+ assert_kind_of Array, news
20
+ end
21
+ end
15
22
  end
@@ -1,20 +1,22 @@
1
1
  require 'helper'
2
2
 
3
3
  class GogcomNewsTest < Minitest::Test
4
- def setup
5
- VCR.use_cassette('news') do
6
- @data = Gogcom::News.get_data
7
- end
8
- end
4
+ def setup
5
+ VCR.use_cassette('news') do
6
+ @news = Gogcom.news()
7
+ end
9
8
 
10
- def test_parse_data
11
- news = Gogcom::News.parse_data(@data)
12
- assert news.is_a?(Array)
13
- end
9
+ VCR.use_cassette('news') do
10
+ @news_limit = Gogcom.news(:limit => 2)
11
+ end
12
+ end
14
13
 
15
- def test_parse_data_limit
16
- news = Gogcom::News.parse_data(@data, :limit => 2)
17
- assert news.is_a?(Array)
18
- assert_equal 2, news.count
19
- end
14
+ def test_news
15
+ assert @news.is_a?(Array)
16
+ end
17
+
18
+ def test_news_limit
19
+ assert @news_limit.is_a?(Array)
20
+ assert @news_limit.count, 2
21
+ end
20
22
  end
@@ -3,48 +3,56 @@ require 'helper'
3
3
  class GogcomSaleTest < Minitest::Test
4
4
  def setup
5
5
  VCR.use_cassette('index') do
6
- @data = Gogcom::Sale.get_data
6
+ @items = Gogcom.sale()
7
7
  end
8
8
 
9
- @game_id = 0 # Index of gamelist array
9
+ VCR.use_cassette('index') do
10
+ @items_type_games = Gogcom.sale(type: "games")
11
+ end
12
+
13
+ VCR.use_cassette('index') do
14
+ @items_type_movies = Gogcom.sale(type: "movies")
15
+ end
16
+
17
+ VCR.use_cassette('index') do
18
+ @items_limit = Gogcom.sale(limit: 2)
19
+ end
10
20
  end
11
21
 
12
- def test_get_data
13
- assert @data.is_a?(Hash)
22
+ def test_sale
23
+ assert @items.is_a?(Array)
14
24
  end
15
25
 
16
- def test_get_title
17
- assert_equal Gogcom::Sale.get_title(@data, @game_id), "Witcher 3: Wild Hunt, The - preorder"
26
+ def test_sale_type_games
27
+ assert @items_type_games.is_a?(Array)
18
28
  end
19
29
 
20
- def test_get_price_current
21
- assert_equal Gogcom::Sale.get_price_current(@data, @game_id), "$53.99"
30
+ def test_sale_type_movies
31
+ assert @items_type_movies.is_a?(Array)
22
32
  end
23
33
 
24
- def test_get_price_original
25
- assert_equal Gogcom::Sale.get_price_original(@data, @game_id), "$59.99"
34
+ def test_sale_limit
35
+ assert @items_limit.is_a?(Array)
36
+ assert_equal @items_limit.count, 2
26
37
  end
27
38
 
28
- def test_get_discount_percentage
29
- assert_equal Gogcom::Sale.get_discount_percentage(@data, @game_id), 10
39
+ def test_sale_title
40
+ assert_equal @items.first.title, "Witcher 3: Wild Hunt, The - preorder"
30
41
  end
31
42
 
32
- def test_discount_amount
33
- assert_equal Gogcom::Sale.get_discount_amount(@data, @game_id), "$6.00"
43
+ def test_sale_current_price
44
+ assert_equal @items.first.current_price, "$53.99"
34
45
  end
35
46
 
36
- def test_is_game?
37
- assert_equal Gogcom::Sale.is_game?(@data, @game_id), true
47
+ def test_sale_original_price
48
+ assert_equal @items.first.original_price, "$59.99"
38
49
  end
39
-
40
- def test_is_movie?
41
- assert_equal Gogcom::Sale.is_movie?(@data, @game_id), false
50
+
51
+ def test_sale_discount_percentage
52
+ assert_equal @items.first.discount_percentage, 10
42
53
  end
43
54
 
44
- def test_get
45
- VCR.use_cassette('index') do
46
- sale = Gogcom::Sale.get
47
- assert_kind_of Object, sale
48
- end
55
+ def test_discount_amount
56
+ assert_equal @items.first.discount_amount, "$6.00"
49
57
  end
50
58
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gogcom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.25
4
+ version: 0.0.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rolandas Barysas
@@ -92,14 +92,14 @@ dependencies:
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '1.18'
95
+ version: '1.20'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '1.18'
102
+ version: '1.20'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: json
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -151,17 +151,14 @@ files:
151
151
  - README.md
152
152
  - Rakefile
153
153
  - lib/gogcom.rb
154
- - lib/gogcom/func.rb
155
154
  - lib/gogcom/game.rb
156
155
  - lib/gogcom/news.rb
157
- - lib/gogcom/review.rb
158
156
  - lib/gogcom/sale.rb
159
157
  - lib/gogcom/version.rb
160
158
  - test/fixtures/vcr_cassettes/game.yml
161
159
  - test/fixtures/vcr_cassettes/index.yml
162
160
  - test/fixtures/vcr_cassettes/news.yml
163
161
  - test/helper.rb
164
- - test/test_func.rb
165
162
  - test/test_game.rb
166
163
  - test/test_gogcom.rb
167
164
  - test/test_news.rb
@@ -1,8 +0,0 @@
1
- module Gogcom
2
- class Func
3
- def self.urlfy(name)
4
- name = name.gsub(/[^0-9A-Za-z\s]/, '').gsub(/\s/, '_').downcase
5
- name
6
- end
7
- end
8
- end
@@ -1,5 +0,0 @@
1
- module Gogcom
2
- class Review
3
- attr_accessor :title, :rating, :author, :body
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class GogcomTest < Minitest::Test
4
- def test_urlfy
5
- assert_equal "faster_than_light", Gogcom::Func.urlfy("Faster Than Light")
6
- end
7
- end