cb_nitride 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +14 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +10 -0
  7. data/cb_nitride.gemspec +23 -0
  8. data/lib/cb_nitride/category_sorter.rb +70 -0
  9. data/lib/cb_nitride/configuration.rb +15 -0
  10. data/lib/cb_nitride/diamond_item.rb +95 -0
  11. data/lib/cb_nitride/diamond_login.rb +45 -0
  12. data/lib/cb_nitride/diamond_number_generator.rb +52 -0
  13. data/lib/cb_nitride/exceptions.rb +3 -0
  14. data/lib/cb_nitride/hasher_methods.rb +20 -0
  15. data/lib/cb_nitride/module_methods.rb +17 -0
  16. data/lib/cb_nitride/private_hasher.rb +72 -0
  17. data/lib/cb_nitride/public_hasher.rb +83 -0
  18. data/lib/cb_nitride/version.rb +3 -0
  19. data/lib/cb_nitride.rb +43 -0
  20. data/test/cassettes/test_that_it_can_log_in_cassette.yml +880 -0
  21. data/test/cassettes/test_that_it_fails_with_bad_information_cassette.yml +294 -0
  22. data/test/cassettes/test_that_it_resets_the_agent_cassette.yml +2188 -0
  23. data/test/cassettes/test_that_the_private_diamond_item_contains_the_right_fields_cassette.yml +660 -0
  24. data/test/cassettes/test_that_the_private_hash_contains_the_right_fields_cassette.yml +708 -0
  25. data/test/cassettes/test_that_the_private_hash_identifies_collection_cassette.yml +714 -0
  26. data/test/cassettes/test_that_the_private_hash_identifies_invalid_diamond_codes_cassette.yml +636 -0
  27. data/test/cassettes/test_that_the_private_hash_identifies_issues_cassette.yml +707 -0
  28. data/test/cassettes/test_that_the_private_hash_identifies_merchandise_cassette.yml +705 -0
  29. data/test/cassettes/test_that_the_private_hash_identifies_variants_cassette.yml +708 -0
  30. data/test/cassettes/test_that_the_private_hash_produces_a_diamond_item_cassette.yml +660 -0
  31. data/test/cassettes/test_that_the_public_diamond_item_contains_the_right_fields_cassette.yml +196 -0
  32. data/test/cassettes/test_that_the_public_hash_contains_the_right_fields_cassette.yml +208 -0
  33. data/test/cassettes/test_that_the_public_hash_identifies_collection_cassette.yml +212 -0
  34. data/test/cassettes/test_that_the_public_hash_identifies_invalid_diamond_codes_cassette.yml +570 -0
  35. data/test/cassettes/test_that_the_public_hash_identifies_issues_cassette.yml +208 -0
  36. data/test/cassettes/test_that_the_public_hash_identifies_merchandise_cassette.yml +207 -0
  37. data/test/cassettes/test_that_the_public_hash_identifies_variants_cassette.yml +209 -0
  38. data/test/cassettes/test_that_the_public_hash_produces_a_diamond_item_cassette.yml +599 -0
  39. data/test/test_helper.rb +67 -0
  40. data/test/unit/configuration_test.rb +19 -0
  41. data/test/unit/diamond_item_test.rb +42 -0
  42. data/test/unit/diamond_login_test.rb +42 -0
  43. data/test/unit/private_hasher_test.rb +67 -0
  44. data/test/unit/public_hasher_test.rb +59 -0
  45. data/test/unit/pull_test.rb +8 -0
  46. metadata +142 -0
