planning_center 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/.env +4 -0
  3. data/.gitignore +18 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +6 -0
  6. data/.travis.yml +12 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +32 -0
  10. data/Rakefile +17 -0
  11. data/lib/planning_center.rb +14 -0
  12. data/lib/planning_center/base.rb +24 -0
  13. data/lib/planning_center/client.rb +63 -0
  14. data/lib/planning_center/errors.rb +5 -0
  15. data/lib/planning_center/lazy_attributes.rb +37 -0
  16. data/lib/planning_center/organization.rb +16 -0
  17. data/lib/planning_center/plan.rb +44 -0
  18. data/lib/planning_center/service_type.rb +9 -0
  19. data/lib/planning_center/version.rb +5 -0
  20. data/planning_center.gemspec +34 -0
  21. data/spec/cassettes/PlanningCenter_Organization/organization.yml +67 -0
  22. data/spec/cassettes/PlanningCenter_Plan/_find/returns_a_plan.yml +133 -0
  23. data/spec/cassettes/PlanningCenter_Plan/_find_all_for_service_type/returns_an_array_of_Plans.yml +69 -0
  24. data/spec/cassettes/PlanningCenter_Plan/_total_length/behaves_like_lazy_attribute/_lazy_method/the_object_is_fully_loaded/returns_the_subject_lazy_value.yml +133 -0
  25. data/spec/cassettes/PlanningCenter_Plan/_total_length/behaves_like_lazy_attribute/_lazy_method/the_object_is_not_fully_loaded/loads_the_full_and_returns_the_lazy_value.yml +199 -0
  26. data/spec/cassettes/PlanningCenter_ServiceType/_plans/returns_an_array_of_plans.yml +69 -0
  27. data/spec/planning_center/base_spec.rb +45 -0
  28. data/spec/planning_center/client_spec.rb +31 -0
  29. data/spec/planning_center/lazy_attributes_spec.rb +50 -0
  30. data/spec/planning_center/organization_spec.rb +19 -0
  31. data/spec/planning_center/plan_spec.rb +33 -0
  32. data/spec/planning_center/service_type_spec.rb +12 -0
  33. data/spec/planning_center_spec.rb +9 -0
  34. data/spec/spec_helper.rb +51 -0
  35. data/spec/support/env.rb +34 -0
  36. data/spec/support/shared_lazy_attribute_examples.rb +27 -0
  37. metadata +249 -0
