Class: Flycal::Mock::CalendarService

Inherits:
Object
  • Object
show all
Defined in:
lib/flycal/mock/calendar_service.rb

Overview

Duck-typed CalendarService backed by generated mock events (no Google API).

Defined Under Namespace

Classes: Calendar

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ CalendarService

Returns a new instance of CalendarService.



9
10
11
12
13
# File 'lib/flycal/mock/calendar_service.rb', line 9

def initialize(config)
  @config = config
  @calendar_id = config.calendar_name
  @events = EventGenerator.new(config).generate
end

Instance Method Details

#list_all_events(calendar_ids, time_min:, time_max:, query: nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/flycal/mock/calendar_service.rb', line 19

def list_all_events(calendar_ids, time_min:, time_max:, query: nil)
  ids = Array(calendar_ids)
  return [] unless ids.empty? || ids.include?(@calendar_id)

  items = @events.filter_map do |event|
    start_at = event.start.date_time
    end_at = event.end.date_time
    next if start_at.nil? || end_at.nil?
    next if end_at <= time_min || start_at >= time_max

    { calendar_id: @calendar_id, event: event }
  end

  if query && !query.to_s.strip.empty?
    items.select! do |item|
      event = item[:event]
      DescriptionQuery.match?(event.summary, event.description, query)
    end
  end

  items
end

#list_calendarsObject



15
16
17
# File 'lib/flycal/mock/calendar_service.rb', line 15

def list_calendars
  [Calendar.new(id: @calendar_id, summary: @calendar_id, primary: true)]
end