chiketto 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6473b173731e992724d08b26bb8325c9632bcfac
4
- data.tar.gz: 81aea07fa8aa0729732108f9b27c007db753158b
3
+ metadata.gz: 1768bc70da3e48380d8910456c5f55fcd9a882c1
4
+ data.tar.gz: 2f949518b15b4258dee4a863758e58b28b1d304e
5
5
  SHA512:
6
- metadata.gz: e7fad6f07a922300ec1743b1045100279e875a507511d99e0072194e7284673b8373905170ef33be4e4b22a3a0443d0614da7817fdb725bb86489f52f95da9f5
7
- data.tar.gz: 70ff6f7438b54dc6f1a5161b80d8cb7fca5b6b2320dee75dd89d3508d6e5eeb365f66850a961281aee07efa0b2ef0850737de1ce83eef75ff61b1339d7881ca3
6
+ metadata.gz: 31416533b8c8c98c82b2940846037a3fb817378e72f346f35e69962b75d8f1474322704a1c73afc6e31c0ab8abc4fb1040879a33038874e0275be7822503c6bb
7
+ data.tar.gz: ccb0f0bf3eac15fcbd932b8443bdb95b208b642658791145f97377d4fe12af2dd7c95b0517d656d950297d5c3e33686bd485878bd7f591e2760bc5356006e001
data/chiketto.gemspec CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.required_ruby_version = '>= 1.9.3'
22
+
21
23
  spec.add_development_dependency "bundler", "~> 1.6"
22
24
  spec.add_development_dependency "coveralls"
23
25
  spec.add_development_dependency "codeclimate-test-reporter"
data/lib/chiketto.rb CHANGED
@@ -2,7 +2,13 @@ module Chiketto
2
2
  ENDPOINT = 'https://www.eventbriteapi.com/v3/'
3
3
 
4
4
  require 'chiketto/version'
5
+ require 'chiketto/attribute'
6
+ require 'chiketto/attr_attribute'
5
7
  require 'chiketto/resource'
8
+ require 'chiketto/address'
6
9
  require 'chiketto/event'
10
+ require 'chiketto/organizer'
11
+ require 'chiketto/ticket_class'
12
+ require 'chiketto/venue'
7
13
 
8
14
  end
@@ -0,0 +1,15 @@
1
+ module Chiketto
2
+ class Address < Resource
3
+ attr_accessor :city,
4
+ :country,
5
+ :region,
6
+ :address_1,
7
+ :address_2,
8
+ :country_name
9
+
10
+ def to_s
11
+ [@address_1, @address_2, @city, @region, @country].
12
+ reject { |p| p.nil? }.join(', ')
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ module Chiketto
2
+ module AttrDSL
3
+ def self.included(base)
4
+ base.extend DSL
5
+ end
6
+
7
+ module DSL
8
+ def attr_attrib(*args)
9
+ args.map do |value|
10
+ define_method value.to_s do
11
+ Chiketto::Attribute.new Hash.new(instance_variable_get("@#{value}"))
12
+ end
13
+ end
14
+ end
15
+
16
+ def attr_date(*args)
17
+ args.map do |value|
18
+ define_method value.to_s do
19
+ date = instance_variable_get("@#{value}")
20
+ return date if date.nil?
21
+
22
+ date = date['utc'] if date.is_a?(Hash)
23
+ DateTime.strptime date, '%FT%TZ'
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,14 @@
1
+ module Chiketto
2
+ class Attribute
3
+ attr_accessor :text, :html
4
+
5
+ def initialize(hash = {})
6
+ @text = hash.fetch('text') { '' }
7
+ @html = hash.fetch('html') { @text }
8
+ end
9
+
10
+ def to_s
11
+ text
12
+ end
13
+ end
14
+ end
@@ -1,10 +1,36 @@
1
1
  module Chiketto
2
2
  class Event < Resource
3
- class << self
4
- def find(id)
5
- event = get "events/#{id}"
6
- Event.new event
3
+ attr_reader :resource_uri,
4
+ :url,
5
+ :capacity,
6
+ :categories,
7
+ :status
8
+
9
+ attr_attrib :description,
10
+ :name
11
+
12
+ attr_date :start,
13
+ :end,
14
+ :created,
15
+ :changed
16
+
17
+ def organizer
18
+ Chiketto::Organizer.new Hash.new(@organizer)
19
+ end
20
+
21
+ def ticket_classes
22
+ @ticket_classes.map do |t_class|
23
+ Chiketto::TicketClass.new Hash.new(t_class)
7
24
  end