@@ -0,0 +1,69 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://planningcenteronline.com/service_types/230211/plans.json
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - OAuth gem v0.4.7
16
+ Authorization:
17
+ - OAuth oauth_consumer_key="<PCO_CONSUMER_KEY>", oauth_nonce="gIx65vTSqyXu0bH9JRfvDMDbcANvtlLbpqNaKgcsrw",
18
+ oauth_signature="mJMj3oeCWXeAcs30aY28obJ%2BdYI%3D", oauth_signature_method="HMAC-SHA1",
19
+ oauth_timestamp="1397642742", oauth_token="<PCO_ACCESS_TOKEN>", oauth_version="1.0"
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Server:
26
+ - nginx
27
+ Date:
28
+ - Wed, 16 Apr 2014 10:05:46 GMT
29
+ Content-Type:
30
+ - application/json; charset=utf-8
31
+ Content-Length:
32
+ - '506'
33
+ Connection:
34
+ - keep-alive
35
+ Status:
36
+ - 200 OK
37
+ Last-Modified:
38
+ - Wed, 16 Apr 2014 10:05:42 GMT
39
+ Expires:
40
+ - '0'
41
+ Pragma:
42
+ - no-cache
43
+ Cache-Control:
44
+ - must-revalidate, no-cache, no-store, private, max-age=0, post-check=0, pre-check=0
45
+ X-Ua-Compatible:
46
+ - IE=Edge,chrome=1
47
+ Set-Cookie:
48
+ - _account_center_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFVEkiJTRkOGIxMTFhNjkyNzVhNTM1YjZmZjE3MmJkNjU3NWFhBjsAVA%3D%3D--3eaf6c79473511ada1f6cf5388e8ea412389026b;
49
+ domain=.planningcenteronline.com; path=/; expires=Wed, 30-Apr-2014 10:05:42
50
+ GMT; HttpOnly
51
+ X-Request-Id:
52
+ - 4964b74aca443a6b3189b3d2fb8b6945
53
+ X-Runtime:
54
+ - '0.052574'
55
+ X-Rack-Cache:
56
+ - miss
57
+ X-Cache:
58
+ - MISS
59
+ body:
60
+ encoding: UTF-8
61
+ string: "[{\"id\":13531990,\"plan_title\":\"Jesus Is a Better Teacher\",\"series_title\":\"Jesus
62
+ Is Better - Hymns from Hebrews\",\"service_type_id\":230211,\"service_type_name\":\"Weekend
63
+ Service\",\"dates\":\"27 April 2014\",\"series\":null,\"public\":false,\"updated_at\":\"2014/04/16
64
+ 09:12:47 +0000\",\"created_at\":\"2014/04/16 08:56:19 +0000\",\"sort_date\":\"2014/04/27
65
+ 10:30:00 +0000\",\"type\":\"Plan\",\"updated_by\":{\"id\":2768489,\"name\":\"Mo
66
+ Lawson\"},\"created_by\":{\"id\":2768489,\"name\":\"Mo Lawson\"},\"permissions\":\"Administrator\",\"scheduled\":false}]"
67
+ http_version:
68
+ recorded_at: Wed, 16 Apr 2014 10:05:42 GMT
69
+ recorded_with: VCR 2.9.0
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PlanningCenter::Base do
6
+ describe '#method_missing' do
7
+ it 'delegates method calls to the attrs hash' do
8
+ attrs = { 'id' => 123 }
9
+ expect(PlanningCenter::Base.new(attrs, client).id).to eq(123)
10
+ end
11
+
12
+ it 'returns nil for nil attrs values' do
13
+ attrs = { 'name' => nil }
14
+ expect(PlanningCenter::Base.new(attrs, client).name).to be_nil
15
+ end
16
+
17
+ it 'raises NoMethodError for unrecognized method calls' do
18
+ expect { PlanningCenter::Base.new({}, client).giraffe }.to(
19
+ raise_error(NoMethodError)
20
+ )
21
+ end
22
+ end
23
+
24
+ describe '#respond_to_missing?' do
25
+ it 'responds to methods matching hash keys' do
26
+ attrs = { 'id' => 123 }
27
+ expect(
28
+ PlanningCenter::Base.new(attrs, client).respond_to?(:id)
29
+ ).to be_true
30
+ end
31
+
32
+ it 'responds to methods with nil values' do
33
+ attrs = { 'name' => nil }
34
+ expect(
35
+ PlanningCenter::Base.new(attrs, client).respond_to?(:name)
36
+ ).to be_true
37
+ end
38
+
39
+ it 'does not respond to methods not matching hash keys' do
40
+ expect(
41
+ PlanningCenter::Base.new({}, client).respond_to?(:giraffe)
42
+ ).to be_false
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PlanningCenter::Client do
6
+ describe '#organization' do
7
+ it 'finds the organziation for the given credentials' do
8
+ subject = PlanningCenter::Client.new
9
+ organization = double('organization')
10
+ expect(PlanningCenter::Organization).to(
11
+ receive(:find).with(subject).and_return(organization)
12
+ )
13
+ expect(subject.organization).to eq(organization)
14
+ end
15
+ end
16
+
17
+ describe '#get' do
18
+ it 'makes a get request via the oauth access token' do
19
+ url = '/organization.json'
20
+ org_request = stub_get(url).to_return(body: { abc: 123 }.to_json)
21
+ client.get(url)
22
+ assert_requested org_request
23
+ end
24
+
25
+ it 'raises an APIError for a bad response' do
26
+ url = '/organization.json'
27
+ stub_get(url).to_return(body: nil.to_json)
28
+ expect { client.get(url) }.to raise_error(PlanningCenter::APIError)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,50 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ class DummyCar
6
+ include PlanningCenter::LazyAttributes
7
+
8
+ attr_accessor :attrs
9
+ lazy_accessor :seats
10
+
11
+ def initialize(attrs = {})
12
+ @attrs = attrs
13
+ end
14
+
15
+ def method_missing(method_name, *args)
16
+ attrs.fetch(method_name.to_s) { super }
17
+ end
18
+
19
+ private
20
+
21
+ def complete_attrs
22
+ { 'make' => 'Ford', 'model' => 'Focus', 'seats' => 5 }
23
+ end
24
+ end
25
+
26
+ describe PlanningCenter::LazyAttributes do
27
+ describe '.lazy_accessor' do
28
+ it 'defines reader methods for each name given' do
29
+ car = DummyCar.new
30
+ respond_to = lambda do
31
+ car.respond_to?(:giraffe) && car.respond_to?(:wildebeest)
32
+ end
33
+ expect { car.class.send(:lazy_accessor, :giraffe, :wildebeest) }.
34
+ to change { respond_to.call }.from(false).to(true)
35
+ end
36
+ end
37
+
38
+ describe '#seats' do
39
+ it_behaves_like 'lazy attribute' do
40
+ let(:partial_object) do
41
+ DummyCar.new('make' => 'Ford', 'model' => 'Focus')
42
+ end
43
+ let(:complete_object) do
44
+ DummyCar.new('make' => 'Ford', 'model' => 'Focus', 'seats' => 5)
45
+ end
46
+ let(:lazy_method) { :seats }
47
+ let(:lazy_value) { 5 }
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PlanningCenter::Organization do
6
+ describe '.find' do
7
+ it 'returns an organization' do
8
+ expect(organization.name).to eq('The Bridgeway Church')
9
+ end
10
+ end
11
+
12
+ describe '#service_types' do
13
+ it 'returns an array of service types' do
14
+ expect(
15
+ organization.service_types.first
16
+ ).to be_a(PlanningCenter::ServiceType)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PlanningCenter::Plan do
6
+ describe '.find_all_for_service_type', :vcr do
7
+ it 'returns an array of Plans' do
8
+ plans = PlanningCenter::Plan.find_all_for_service_type(230211, client)
9
+ expect(plans.first).to be_a(PlanningCenter::Plan)
10
+ end
11
+ end
12
+
13
+ describe '.find', :vcr do
14
+ it 'returns a plan' do
15
+ plan = PlanningCenter::Plan.find(13531990, client)
16
+ expect(plan.plan_title).to eq('Jesus Is a Better Teacher')
17
+ expect(plan.total_length).to eq(4710)
18
+ end
19
+ end
20
+
21
+ describe '#total_length', :vcr do
22
+ it_behaves_like 'lazy attribute' do
23
+ let(:partial_object) do
24
+ PlanningCenter::Plan.
25
+ find_all_for_service_type(230211, client).
26
+ first
27
+ end
28
+ let(:complete_object) { PlanningCenter::Plan.find(13531990, client) }
29
+ let(:lazy_method) { :total_length }
30
+ let(:lazy_value) { 4710 }
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PlanningCenter::ServiceType do
6
+ describe '#plans', :vcr do
7
+ it 'returns an array of plans' do
8
+ service_type = organization.service_types.first
9
+ expect(service_type.plans.first).to be_a(PlanningCenter::Plan)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe PlanningCenter do
6
+ it 'should have a version number' do
7
+ PlanningCenter::VERSION.should_not be_nil
8
+ end
9
+ end
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+
3
+ require 'codeclimate-test-reporter'
4
+ CodeClimate::TestReporter.start
5
+
6
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
7
+ require 'planning_center'
8
+
9
+ require './spec/support/env'
10
+ require './spec/support/shared_lazy_attribute_examples'
11
+
12
+ require 'webmock/rspec'
13
+ WebMock.disable_net_connect!(allow: 'codeclimate.com')
14
+
15
+ require 'vcr'
16
+ VCR.configure do |c|
17
+ c.cassette_library_dir = 'spec/cassettes'
18
+ c.hook_into :webmock
19
+ c.configure_rspec_metadata!
20
+ c.filter_sensitive_data('<PCO_CONSUMER_KEY>') do
21
+ test_consumer_key
22
+ end
23
+ c.filter_sensitive_data('<PCO_CONSUMER_SECRET>') do
24
+ test_consumer_secret
25
+ end
26
+ c.filter_sensitive_data('<PCO_ACCESS_TOKEN>') do
27
+ test_access_token
28
+ end
29
+ c.filter_sensitive_data('<PCO_ACCESS_TOKEN_SECRET>') do
30
+ test_access_token_secret
31
+ end
32
+ c.ignore_hosts 'codeclimate.com'
33
+ end
34
+
35
+ RSpec.configure do |c|
36
+ c.treat_symbols_as_metadata_keys_with_true_values = true
37
+ end
38
+
39
+ def stub_get(path)
40
+ stub_request(:get, pco_url(path))
41
+ end
42
+
43
+ def pco_url(path)
44
+ [PlanningCenter::Client::SITE, path].join
45
+ end
46
+
47
+ def organization
48
+ VCR.use_cassette('PlanningCenter::Organization/organization') do
49
+ PlanningCenter::Organization.find(client)
50
+ end
51
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ require 'awesome_print'
4
+
5
+ require 'dotenv'
6
+ Dotenv.load(
7
+ File.expand_path('../../../.local.env', __FILE__),
8
+ File.expand_path('../../../.env', __FILE__)
9
+ )
10
+
11
+ def test_consumer_key
12
+ ENV['PCO_TEST_CONSUMER_KEY']
13
+ end
14
+
15
+ def test_consumer_secret
16
+ ENV['PCO_TEST_CONSUMER_SECRET']
17
+ end
18
+
19
+ def test_access_token
20
+ ENV['PCO_TEST_ACCESS_TOKEN']
21
+ end
22
+
23
+ def test_access_token_secret
24
+ ENV['PCO_TEST_ACCESS_TOKEN_SECRET']
25
+ end
26
+
27
+ def client
28
+ @client ||= PlanningCenter::Client.new do |c|
29
+ c.consumer_key = test_consumer_key
30
+ c.consumer_secret = test_consumer_secret
31
+ c.access_token = test_access_token
32
+ c.access_token_secret = test_access_token_secret
33
+ end
34
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+
3
+ shared_examples 'lazy attribute' do
4
+ describe '#lazy_method' do
5
+ context 'the object is not fully loaded' do
6
+ subject { partial_object }
7
+
8
+ it 'loads the full and returns the lazy_value' do
9
+ expect { subject.public_send(lazy_method) }.
10
+ to change { subject.load_state }.from(:ghost).to(:loaded)
11
+ expect(subject.public_send(lazy_method)).to eq(lazy_value)
12
+ end
13
+ end
14
+
15
+ context 'the object is fully loaded' do
16
+ before { subject.load_state = :loaded }
17
+
18
+ subject { complete_object }
19
+
20
+ it 'returns the subject lazy_value' do
21
+ expect { subject.public_send(lazy_method) }.
22
+ to_not change { subject.load_state }
23
+ expect(subject.public_send(lazy_method)).to eq(lazy_value)
24
+ end
25
+ end
26
+ end
27
+ end
metadata ADDED
@@ -0,0 +1,249 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: planning_center
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mo Lawson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: oauth
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.14'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.14'
83
+ - !ruby/object:Gem::Dependency
84
+ name: vcr
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.9'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.17'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.17'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.20'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.20'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.9'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.9'
139
+ - !ruby/object:Gem::Dependency
140
+ name: dotenv
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.10'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.10'
153
+ - !ruby/object:Gem::Dependency
154
+ name: awesome_print
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.2'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.2'
167
+ description: Ruby wrapper for the Planning Center Online API.
168
+ email:
169
+ - mo@molawson.com
170
+ executables: []
171
+ extensions: []
172
+ extra_rdoc_files: []
173
+ files:
174
+ - ".env"
175
+ - ".gitignore"
176
+ - ".rspec"
177
+ - ".rubocop.yml"
178
+ - ".travis.yml"
179
+ - Gemfile
180
+ - LICENSE.txt
181
+ - README.md
182
+ - Rakefile
183
+ - lib/planning_center.rb
184
+ - lib/planning_center/base.rb
185
+ - lib/planning_center/client.rb
186
+ - lib/planning_center/errors.rb
187
+ - lib/planning_center/lazy_attributes.rb
188
+ - lib/planning_center/organization.rb
189
+ - lib/planning_center/plan.rb
190
+ - lib/planning_center/service_type.rb
191
+ - lib/planning_center/version.rb
192
+ - planning_center.gemspec
193
+ - spec/cassettes/PlanningCenter_Organization/organization.yml
194
+ - spec/cassettes/PlanningCenter_Plan/_find/returns_a_plan.yml
195
+ - spec/cassettes/PlanningCenter_Plan/_find_all_for_service_type/returns_an_array_of_Plans.yml
196
+ - spec/cassettes/PlanningCenter_Plan/_total_length/behaves_like_lazy_attribute/_lazy_method/the_object_is_fully_loaded/returns_the_subject_lazy_value.yml
197
+ - spec/cassettes/PlanningCenter_Plan/_total_length/behaves_like_lazy_attribute/_lazy_method/the_object_is_not_fully_loaded/loads_the_full_and_returns_the_lazy_value.yml
198
+ - spec/cassettes/PlanningCenter_ServiceType/_plans/returns_an_array_of_plans.yml
199
+ - spec/planning_center/base_spec.rb
200
+ - spec/planning_center/client_spec.rb
201
+ - spec/planning_center/lazy_attributes_spec.rb
202
+ - spec/planning_center/organization_spec.rb
203
+ - spec/planning_center/plan_spec.rb
204
+ - spec/planning_center/service_type_spec.rb
205
+ - spec/planning_center_spec.rb
206
+ - spec/spec_helper.rb
207
+ - spec/support/env.rb
208
+ - spec/support/shared_lazy_attribute_examples.rb
209
+ homepage: https://github.com/molawson/planning_center
210
+ licenses:
211
+ - MIT
212
+ metadata: {}
213
+ post_install_message:
214
+ rdoc_options: []
215
+ require_paths:
216
+ - lib
217
+ required_ruby_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ required_rubygems_version: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ version: '0'
227
+ requirements: []
228
+ rubyforge_project:
229
+ rubygems_version: 2.2.2
230
+ signing_key:
231
+ specification_version: 4
232
+ summary: Ruby wrapper for the Planning Center Online API.
233
+ test_files:
234
+ - spec/cassettes/PlanningCenter_Organization/organization.yml
235
+ - spec/cassettes/PlanningCenter_Plan/_find/returns_a_plan.yml
236
+ - spec/cassettes/PlanningCenter_Plan/_find_all_for_service_type/returns_an_array_of_Plans.yml
237
+ - spec/cassettes/PlanningCenter_Plan/_total_length/behaves_like_lazy_attribute/_lazy_method/the_object_is_fully_loaded/returns_the_subject_lazy_value.yml
238
+ - spec/cassettes/PlanningCenter_Plan/_total_length/behaves_like_lazy_attribute/_lazy_method/the_object_is_not_fully_loaded/loads_the_full_and_returns_the_lazy_value.yml
239
+ - spec/cassettes/PlanningCenter_ServiceType/_plans/returns_an_array_of_plans.yml
240
+ - spec/planning_center/base_spec.rb
241
+ - spec/planning_center/client_spec.rb
242
+ - spec/planning_center/lazy_attributes_spec.rb
243
+ - spec/planning_center/organization_spec.rb
244
+ - spec/planning_center/plan_spec.rb
245
+ - spec/planning_center/service_type_spec.rb
246
+ - spec/planning_center_spec.rb
247
+ - spec/spec_helper.rb
248
+ - spec/support/env.rb
249
+ - spec/support/shared_lazy_attribute_examples.rb