backpack_tf 1.0.0.rc1 → 1.0.0.rc2.1

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: 8673b991331c19d4f53c025859bce0ea112838c5
4
- data.tar.gz: 34d35fa2c340a9e239c9525ff26e19768068dd41
3
+ metadata.gz: aad837f79d1e8158b7158d193b31dab2036d46ed
4
+ data.tar.gz: c03a3d108b72d82e15c0dd45ebde3bdf25f8d1bf
5
5
  SHA512:
6
- metadata.gz: 12b37a2bf1e298ae661e00faa9f342be27f8e76dde8a853b767801e7b1c650eb45648fbe9de0c2d34246573ae8921500a90266bdcb2f6b3b8d49382b9cb01eae
7
- data.tar.gz: 08bef1bcf70c9a98bd17f0bdcd23a3c1917816bdd297699b882e7d4d9d5e83160c7d8b6fb9372226eb8f775dedca208faecaba4fa13fde9c92d9bcea408c2b83
6
+ metadata.gz: 0046372f234d0756bbc9e5a7a7a3ea67c1ce3c062a6c4def4e1ca822a9efdba97f8cad10e0fb5f7e5ac5f2246cc58b893f36f15a385daefa59f461f6db28b4cc
7
+ data.tar.gz: a30f2616e7737bdfb24ba56142b97696bd8b8f70e3866001fe5d95e846409dfb208d18b77bddbb268971426b1f1762a3b2d193a40b4fffd1678b45d4123e280a
data/Gemfile CHANGED
@@ -5,6 +5,6 @@ gem 'httparty', '~> 0.13.5'
5
5
  group :test do
6
6
  gem 'rspec', '~> 3.3.0'
7
7
  gem 'webmock', '~> 1.21.0'
8
- gem 'simplecov', '~> 0.11.1', require: false
9
8
  gem 'rake', '~> 10.4.2', require: false
9
+ gem 'codeclimate-test-reporter', '~> 0.4.8', require: nil
10
10
  end
data/Gemfile.lock CHANGED
@@ -2,6 +2,8 @@ GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
4
  addressable (2.3.8)
5
+ codeclimate-test-reporter (0.4.8)
6
+ simplecov (>= 0.7.1, < 1.0.0)
5
7
  crack (0.4.2)
6
8
  safe_yaml (~> 1.0.0)
7
9
  diff-lcs (1.2.5)
@@ -39,10 +41,10 @@ PLATFORMS
39
41
  ruby
40
42
 
41
43
  DEPENDENCIES
44
+ codeclimate-test-reporter (~> 0.4.8)
42
45
  httparty (~> 0.13.5)
43
46
  rake (~> 10.4.2)
44
47
  rspec (~> 3.3.0)
45
- simplecov (~> 0.11.1)
46
48
  webmock (~> 1.21.0)
47
49
 
48
50
  BUNDLED WITH
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # backpack_tf
2
2
 
