google_calendar 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- google_calendar (0.4.1)
4
+ google_calendar (0.4.3)
5
5
  signet (~> 0.5)
6
6
 
7
7
  GEM
@@ -31,7 +31,7 @@ GEM
31
31
  minitest (>= 3.0)
32
32
  hitimes (1.2.2)
33
33
  json (1.8.1)
34
- jwt (1.0.0)
34
+ jwt (1.2.0)
35
35
  listen (2.8.0)
36
36
  celluloid (>= 0.15.2)
37
37
  rb-fsevent (>= 0.9.3)
@@ -2,8 +2,8 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "google_calendar"
5
- s.version = "0.4.2"
6
- s.date = "2014-11-23"
5
+ s.version = "0.4.3"
6
+ s.date = "2014-11-30"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
 
@@ -187,7 +187,11 @@ module Google
187
187
  # Works like the create_event method.
188
188
  #
189
189
  def find_or_create_event_by_id(id, &blk)
190
- setup_event(find_event_by_id(id)[0] || Event.new, &blk)
190
+ if id.nil?
191
+ setup_event(Event.new, &blk)
192
+ else
193
+ setup_event(find_event_by_id(id)[0] || Event.new, &blk)
194
+ end
191
195
  end
192
196
 
193
197
  #
data/lib/google/event.rb CHANGED
@@ -47,8 +47,7 @@ module Google
47
47
  # ]
48
48
  #
49
49
  def initialize(params = {})
50
- [:id, :raw, :html_link,
51
- :title, :location, :calendar, :quickadd, :attendees, :description, :reminders, :start_time, :end_time, ].each do |attribute|
50
+ [:id, :raw, :html_link, :title, :location, :calendar, :quickadd, :attendees, :description, :reminders, :start_time, :end_time, ].each do |attribute|
52
51
  instance_variable_set("@#{attribute}", params[attribute])
53
52
  end
54
53
 
@@ -60,7 +59,7 @@ module Google
60
59
  # Sets the start time of the Event. Must be a Time object or a parse-able string representation of a time.
61
60
  #
62
61
  def start_time=(time)
63
- @start_time = parse_time(time)
62
+ @start_time = Event.parse_time(time)
64
63
  end
65
64
 
66
65
  #
@@ -87,7 +86,7 @@ module Google
87
86
  # Sets the end time of the Event. Must be a Time object or a parse-able string representation of a time.
88
87
  #
89
88
  def end_time=(time)
90
- @end_time = parse_time(time)
89
+ @end_time = Event.parse_time(time)
91
90
  raise ArgumentError, "End Time must be either Time or String" unless (time.is_a?(String) || time.is_a?(Time))
92
91
  @end_time = (time.is_a? String) ? Time.parse(time) : time.dup.utc
93
92
  end
@@ -279,8 +278,8 @@ module Google
279
278
  :title => e['summary'],
280
279
  :description => e['description'],
281
280
  :location => e['location'],
282
- :start_time => (e['start'] ? e['start']['dateTime'] : ''),
283
- :end_time => (e['end'] ? e['end']['dateTime'] : ''),
281
+ :start_time => Event.parse_json_time(e['start']),
282
+ :end_time => Event.parse_json_time(e['end']),
284
283
  :transparency => e['transparency'],
285
284
  :html_link => e['htmlLink'],
286
285
  :updated => e['updated'],
@@ -299,10 +298,20 @@ module Google
299
298
  @html_link = @raw['htmlLink']
300
299
  end
301
300
 
301
+ def self.parse_json_time(time_hash)
302
+ if time_hash['date']
303
+ Time.parse(time_hash['date']).utc
304
+ elsif time_hash['dateTime']
305
+ Time.parse(time_hash['dateTime']).utc
306
+ else
307
+ Time.now.utc
308
+ end
309
+ end
310
+
302
311
  #
303
312
  # A utility method used centralize time parsing.
304
313
  #
305
- def parse_time(time) #:nodoc
314
+ def self.parse_time(time) #:nodoc
306
315
  raise ArgumentError, "Start Time must be either Time or String" unless (time.is_a?(String) || time.is_a?(Time))
307
316
  (time.is_a? String) ? Time.parse(time) : time.dup.utc
308
317
  end
@@ -0,0 +1,31 @@
1
+ {
2
+ "status": "confirmed",
3
+ "kind": "calendar#event",
4
+ "end": {
5
+ "date": "2008-09-24T11:00:00-07:00"
6
+ },
7
+ "description": "Test Event",
8
+ "created": "2008-09-18T21:17:11.000Z",
9
+ "iCalUID": "fhru34kt6ikmr20knd2456l08n@google.com",
10
+ "reminders": {
11
+ "useDefault": true
12
+ },
13
+ "htmlLink": "https://www.google.com/calendar/event?eid=hJo0SgXn9qMwOHJjYWJpNnBhNTQ5dHRqbGsgZ3FlYjBpNnY3MzdrZnU1bWQwZjNldWtqbGdAZw",
14
+ "sequence": 1,
15
+ "updated": "2008-10-24T23:08:09.010Z",
16
+ "summary": "This is a test event",
17
+ "start": {
18
+ "date": "2008-09-24T10:30:00-07:00"
19
+ },
20
+ "etag": "\"2449779378020000\"",
21
+ "organizer": {
22
+ "self": true,
23
+ "displayName": "Some Person",
24
+ "email": "some.person@gmail.com"
25
+ },
26
+ "creator": {
27
+ "displayName": "Some Person",
28
+ "email": "some.person@gmail.com"
29
+ },
30
+ "id": "fhru34kt6ikmr20knd2456l10n"
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "status": "confirmed",
3
+ "kind": "calendar#event",
4
+ "end": {
5
+ "dateTimes": "2008-09-24T11:00:00-07:00"
6
+ },
7
+ "description": "Test Event",
8
+ "created": "2008-09-18T21:17:11.000Z",
9
+ "iCalUID": "fhru34kt6ikmr20knd2456l08n@google.com",
10
+ "reminders": {
11
+ "useDefault": true
12
+ },
13
+ "htmlLink": "https://www.google.com/calendar/event?eid=hJo0SgXn9qMwOHJjYWJpNnBhNTQ5dHRqbGsgZ3FlYjBpNnY3MzdrZnU1bWQwZjNldWtqbGdAZw",
14
+ "sequence": 1,
15
+ "updated": "2008-10-24T23:08:09.010Z",
16
+ "summary": "This is a test event",
17
+ "start": {
18
+ "dateTimes": "2008-09-24T10:30:00-07:00"
19
+ },
20
+ "etag": "\"2449779378020000\"",
21
+ "organizer": {
22
+ "self": true,
23
+ "displayName": "Some Person",
24
+ "email": "some.person@gmail.com"
25
+ },
26
+ "creator": {
27
+ "displayName": "Some Person",
28
+ "email": "some.person@gmail.com"
29
+ },
30
+ "id": "fhru34kt6ikmr20knd2456l12n"
31
+ }
@@ -79,9 +79,11 @@ class TestGoogleCalendar < Minitest::Test
79
79
  end
80
80
 
81
81
  should "find events in range" do
82
- start_min = Time.new(2011, 2, 1, 11, 1, 1).utc
83
- start_max = Time.new(2011, 2, 28, 23, 59, 59).utc
84
- @calendar.expects(:event_lookup).with('?timeMin=2011-02-01T19:01:01Z&timeMax=2011-03-01T07:59:59Z&orderBy=startTime&maxResults=25&singleEvents=true')
82
+ now = Time.now.utc
83
+ Time.stubs(:now).returns(now)
84
+ start_min = now
85
+ start_max = (now + 60*60*24)
86
+ @calendar.expects(:event_lookup).with("?timeMin=#{start_min.strftime("%FT%TZ")}&timeMax=#{start_max.strftime("%FT%TZ")}&orderBy=startTime&maxResults=25&singleEvents=true")
85
87
  events = @calendar.find_events_in_range(start_min, start_max)
86
88
  end
87
89
 
@@ -139,6 +141,23 @@ class TestGoogleCalendar < Minitest::Test
139
141
  assert_equal event.id, "fhru34kt6ikmr20knd2456l08n"
140
142
  end
141
143
 
144
+ should "find properly parse all day event" do
145
+ @client_mock.stubs(:body).returns( get_mock_body("find__all_day_event_by_id.json") )
146
+ event = @calendar.find_event_by_id('fhru34kt6ikmr20knd2456l10n')
147
+ assert_equal event[0].id, 'fhru34kt6ikmr20knd2456l10n'
148
+ assert_equal event[0].start_time, "2008-09-24T17:30:00Z"
149
+ end
150
+
151
+ should "find properly parse missing date event" do
152
+ now = Time.now.utc
153
+ Time.stubs(:now).returns(now)
154
+ formatted_time = now.strftime("%FT%TZ")
155
+ @client_mock.stubs(:body).returns( get_mock_body("missing_date.json") )
156
+ event = @calendar.find_event_by_id('fhru34kt6ikmr20knd2456l12n')
157
+ assert_equal event[0].id, 'fhru34kt6ikmr20knd2456l12n'
158
+ assert_equal event[0].start_time, formatted_time
159
+ end
160
+
142
161
  should "create a quickadd event" do
143
162
  @client_mock.stubs(:body).returns( get_mock_body("create_quickadd_event.json") )
144
163
 
@@ -204,6 +223,16 @@ class TestGoogleCalendar < Minitest::Test
204
223
  @calendar.events
205
224
  end
206
225
  end
226
+
227
+ should "create event when id is NIL" do
228
+ @client_mock.stubs(:body).returns( get_mock_body("find_event_by_id.json") )
229
+
230
+ event = @calendar.find_or_create_event_by_id(NIL) do |e|
231
+ e.title = 'New Event Update when id is NIL'
232
+ end
233
+
234
+ assert_equal event.title, 'New Event Update when id is NIL'
235
+ end
207
236
 
208
237
  end # Logged on context
209
238
 
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google_calendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Steve Zich
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-11-23 00:00:00.000000000 Z
12
+ date: 2014-11-30 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: signet
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: terminal-notifier-guard
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ~>
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ~>
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rb-fsevent
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: guard-minitest
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: minitest
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: minitest-reporters
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - ~>
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - ~>
95
108
  - !ruby/object:Gem::Version
@@ -97,6 +110,7 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: shoulda-context
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - ~>
102
116
  - !ruby/object:Gem::Version
@@ -104,6 +118,7 @@ dependencies:
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - ~>
109
124
  - !ruby/object:Gem::Version
@@ -111,20 +126,23 @@ dependencies:
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: bundler
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
- - - '>='
131
+ - - ! '>='
116
132
  - !ruby/object:Gem::Version
117
133
  version: '1.2'
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
- - - '>='
139
+ - - ! '>='
123
140
  - !ruby/object:Gem::Version
124
141
  version: '1.2'
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: mocha
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
147
  - - ~>
130
148
  - !ruby/object:Gem::Version
@@ -132,6 +150,7 @@ dependencies:
132
150
  type: :development
133
151
  prerelease: false
134
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
135
154
  requirements:
136
155
  - - ~>
137
156
  - !ruby/object:Gem::Version
@@ -139,6 +158,7 @@ dependencies:
139
158
  - !ruby/object:Gem::Dependency
140
159
  name: rake
141
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
142
162
  requirements:
143
163
  - - ~>
144
164
  - !ruby/object:Gem::Version
@@ -146,6 +166,7 @@ dependencies:
146
166
  type: :development
147
167
  prerelease: false
148
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
149
170
  requirements:
150
171
  - - ~>
151
172
  - !ruby/object:Gem::Version
@@ -153,6 +174,7 @@ dependencies:
153
174
  - !ruby/object:Gem::Dependency
154
175
  name: rdoc
155
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
156
178
  requirements:
157
179
  - - ~>
158
180
  - !ruby/object:Gem::Version
@@ -160,6 +182,7 @@ dependencies:
160
182
  type: :development
161
183
  prerelease: false
162
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
163
186
  requirements:
164
187
  - - ~>
165
188
  - !ruby/object:Gem::Version
@@ -197,10 +220,12 @@ files:
197
220
  - test/mocks/create_quickadd_event.json
198
221
  - test/mocks/empty_events.json
199
222
  - test/mocks/events.json
223
+ - test/mocks/find__all_day_event_by_id.json
200
224
  - test/mocks/find_event_by_id.json
201
225
  - test/mocks/login_with_auth_code_fail.json
202
226
  - test/mocks/login_with_auth_code_success.json
203
227
  - test/mocks/login_with_refresh_token_success.json
228
+ - test/mocks/missing_date.json
204
229
  - test/mocks/query_events.json
205
230
  - test/mocks/repeating_events.json
206
231
  - test/mocks/successful_login.json
@@ -208,26 +233,27 @@ files:
208
233
  homepage: http://northworld.github.io/google_calendar/
209
234
  licenses:
210
235
  - MIT
211
- metadata: {}
212
236
  post_install_message:
213
237
  rdoc_options: []
214
238
  require_paths:
215
239
  - lib
216
240
  required_ruby_version: !ruby/object:Gem::Requirement
241
+ none: false
217
242
  requirements:
218
- - - '>='
243
+ - - ! '>='
219
244
  - !ruby/object:Gem::Version
220
245
  version: '0'
221
246
  required_rubygems_version: !ruby/object:Gem::Requirement
247
+ none: false
222
248
  requirements:
223
- - - '>='
249
+ - - ! '>='
224
250
  - !ruby/object:Gem::Version
225
251
  version: '0'
226
252
  requirements: []
227
253
  rubyforge_project:
228
- rubygems_version: 2.0.3
254
+ rubygems_version: 1.8.24
229
255
  signing_key:
230
- specification_version: 4
256
+ specification_version: 3
231
257
  summary: A lightweight Google Calendar API wrapper
232
258
  test_files:
233
259
  - test/helper.rb
@@ -238,10 +264,12 @@ test_files:
238
264
  - test/mocks/create_quickadd_event.json
239
265
  - test/mocks/empty_events.json
240
266
  - test/mocks/events.json
267
+ - test/mocks/find__all_day_event_by_id.json
241
268
  - test/mocks/find_event_by_id.json
242
269
  - test/mocks/login_with_auth_code_fail.json
243
270
  - test/mocks/login_with_auth_code_success.json
244
271
  - test/mocks/login_with_refresh_token_success.json
272
+ - test/mocks/missing_date.json
245
273
  - test/mocks/query_events.json
246
274
  - test/mocks/repeating_events.json
247
275
  - test/mocks/successful_login.json
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: c297b3a72681304aedd3ab416624ad08cf0a81a0
4
- data.tar.gz: e442a228ba475e8aaffc59450146ba5f1ebe0fec
5
- SHA512:
6
- metadata.gz: 6e9f87759fb2caaecc84a997afef82fcced67b8551d5c71da44d4043106f192bed69c520951dde71c9b1d870f681433ab1b52b0255fc5d9cffa1035012900f7e
7
- data.tar.gz: 5fcd845f10346f292710c16c5cba98c35aae2a0889fc1affb3ea623bf02b89877998c8c734baef722b63d648364cbe0f802c8147f11df88779260c22961a69ca