8
25
  end
26
+
27
+ def venue
28
+ Chiketto::Venue.new Hash.new(@venue)
29
+ end
30
+
31
+ def self.find(id)
32
+ event = get "events/#{id}"
33
+ Event.new event
34
+ end
9
35
  end
10
36
  end
@@ -0,0 +1,7 @@
1
+ module Chiketto
2
+ class Organizer < Resource
3
+ attr_accessor :name
4
+
5
+ attr_attrib :description
6
+ end
7
+ end
@@ -3,6 +3,8 @@ require 'open-uri'
3
3
 
4
4
  module Chiketto
5
5
  class Resource
6
+ include Chiketto::AttrDSL
7
+
6
8
  attr_reader :id
7
9
 
8
10
  def initialize(args)
@@ -11,22 +13,18 @@ module Chiketto
11
13
  end
12
14
  end
13
15
 
14
- class << self
15
- def get(uri)
16
- uri = endpoint uri
17
- resource = open uri
18
- JSON.parse resource.read
19
- end
20
-
21
- private
16
+ def self.get(uri)
17
+ uri = endpoint uri
18
+ resource = open uri
19
+ JSON.parse resource.read
20
+ end
22
21
 
23
- def endpoint(uri)
24
- ENDPOINT + uri + token
25
- end
22
+ def self.endpoint(uri)
23
+ ENDPOINT + uri + token
24
+ end
26
25
 
27
- def token
28
- "?token=#{ENV['EVENTBRITE_API_TOKEN']}"
29
- end
26
+ def self.token
27
+ "?token=#{ENV['EVENTBRITE_API_TOKEN']}"
30
28
  end
31
29
  end
32
30
  end
@@ -0,0 +1,16 @@
1
+ module Chiketto
2
+ class TicketClass < Resource
3
+ attr_accessor :name,
4
+ :cost,
5
+ :fee,
6
+ :currency,
7
+ :free,
8
+ :minimum_quantity,
9
+ :maximum_quantity,
10
+ :quantity_total,
11
+ :quantity_sold
12
+
13
+ attr_date :sales_start,
14
+ :sales_end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module Chiketto
2
+ class Venue < Resource
3
+ attr_accessor :latitude,
4
+ :longitude,
5
+ :name
6
+
7
+ def address
8
+ Chiketto::Address.new Hash.new(@address)
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Chiketto
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ class AddressTest < MiniTest::Test
4
+ def setup
5
+ @address = Chiketto::Address.new 'city' => 'San Francisco',
6
+ 'country' => 'US',
7
+ 'region' => 'CA',
8
+ 'address_1' => '651 Brannan',
9
+ 'address_2' => 'Suite 110',
10
+ 'country_name' => 'United States'
11
+ end
12
+
13
+ def test_responds_to_methods
14
+ assert_respond_to @address, :city
15
+ assert_respond_to @address, :country
16
+ assert_respond_to @address, :region
17
+ assert_respond_to @address, :address_1
18
+ assert_respond_to @address, :address_2
19
+ assert_respond_to @address, :country_name
20
+ end
21
+
22
+ def test_responds_to_string_method
23
+ assert_equal '651 Brannan, Suite 110, San Francisco, CA, US', @address.to_s
24
+ end
25
+
26
+ def test_does_not_include_blanks_in_string
27
+ @address.region = nil
28
+ assert_equal '651 Brannan, Suite 110, San Francisco, US', @address.to_s
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ class AttributeTest < MiniTest::Test
4
+ def setup
5
+ @attrib = Chiketto::Attribute.new 'text' => 'Test', 'html' => '<p>Test</p>'
6
+ end
7
+
8
+ def test_attribute_accepts_and_returns_values
9
+ assert_respond_to @attrib, :text
10
+ assert_respond_to @attrib, :html
11
+ assert_equal 'Test', @attrib.text
12
+ assert_equal '<p>Test</p>', @attrib.html
13
+ end
14
+
15
+ def test_attribute_responds_to_s
16
+ assert_respond_to @attrib, :to_s
17
+ assert_equal 'Test', @attrib.to_s
18
+ assert_equal 'Test', "#{@attrib}"
19
+ end
20
+
21
+ def test_html_falls_back_to_text
22
+ attrib = Chiketto::Attribute.new 'text' => 'Test'
23
+ assert_equal 'Test', attrib.html
24
+ end
25
+
26
+ def test_text_falls_back_to_empty_string
27
+ attrib = Chiketto::Attribute.new
28
+ assert_equal '', attrib.text
29
+ end
30
+ end
data/test/event_test.rb CHANGED
@@ -1,10 +1,63 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class EventTest < MiniTest::Test
4
- def test_fetching_event
4
+ TEST_ID = '9203575141'
5
+
6
+ def setup
5
7
  VCR.use_cassette 'eventbriteapi' do
