cb_nitride 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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