@@ -0,0 +1,19 @@
1
+ require_relative '../test_helper'
2
+
3
+ class ConfigurationTest < MiniTest::Unit::TestCase
4
+
5
+ def setup
6
+ CbNitride.configure do |c|
7
+ c.username = "username"
8
+ c.password = "password"
9
+ c.account_number = "12345"
10
+ end
11
+ end
12
+
13
+ def test_configuration_settings
14
+ assert_equal CbNitride.username, "username"
15
+ assert_equal CbNitride.password, "password"
16
+ assert_equal CbNitride.account_number, "12345"
17
+ end
18
+
19
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../test_helper'
2
+
3
+ class DiamondItemTest < MiniTest::Unit::TestCase
4
+ def ideal_collection
5
+ @_ideal_collection ||= CbNitride::DiamondItem.new(
6
+ {
7
+ category_code: "3",
8
+ title: "BATTLING BOY HC GN"
9
+ }).product_type?
10
+ end
11
+ def ideal_merchandise
12
+ @_ideal_merchandise ||= CbNitride::DiamondItem.new(
13
+ {
14
+ category_code: "16",
15
+ title: "ADV TIME MARCELINE NAME ONLY PX JRS RAGLAN LG (C: 0-1-0)"
16
+ }).product_type?
17
+ end
18
+ def ideal_variant
19
+ @_ideal_variant ||= CbNitride::DiamondItem.new(
20
+ {
21
+ category_code: "1",
22
+ title: "SANDMAN OVERTURE #1 (OF 6) CVR B (MR)"
23
+ }).product_type?
24
+ end
25
+ def ideal_issue
26
+ @_ideal_issue ||= CbNitride::DiamondItem.new(
27
+ {
28
+ category_code: "1",
29
+ title: "SANDMAN OVERTURE #1 (OF 6) CVR A (MR)"
30
+ }).product_type?
31
+ end
32
+
33
+ def test_that_they_are_the_right_items
34
+ assert_equal :issue, ideal_issue
35
+ assert_equal :variant, ideal_variant
36
+ assert_equal :collection, ideal_collection
37
+ assert_equal :merchandise, ideal_merchandise
38
+ end
39
+
40
+ #TODO Test for Correct Creator filtering, consider moving ideal objects to module
41
+
42
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../test_helper'
2
+
3
+ class DiamondLoginTest < MiniTest::Unit::TestCase
4
+ include LoginInformation
5
+ include Recordable
6
+
7
+ def test_that_it_can_log_in
8
+ setup_vcr
9
+ set_login_data
10
+
11
+ da = CbNitride::DiamondLogin.agent
12
+ da.get(CbNitride::DiamondLogin::HOME_URL)
13
+ url = da.page.uri.to_s
14
+ assert_equal url, CbNitride::DiamondLogin::HOME_URL
15
+
16
+ clear_vcr
17
+ end
18
+
19
+ def test_that_it_fails_with_bad_information
20
+ setup_vcr
21
+ clear_login_data
22
+
23
+ assert_raises CbNitride::InvalidLoginError do
24
+ CbNitride::DiamondLogin.agent
25
+ end
26
+
27
+ clear_vcr
28
+ end
29
+
30
+ def test_that_it_resets_the_agent
31
+ setup_vcr
32
+ set_login_data
33
+
34
+ a = CbNitride::DiamondLogin.new
35
+ a.login
36
+ first_agent = a.agent
37
+ a.reset_agent
38
+ refute_equal a.agent, first_agent
39
+
40
+ clear_vcr
41
+ end
42
+ end
@@ -0,0 +1,67 @@
1
+ require_relative '../test_helper'
2
+
3
+ class PrivateHasherTest < MiniTest::Unit::TestCase
4
+ include LoginInformation
5
+ include Recordable
6
+ include CategoryCodes
7
+ include HasherTests
8
+
9
+ def setup_object(code)
10
+ setup_vcr
11
+ @item = CbNitride::PrivateHasher.item(code)
12
+ clear_vcr
13
+ end
14
+
15
+ def setup
16
+ set_login_data
17
+ end
18
+
19
+ def teardown
20
+ clear_login_data
21
+ end
22
+
23
+ def test_that_the_private_hash_produces_a_diamond_item
24
+ setup_object(ISSUE_CODE)
25
+ assert_equal @item.class, CbNitride::DiamondItem
26
+ end
27
+
28
+ def test_that_the_private_diamond_item_contains_the_right_fields
29
+ setup_object(ISSUE_CODE)
30
+ refute_equal @item.title, "Pug Party Parade"
31
+ assert_equal @item.stock_number, "STK611169"
32
+ assert_equal @item.diamond_number, ISSUE_CODE
33
+ assert_equal @item.image_url, "https://retailerservices.diamondcomics.com/Image/Display?pd=webdata/catalogimages/STK_IMAGES_THUMBNAIL/STK600001-620000&pf=STK611169_TN.jpg"
34
+ assert_equal @item.publisher, "DC COMICS"
35
+ assert_equal @item.creators, "(W) Jeff Lemire (A/CA) Andrea Sorrentino"
36
+ assert_equal @item.description, "Ollie returns to the island where he first became Green Arrow and learns some hard truths about his father and the mysterious Outsiders!"
37
+ assert_equal @item.release_date.to_s, "2013-06-05"
38
+ assert_equal @item.price, 2.99
39
+ assert_equal @item.state, :private
40
+ assert_equal @item.category_code, "1"
41
+ end
42
+
43
+ def test_that_the_private_hash_identifies_issues
44
+ setup_object(ISSUE_CODE)
45
+ assert_equal @item.category_code, ISSUE_CATEGORY_CODE
46
+ end
47
+
48
+ def test_that_the_private_hash_identifies_variants
49
+ setup_object(VARIANT_CODE)
50
+ assert_equal @item.category_code, ISSUE_CATEGORY_CODE
51
+ end
52
+
53
+ def test_that_the_private_hash_identifies_merchandise
54
+ setup_object(MERCH_CODE)
55
+ assert_includes MERCHANDISE_CATEGORY_CODES, @item.category_code
56
+ end
57
+
58
+ def test_that_the_private_hash_identifies_collection
59
+ setup_object(COLLECTION_CODE)
60
+ assert_equal @item.category_code, COLLECTION_CATEGORY_CODE
61
+ end
62
+
63
+ def test_that_the_private_hash_identifies_invalid_diamond_codes
64
+ setup_object("FEB1099999")
65
+ assert_equal @item, nil
66
+ end
67
+ end
@@ -0,0 +1,59 @@
1
+ require_relative '../test_helper'
2
+
3
+ class PublicHasherTest < MiniTest::Unit::TestCase
4
+ include Recordable
5
+ include HasherTests
6
+ include CategoryCodes
7
+
8
+ def setup_object(code)
9
+ setup_vcr
10
+ @item = CbNitride::PublicHasher.item(code)
11
+ clear_vcr
12
+ end
13
+
14
+ def test_that_the_public_hash_produces_a_diamond_item
15
+ setup_object(ISSUE_CODE)
16
+ assert_equal @item.class, CbNitride::DiamondItem
17
+ end
18
+
19
+ def test_that_the_public_diamond_item_contains_the_right_fields
20
+ setup_object(ISSUE_CODE)
21
+ refute_equal @item.title, "Pug Party Parade"
22
+ assert_equal @item.stock_number, "STK611169"
23
+ assert_equal @item.diamond_number, ISSUE_CODE
24
+ assert_equal @item.image_url, "http://www.previewsworld.com/catalogimages/STK_IMAGES/STK600001-620000/STK611169.jpg"
25
+ assert_equal @item.publisher, "DC COMICS"
26
+ assert_equal @item.creators, "(W) Jeff Lemire (A/CA) Andrea Sorrentino"
27
+ assert_equal @item.description, "Ollie returns to the island where he first became Green Arrow and learns some hard truths about his father and the mysterious Outsiders!"
28
+ assert_equal @item.release_date.to_s, "2013-06-05"
29
+ assert_equal @item.price, 2.99
30
+ assert_equal @item.state, :public
31
+ assert_equal @item.category_code, "1"
32
+ end
33
+
34
+ def test_that_the_public_hash_identifies_issues
35
+ setup_object(ISSUE_CODE)
36
+ assert_equal @item.category_code, ISSUE_CATEGORY_CODE
37
+ end
38
+
39
+ def test_that_the_public_hash_identifies_variants
40
+ setup_object(VARIANT_CODE)
41
+ assert_equal @item.category_code, ISSUE_CATEGORY_CODE
42
+ end
43
+
44
+ def test_that_the_public_hash_identifies_merchandise
45
+ setup_object(MERCH_CODE)
46
+ assert_includes MERCHANDISE_CATEGORY_CODES, @item.category_code
47
+ end
48
+
49
+ def test_that_the_public_hash_identifies_collection
50
+ setup_object(COLLECTION_CODE)
51
+ assert_equal @item.category_code, COLLECTION_CATEGORY_CODE
52
+ end
53
+
54
+ def test_that_the_public_hash_identifies_invalid_diamond_codes
55
+ setup_object("FEB1099999")
56
+ assert_equal @item, nil
57
+ end
58
+
59
+ end
@@ -0,0 +1,8 @@
1
+ require_relative '../test_helper'
2
+
3
+ class PullTest < MiniTest::Unit::TestCase
4
+
5
+ def test_that_it_chooses_public_when_no_login_info
6
+
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cb_nitride
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Alex Jarvis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: A Gem for accessing information from the diamond comics backend.
42
+ email:
43
+ - alxjrvs@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - cb_nitride.gemspec
54
+ - lib/cb_nitride.rb
55
+ - lib/cb_nitride/category_sorter.rb
56
+ - lib/cb_nitride/configuration.rb
57
+ - lib/cb_nitride/diamond_item.rb
58
+ - lib/cb_nitride/diamond_login.rb
59
+ - lib/cb_nitride/diamond_number_generator.rb
60
+ - lib/cb_nitride/exceptions.rb
61
+ - lib/cb_nitride/hasher_methods.rb
62
+ - lib/cb_nitride/module_methods.rb
63
+ - lib/cb_nitride/private_hasher.rb
64
+ - lib/cb_nitride/public_hasher.rb
65
+ - lib/cb_nitride/version.rb
66
+ - test/cassettes/test_that_it_can_log_in_cassette.yml
67
+ - test/cassettes/test_that_it_fails_with_bad_information_cassette.yml
68
+ - test/cassettes/test_that_it_resets_the_agent_cassette.yml
69
+ - test/cassettes/test_that_the_private_diamond_item_contains_the_right_fields_cassette.yml
70
+ - test/cassettes/test_that_the_private_hash_contains_the_right_fields_cassette.yml
71
+ - test/cassettes/test_that_the_private_hash_identifies_collection_cassette.yml
72
+ - test/cassettes/test_that_the_private_hash_identifies_invalid_diamond_codes_cassette.yml
73
+ - test/cassettes/test_that_the_private_hash_identifies_issues_cassette.yml
74
+ - test/cassettes/test_that_the_private_hash_identifies_merchandise_cassette.yml
75
+ - test/cassettes/test_that_the_private_hash_identifies_variants_cassette.yml
76
+ - test/cassettes/test_that_the_private_hash_produces_a_diamond_item_cassette.yml
77
+ - test/cassettes/test_that_the_public_diamond_item_contains_the_right_fields_cassette.yml
78
+ - test/cassettes/test_that_the_public_hash_contains_the_right_fields_cassette.yml
79
+ - test/cassettes/test_that_the_public_hash_identifies_collection_cassette.yml
80
+ - test/cassettes/test_that_the_public_hash_identifies_invalid_diamond_codes_cassette.yml
81
+ - test/cassettes/test_that_the_public_hash_identifies_issues_cassette.yml
82
+ - test/cassettes/test_that_the_public_hash_identifies_merchandise_cassette.yml
83
+ - test/cassettes/test_that_the_public_hash_identifies_variants_cassette.yml
84
+ - test/cassettes/test_that_the_public_hash_produces_a_diamond_item_cassette.yml
85
+ - test/test_helper.rb
86
+ - test/unit/configuration_test.rb
87
+ - test/unit/diamond_item_test.rb
88
+ - test/unit/diamond_login_test.rb
89
+ - test/unit/private_hasher_test.rb
90
+ - test/unit/public_hasher_test.rb
91
+ - test/unit/pull_test.rb
92
+ homepage: ''
93
+ licenses:
94
+ - MIT
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.0.0
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: Only useable with a qualified Diamond Comic Retailer!
116
+ test_files:
117
+ - test/cassettes/test_that_it_can_log_in_cassette.yml
118
+ - test/cassettes/test_that_it_fails_with_bad_information_cassette.yml
119
+ - test/cassettes/test_that_it_resets_the_agent_cassette.yml
120
+ - test/cassettes/test_that_the_private_diamond_item_contains_the_right_fields_cassette.yml
121
+ - test/cassettes/test_that_the_private_hash_contains_the_right_fields_cassette.yml
122
+ - test/cassettes/test_that_the_private_hash_identifies_collection_cassette.yml
123
+ - test/cassettes/test_that_the_private_hash_identifies_invalid_diamond_codes_cassette.yml
124
+ - test/cassettes/test_that_the_private_hash_identifies_issues_cassette.yml
125
+ - test/cassettes/test_that_the_private_hash_identifies_merchandise_cassette.yml
126
+ - test/cassettes/test_that_the_private_hash_identifies_variants_cassette.yml
127
+ - test/cassettes/test_that_the_private_hash_produces_a_diamond_item_cassette.yml
128
+ - test/cassettes/test_that_the_public_diamond_item_contains_the_right_fields_cassette.yml
129
+ - test/cassettes/test_that_the_public_hash_contains_the_right_fields_cassette.yml
130
+ - test/cassettes/test_that_the_public_hash_identifies_collection_cassette.yml
131
+ - test/cassettes/test_that_the_public_hash_identifies_invalid_diamond_codes_cassette.yml
132
+ - test/cassettes/test_that_the_public_hash_identifies_issues_cassette.yml
133
+ - test/cassettes/test_that_the_public_hash_identifies_merchandise_cassette.yml
134
+ - test/cassettes/test_that_the_public_hash_identifies_variants_cassette.yml
135
+ - test/cassettes/test_that_the_public_hash_produces_a_diamond_item_cassette.yml
136
+ - test/test_helper.rb
137
+ - test/unit/configuration_test.rb
138
+ - test/unit/diamond_item_test.rb
139
+ - test/unit/diamond_login_test.rb
140
+ - test/unit/private_hasher_test.rb
141
+ - test/unit/public_hasher_test.rb
142
+ - test/unit/pull_test.rb