6
- event = Chiketto::Event.find 9203575141
7
- assert_equal event.id, '9203575141'
8
+ @event = Chiketto::Event.find TEST_ID
8
9
  end
9
10
  end
11
+
12
+ def test_fetching_event
13
+ assert_kind_of Chiketto::Event, @event
14
+ assert_equal @event.id, TEST_ID
15
+ end
16
+
17
+ def test_event_exposes_data
18
+ assert_respond_to @event, :id
19
+ assert_respond_to @event, :name
20
+ assert_respond_to @event, :description
21
+ assert_respond_to @event, :resource_uri
22
+ assert_respond_to @event, :organizer
23
+ assert_respond_to @event, :venue
24
+ assert_respond_to @event, :ticket_classes
25
+ assert_respond_to @event, :url
26
+ assert_respond_to @event, :start
27
+ assert_respond_to @event, :end
28
+ assert_respond_to @event, :created
29
+ assert_respond_to @event, :changed
30
+ assert_respond_to @event, :capacity
31
+ assert_respond_to @event, :categories
32
+ assert_respond_to @event, :status
33
+ end
34
+
35
+ def test_name_attribute_is_valid
36
+ assert_respond_to @event.name, :html
37
+ assert_respond_to @event.name, :text
38
+ end
39
+
40
+ def test_description_attribute_is_valid
41
+ assert_respond_to @event.description, :html
42
+ assert_respond_to @event.description, :text
43
+ end
44
+
45
+ def test_organizer_is_object
46
+ assert_kind_of Chiketto::Organizer, @event.organizer
47
+ end
48
+
49
+ def test_venue_is_object
50
+ assert_kind_of Chiketto::Venue, @event.venue
51
+ end
52
+
53
+ def test_ticket_classes_is_object
54
+ assert_kind_of Chiketto::TicketClass, @event.ticket_classes.first
55
+ end
56
+
57
+ def test_date_attributes
58
+ assert_kind_of DateTime, @event.end
59
+ assert_kind_of DateTime, @event.start
60
+ assert_kind_of DateTime, @event.created
61
+ assert_kind_of DateTime, @event.changed
62
+ end
10
63
  end
@@ -0,0 +1,23 @@
1
+ require 'test_helper'
2
+
3
+ class OrganizerTest < MiniTest::Test
4
+ def setup
5
+ @organizer = Chiketto::Organizer.new 'description' => {
6
+ 'text' => 'Description of the Example Organizer',
7
+ 'html' => '<p>Description of the Example Organizer</p>'
8
+ },
9
+ 'id' => '1667263718',
10
+ 'name' => 'Example Organizer'
11
+ end
12
+
13
+ def test_responds_to_methods
14
+ assert_respond_to @organizer, :description
15
+ assert_respond_to @organizer, :id
16
+ assert_respond_to @organizer, :name
17
+ end
18
+
19
+ def test_description_is_an_attribute
20
+ assert_respond_to @organizer.description, :html
21
+ assert_respond_to @organizer.description, :text
22
+ end
23
+ end
@@ -0,0 +1,38 @@
1
+ require 'test_helper'
2
+
3
+ class TicketClassTest < MiniTest::Test
4
+ def setup
5
+ @tclass = Chiketto::TicketClass.new 'id' => '22315349',
6
+ 'name' => 'General Admission',
7
+ 'cost' => nil,
8
+ 'fee' => nil,
9
+ 'currency' => nil,
10
+ 'free' => true,
11
+ 'minimum_quantity' => 1,
12
+ 'maximum_quantity' => nil,
13
+ 'quantity_total' => 19999,
14
+ 'quantity_sold' => 1000,
15
+ 'sales_start' => nil,
16
+ 'sales_end' => '2014-12-01T22:59:59Z'
17
+ end
18
+
19
+ def test_ticket_class_responds_to_methods
20
+ assert_respond_to @tclass, :id
21
+ assert_respond_to @tclass, :name
22
+ assert_respond_to @tclass, :cost
23
+ assert_respond_to @tclass, :fee
24
+ assert_respond_to @tclass, :currency
25
+ assert_respond_to @tclass, :free
26
+ assert_respond_to @tclass, :minimum_quantity
27
+ assert_respond_to @tclass, :maximum_quantity
28
+ assert_respond_to @tclass, :quantity_total
29
+ assert_respond_to @tclass, :quantity_sold
30
+ assert_respond_to @tclass, :sales_start
31
+ assert_respond_to @tclass, :sales_end
32
+ end
33
+
34
+ def test_ticket_dates_return_datetime
35
+ assert_kind_of NilClass, @tclass.sales_start
36
+ assert_kind_of DateTime, @tclass.sales_end
37
+ end
38
+ end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class VenueTest < MiniTest::Test
4
+ def test_venue_methods_exist
5
+ @venue = Chiketto::Venue.new 'id' => '545454',
6
+ 'address' => {
7
+ 'city' => 'San Francisco',
8
+ 'country' => 'US',
9
+ 'region' => 'CA',
10
+ 'address_1' => '651 Brannan',
11
+ 'address_2' => 'Suite 110',
12
+ 'country_name' => 'United States'
13
+ },
14
+ 'latitude' => '42.3618641',
15
+ 'longitude' => '-71.0905626',
16
+ 'name' => 'Eventbrite HQ'
17
+
18
+ assert_respond_to @venue, :id
19
+ assert_respond_to @venue, :address
20
+ assert_respond_to @venue, :latitude
21
+ assert_respond_to @venue, :longitude
22
+ assert_respond_to @venue, :name
23
+ end
24
+
25
+ def test_venue_with_no_address
26
+ @venue = Chiketto::Venue.new 'id' => '545454',
27
+ 'latitude' => '42.3618641',
28
+ 'longitude' => '-71.0905626',
29
+ 'name' => 'Eventbrite HQ'
30
+
31
+ assert_respond_to @venue.address, :to_s
32
+ end
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chiketto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Radford
@@ -137,12 +137,23 @@ files:
137
137
  - Rakefile
138
138
  - chiketto.gemspec
139
139
  - lib/chiketto.rb
140
+ - lib/chiketto/address.rb
141
+ - lib/chiketto/attr_attribute.rb
142
+ - lib/chiketto/attribute.rb
140
143
  - lib/chiketto/event.rb
144
+ - lib/chiketto/organizer.rb
141
145
  - lib/chiketto/resource.rb
146
+ - lib/chiketto/ticket_class.rb
147
+ - lib/chiketto/venue.rb
142
148
  - lib/chiketto/version.rb
149
+ - test/address_test.rb
150
+ - test/attribute_test.rb
143
151
  - test/chiketto_test.rb
144
152
  - test/event_test.rb
153
+ - test/organizer_test.rb
145
154
  - test/test_helper.rb
155
+ - test/ticket_class_test.rb
156
+ - test/venue_test.rb
146
157
  homepage: https://github.com/chrisradford/chiketto
147
158
  licenses:
148
159
  - MIT
@@ -155,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
166
  requirements:
156
167
  - - ">="
157
168
  - !ruby/object:Gem::Version
158
- version: '0'
169
+ version: 1.9.3
159
170
  required_rubygems_version: !ruby/object:Gem::Requirement
160
171
  requirements:
161
172
  - - ">="
@@ -168,6 +179,11 @@ signing_key:
168
179
  specification_version: 4
169
180
  summary: Chiketto is a ruby gem for interacting with the Eventbrite V3 API
170
181
  test_files:
182
+ - test/address_test.rb
183
+ - test/attribute_test.rb
171
184
  - test/chiketto_test.rb
172
185
  - test/event_test.rb
186
+ - test/organizer_test.rb
173
187
  - test/test_helper.rb
188
+ - test/ticket_class_test.rb
189
+ - test/venue_test.rb