3
3
  [![Build Status](https://travis-ci.org/NerdDiffer/backpack_tf.svg?branch=master)](https://travis-ci.org/NerdDiffer/backpack_tf)
4
+ [![Code Climate](https://codeclimate.com/github/NerdDiffer/backpack_tf/badges/gpa.svg)](https://codeclimate.com/github/NerdDiffer/backpack_tf)
5
+ [![Test Coverage](https://codeclimate.com/github/NerdDiffer/backpack_tf/badges/coverage.svg)](https://codeclimate.com/github/NerdDiffer/backpack_tf/coverage)
4
6
 
5
7
  Backpack.tf is a website for the in-game economies of Team Fortress 2 and
6
8
  Dota 2. This gem is a wrapper for the backpack.tf [API](http://backpack.tf/api).
@@ -2,26 +2,41 @@ module BackpackTF
2
2
  module Price
3
3
  # For ItemPrice objects with attached particle effects
4
4
  class ParticleEffect
5
+ RELATIVE_PATH_TO_ASSETS_FILE = '../assets/particle_effects.json'
6
+ KEY_TO_PARSE_IN_ASSETS_FILE = 'attribute_controlled_attached_particles'
7
+
5
8
  class << self
6
9
  # @return [Hash] possible particle effects for an item
7
- attr_reader :list
8
- end
10
+ def list
11
+ @list ||= accumulate_assets
12
+ end
13
+
14
+ private
15
+
16
+ def accumulate_assets
17
+ effects = parse_assets_file
9
18
 
10
- @key = 'attribute_controlled_attached_particles'
11
- @file = './lib/backpack_tf/assets/particle_effects.json'
19
+ effects.each_with_object({}) do |effect, hash|
20
+ accumulate!(effect, hash)
21
+ end
22
+ end
12
23
 
13
- def self.read_stored_effects_info
14
- file = File.open(@file).read
15
- effects = JSON.parse(file)[@key]
24
+ def parse_assets_file
25
+ file = File.open(absolute_path_to_assets_file).read
26
+ JSON.parse(file)[KEY_TO_PARSE_IN_ASSETS_FILE]
27
+ end
16
28
 
17
- effects.each_with_object({}) do |effect, hash|
29
+ def absolute_path_to_assets_file
30
+ current_dirname = File.dirname(__FILE__)
31
+ File.expand_path(RELATIVE_PATH_TO_ASSETS_FILE, current_dirname)
32
+ end
33
+
34
+ def accumulate!(effect, hash)
18
35
  id = effect['id']
19
36
  name = effect['name']
20
37
  hash[id] = name
21
38
  end
22
39
  end
23
-
24
- @list = read_stored_effects_info
25
40
  end
26
41
  end
27
42
  end
@@ -1,3 +1,3 @@
1
1
  module BackpackTF
2
- VERSION = '1.0.0.rc1'.freeze
2
+ VERSION = '1.0.0.rc2.1'.freeze
3
3
  end
@@ -1,23 +1,119 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe BackpackTF::Price::ParticleEffect do
4
- describe '::read_stored_effects_info' do
5
- it 'creates a key value pair for each id & name' do
6
- expect(described_class.read_stored_effects_info[17]).to eq 'Sunbeams'
7
- expect(described_class.read_stored_effects_info[5]).to eq 'Holy Glow'
4
+ let(:parsed_assets) do
5
+ [
6
+ {
7
+ "system" => "foo",
8
+ "id" => 1,
9
+ "attach_to_rootbone" => true,
10
+ "name" => "Foo"
11
+ },
12
+ {
13
+ "system" => "bar",
14
+ "id" => 2,
15
+ "attach_to_rootbone" => false,
16
+ "name" => "Bar"
17
+ }
18
+ ]
19
+ end
20
+
21
+ describe '.list' do
22
+ context 'when @list is NOT nil' do
23
+ before(:each) do
24
+ described_class.class_eval { @list = :foo }
25
+ end
26
+ after(:each) do
27
+ described_class.class_eval { @list = nil }
28
+ end
29
+
30
+ it 'returns the value of @list' do
31
+ actual = described_class.list
32
+ expect(actual).to eq(:foo)
33
+ end
34
+ it 'does not call .accumulate_assets' do
35
+ expect(described_class).not_to receive(:accumulate_assets)
36
+ described_class.list
37
+ end
38
+ end
39
+
40
+ context 'when @list is nil' do
41
+ before(:each) do
42
+ allow(described_class).to receive(:accumulate_assets).and_return(:foo)
43
+ described_class.class_eval { @list = nil }
44
+ end
45
+ after(:each) do
46
+ described_class.list
47
+ described_class.class_eval { @list = nil }
48
+ end
49
+
50
+ it 'calls .accumulate_assets' do
51
+ expect(described_class).to receive(:accumulate_assets)
52
+ end
8
53
  end
9
- it 'is nil if it cannot find that key' do
10
- expect(described_class.read_stored_effects_info[nil]).to be_nil
54
+ end
55
+
56
+ describe '.accumulate_assets' do
57
+ before(:each) do
58
+ allow(described_class)
59
+ .to receive(:parse_assets_file)
60
+ .and_return(parsed_assets)
11
61
  end
12
62
 
13
- context '@list' do
14
- it 'same thing can be accessed through class variable' do
15
- expect(described_class.list[17]).to eq 'Sunbeams'
16
- expect(described_class.list[5]).to eq 'Holy Glow'
63
+ context 'reading a value at a known key' do
64
+ it 'can read the value at this key' do
65
+ actual = described_class.send(:accumulate_assets)[1]
66
+ expect(actual).to eq 'Foo'
17
67
  end
18
- it 'is nil if it cannot find that key' do
19
- expect(described_class.list[nil]).to be_nil
68
+ it 'can read the value at this key' do
69
+ actual = described_class.send(:accumulate_assets)[2]
70
+ expect(actual).to eq 'Bar'
20
71
  end
21
72
  end
73
+ context 'when it cannot find the requested key' do
74
+ it 'returns nil' do
75
+ actual = described_class.send(:accumulate_assets)[3]
76
+ expect(actual).to be_nil
77
+ end
78
+ end
79
+ end
80
+
81
+ describe '.parse_assets_file' do
82
+ let(:path_to_dummy_file) do
83
+ rel_path_to_dummy_file = '../../fixtures/particle_effects.json'
84
+ current_dirname = File.dirname(__FILE__)
85
+ File.expand_path(rel_path_to_dummy_file, current_dirname)
86
+ end
87
+
88
+ before(:each) do
89
+ allow(described_class)
90
+ .to receive(:absolute_path_to_assets_file)
91
+ .and_return(path_to_dummy_file)
92
+ end
93
+
94
+ it 'returns these results' do
95
+ expected = parsed_assets
96
+ actual = described_class.send(:parse_assets_file)
97
+ expect(actual).to eq expected
98
+ end
99
+ end
100
+
101
+ describe '.absolute_path_to_assets_file' do
102
+ it 'returns the absolute path to the assets file' do
103
+ actual = described_class.send(:absolute_path_to_assets_file)
104
+ expected = 'lib/backpack_tf/assets/particle_effects.json'
105
+ expect(actual).to match(/.*\/#{expected}/)
106
+ end
107
+ end
108
+
109
+ describe '.accumulate!' do
110
+ let(:effect) { { 'id' => 2, 'name' => 'Rad Effect' } }
111
+ let(:hash) { { 1 => 'Cool Effect' } }
112
+
113
+ it 'mutates the hash, like so:' do
114
+ described_class.send(:accumulate!, effect, hash)
115
+ expected = { 1 => 'Cool Effect', 2 => 'Rad Effect' }
116
+ expect(hash).to eq expected
117
+ end
22
118
  end
23
119
  end
@@ -0,0 +1,16 @@
1
+ {
2
+ "attribute_controlled_attached_particles": [
3
+ {
4
+ "system": "foo",
5
+ "id": 1,
6
+ "attach_to_rootbone": true,
7
+ "name": "Foo"
8
+ },
9
+ {
10
+ "system": "bar",
11
+ "id": 2,
12
+ "attach_to_rootbone": false,
13
+ "name": "Bar"
14
+ }
15
+ ]
16
+ }
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,14 @@
1
- require 'simplecov'
1
+ require 'codeclimate-test-reporter'
2
+ CodeClimate::TestReporter.start
2
3
  SimpleCov.start
3
4
 
4
5
  require 'backpack_tf'
5
6
  require 'webmock/rspec'
6
7
 
8
+ RSpec.configure do |config|
9
+ config.default_formatter = 'doc' if config.files_to_run.one?
10
+ end
11
+
7
12
  def generate_fake_api_key
8
13
  hex_nums = %w(0 1 2 3 4 5 6 7 8 9 a b c d e f)
9
14
  key = ''
@@ -11,6 +16,8 @@ def generate_fake_api_key
11
16
  key
12
17
  end
13
18
 
19
+ WebMock.disable_net_connect!(allow: 'codeclimate.com')
20
+
14
21
  # taken from httparty's spec dir
15
22
  # https://github.com/jnunemaker/httparty/blob/master/spec/spec_helper.rb
16
23
  def file_fixture(filename)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backpack_tf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc1
4
+ version: 1.0.0.rc2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Espinoza
@@ -134,6 +134,7 @@ files:
134
134
  - spec/fixtures/item_with_dual_craftability_tradability.json
135
135
  - spec/fixtures/item_with_unconventional_structure.json
136
136
  - spec/fixtures/market_prices.json
137
+ - spec/fixtures/particle_effects.json
137
138
  - spec/fixtures/price_history.json
138
139
  - spec/fixtures/prices.json
139
140
  - spec/fixtures/special_items.json
@@ -161,9 +162,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
162
  version: 1.3.1
162
163
  requirements: []
163
164
  rubyforge_project:
164
- rubygems_version: 2.4.5.1
165
+ rubygems_version: 2.5.1
165
166
  signing_key:
166
167
  specification_version: 4
167
168
  summary: a wrapper for the backpack.tf API
168
169
  test_files: []
169
- has_rdoc: