diff --git a/lib/event_service/providers/doorkeeper.rb b/lib/event_service/providers/doorkeeper.rb index c8d6c8387..8d9409cc6 100644 --- a/lib/event_service/providers/doorkeeper.rb +++ b/lib/event_service/providers/doorkeeper.rb @@ -31,7 +31,7 @@ def fetch_events(group_id:, since_at: @default_since, until_at: @default_until) break if part.size.zero? - events.push(*part.map { |e| e['event'] }) + events.push(*part.map { |e| e[:event] }) break if part.size < 25 # 25 items / 1 request diff --git a/lib/statistics/tasks/doorkeeper.rb b/lib/statistics/tasks/doorkeeper.rb index 0100edb30..12c3f425a 100644 --- a/lib/statistics/tasks/doorkeeper.rb +++ b/lib/statistics/tasks/doorkeeper.rb @@ -20,16 +20,16 @@ def run dojo.dojo_event_services.for(:doorkeeper).each do |dojo_event_service| events = @client.fetch_events(**@params.merge(group_id: dojo_event_service.group_id)) (events || []).compact.each do |e| - next unless e['group'].to_s == dojo_event_service.group_id + next unless e[:group].to_s == dojo_event_service.group_id EventHistory.create!(dojo_id: dojo.id, dojo_name: dojo.name, service_name: dojo_event_service.name, service_group_id: dojo_event_service.group_id, - event_id: e['id'], - event_url: e['public_url'], - participants: e['participants'], - evented_at: Time.zone.parse(e['starts_at'])) + event_id: e[:id], + event_url: e[:public_url], + participants: e[:participants], + evented_at: Time.zone.parse(e[:starts_at])) end end end diff --git a/lib/upcoming_events/tasks/doorkeeper.rb b/lib/upcoming_events/tasks/doorkeeper.rb index 5c4365ca2..c6383c57c 100644 --- a/lib/upcoming_events/tasks/doorkeeper.rb +++ b/lib/upcoming_events/tasks/doorkeeper.rb @@ -13,20 +13,20 @@ def run events = @client.fetch_events(**@params.merge(group_id: dojo_event_service.group_id)) puts "[Doorkeeper] dojo_id: #{dojo.id}, group_id: #{dojo_event_service.group_id}, fetched events: #{events&.size || 0}" (events || []).compact.each do |e| - puts "[Doorkeeper] event_id: #{e.fetch('id')}, title: #{e.fetch('title')}" - next unless e.fetch('group').to_s == dojo_event_service.group_id + puts "[Doorkeeper] event_id: #{e.fetch(:id)}, title: #{e.fetch(:title)}" + next unless e.fetch(:group).to_s == dojo_event_service.group_id - record = dojo_event_service.upcoming_events.find_or_initialize_by(event_id: e.fetch('id')) + record = dojo_event_service.upcoming_events.find_or_initialize_by(event_id: e.fetch(:id)) record.update!(service_name: dojo_event_service.name, - event_title: e.fetch('title'), - event_url: e.fetch('public_url'), - participants: e.fetch('participants'), - event_at: Time.zone.parse(e.fetch('starts_at')), - event_end_at: Time.zone.parse(e.fetch('ends_at')), - event_update_at: Time.zone.parse(e.fetch('updated_at')), - address: e.fetch('address'), - place: e.fetch('venue_name'), - limit: e.fetch('ticket_limit')) + event_title: e.fetch(:title), + event_url: e.fetch(:public_url), + participants: e.fetch(:participants), + event_at: Time.zone.parse(e.fetch(:starts_at)), + event_end_at: Time.zone.parse(e.fetch(:ends_at)), + event_update_at: Time.zone.parse(e.fetch(:updated_at)), + address: e.fetch(:address), + place: e.fetch(:venue_name), + limit: e.fetch(:ticket_limit)) end end end diff --git a/spec/lib/event_service/providers/doorkeeper_spec.rb b/spec/lib/event_service/providers/doorkeeper_spec.rb index 427f3afcd..43d1f4860 100644 --- a/spec/lib/event_service/providers/doorkeeper_spec.rb +++ b/spec/lib/event_service/providers/doorkeeper_spec.rb @@ -10,8 +10,8 @@ it do expect(subject).to be_instance_of(Array) expect(subject.size).to eq 1 - expect(subject.first['event']['id']).to eq 1234 - expect(subject.first['event']['group']).to eq 5555 + expect(subject.first[:event][:id]).to eq 1234 + expect(subject.first[:event][:group]).to eq 5555 end end @@ -21,8 +21,8 @@ it do expect(subject).to be_instance_of(Array) expect(subject.size).to eq 1 - expect(subject.first['id']).to eq 1234 - expect(subject.first['group']).to eq 5555 + expect(subject.first[:id]).to eq 1234 + expect(subject.first[:group]).to eq 5555 end end end diff --git a/spec/support/shared_contexts/statistics.rb b/spec/support/shared_contexts/statistics.rb index 329917e1f..00206b568 100644 --- a/spec/support/shared_contexts/statistics.rb +++ b/spec/support/shared_contexts/statistics.rb @@ -83,7 +83,29 @@ [ 200, { 'Content-Type' => 'application/json' }, - '[{"event":{"title":"CoderDojo title","id":1234,"starts_at":"2017-05-28T01:00:00.000Z","ends_at":"2017-05-28T04:00:00.000Z","venue_name":"奥多摩町","address":"奥多摩町","lat":"35.801763000000","long":"139.087656000000","ticket_limit":30,"published_at":"2017-04-22T03:43:04.000Z","updated_at":"2017-05-10T11:31:21.810Z","group":5555,"banner":null,"description":"CoderDojo description","public_url":"https://coderdojo-okutama.doorkeeper.jp/events/8888","participants":12,"waitlisted":0}}]' + [ + { + event: { + title: "CoderDojo title", + id: 1234, + starts_at: (Time.zone.today.prev_month + 10.days).to_time.utc.iso8601, + ends_at: (Time.zone.today.prev_month + 10.days + 3.hours).to_time.utc.iso8601, + venue_name: "奥多摩町", + address: "奥多摩町", + lat: "35.801763000000", + long: "139.087656000000", + ticket_limit: 30, + published_at: (Time.zone.today.prev_month - 5.days).to_time.utc.iso8601, + updated_at: (Time.zone.today.prev_month - 1.day).to_time.utc.iso8601, + group: 5555, + banner: nil, + description: "CoderDojo description", + public_url: "https://coderdojo-okutama.doorkeeper.jp/events/8888", + participants: 12, + waitlisted: 0 + } + } + ] ] end end @@ -128,16 +150,50 @@ [ 200, { 'Content-Type' => 'application/json' }, - '[{"event":{"title":"CoderDojo title","id":1234,"starts_at":"' + - "#{Time.zone.today + 1.month}T01:00:00.000Z" + '","ends_at":"' + - "#{Time.zone.today + 1.month}T04:00:00.000Z" + '","venue_name":"奥多摩町","address":"奥多摩町","lat":"35.801763000000","long":"139.087656000000","ticket_limit":30,"published_at":"' + - "#{Time.zone.today - 4.days}T03:43:04.000Z" + '","updated_at":"' + - "#{Time.zone.today}T11:31:21.810Z" + '","group":5555,"banner":null,"description":"CoderDojo description","public_url":"https://coderdojo-okutama.doorkeeper.jp/events/8888","participants":12,"waitlisted":0}},' + - '{"event":{"title":"CoderDojo title","id":2345,"starts_at":"' + - "#{Time.zone.today + 1.month + 1.day}T01:00:00.000Z" + '","ends_at":"' + - "#{Time.zone.today + 1.month + 1.day}T04:00:00.000Z" + '","venue_name":"奥多摩町","address":"奥多摩町","lat":"35.801763000000","long":"139.087656000000","ticket_limit":30,"published_at":"' + - "#{Time.zone.today - 4.days}T03:43:04.000Z" + '","updated_at":"' + - "#{Time.zone.today}T11:31:21.810Z" + '","group":5555,"banner":null,"description":"CoderDojo description","public_url":"https://coderdojo-okutama.doorkeeper.jp/events/8888","participants":12,"waitlisted":0}}]' + [ + { + event: { + title: "CoderDojo title", + id: 1234, + starts_at: "#{Time.zone.today + 1.month}T01:00:00.000Z", + ends_at: "#{Time.zone.today + 1.month}T04:00:00.000Z", + venue_name: "奥多摩町", + address: "奥多摩町", + lat: "35.801763000000", + long: "139.087656000000", + ticket_limit: 30, + published_at: "#{Time.zone.today - 4.days}T03:43:04.000Z", + updated_at: "#{Time.zone.today}T11:31:21.810Z", + group: 5555, + banner: nil, + description: "CoderDojo description", + public_url: "https://coderdojo-okutama.doorkeeper.jp/events/8888", + participants: 12, + waitlisted: 0 + } + }, + { + event: { + title: "CoderDojo title", + id: 2345, + starts_at: "#{Time.zone.today + 1.month + 1.day}T01:00:00.000Z", + ends_at: "#{Time.zone.today + 1.month + 1.day}T04:00:00.000Z", + venue_name: "奥多摩町", + address: "奥多摩町", + lat: "35.801763000000", + long: "139.087656000000", + ticket_limit: 30, + published_at: "#{Time.zone.today - 4.days}T03:43:04.000Z", + updated_at: "#{Time.zone.today}T11:31:21.810Z", + group: 5555, + banner: nil, + description: "CoderDojo description", + public_url: "https://coderdojo-okutama.doorkeeper.jp/events/8888", + participants: 12, + waitlisted: 0 + } + } + ] ] end end