Skip to content

Commit

Permalink
Add support for teachers resource and mapping for TeacherTimetableSlot
Browse files Browse the repository at this point in the history
  • Loading branch information
jirutka committed Oct 7, 2015
1 parent e515215 commit 73a1b65
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/kosapi_client/api_client.rb
Expand Up @@ -10,6 +10,7 @@ class ApiClient
resource :course_events
resource :parallels
resource :exams
resource :teachers

attr_reader :http_client

Expand Down
1 change: 1 addition & 0 deletions lib/kosapi_client/entity.rb
Expand Up @@ -9,6 +9,7 @@
require 'kosapi_client/entity/result_page'
require 'kosapi_client/entity/course_event'
require 'kosapi_client/entity/course'
require 'kosapi_client/entity/teacher_timetable_slot'
require 'kosapi_client/entity/timetable_slot'
require 'kosapi_client/entity/parallel'
require 'kosapi_client/entity/base_person'
Expand Down
16 changes: 16 additions & 0 deletions lib/kosapi_client/entity/teacher_timetable_slot.rb
@@ -0,0 +1,16 @@
module KOSapiClient
module Entity
class TeacherTimetableSlot

include DataMappings

map_data :id, Integer
map_data :day, Integer
map_data :duration, Integer
map_data :first_hour, Integer
map_data :parity, Enum
map_data :title, String

end
end
end
1 change: 1 addition & 0 deletions lib/kosapi_client/resource.rb
Expand Up @@ -3,6 +3,7 @@
require 'kosapi_client/resource/parallels_builder'
require 'kosapi_client/resource/exams_builder'
require 'kosapi_client/resource/course_events_builder'
require 'kosapi_client/resource/teachers_builder'

module KOSapiClient
module Resource
Expand Down
16 changes: 16 additions & 0 deletions lib/kosapi_client/resource/teachers_builder.rb
@@ -0,0 +1,16 @@
module KOSapiClient
module Resource
class TeachersBuilder < RequestBuilder

# XXX: This is quite insane, we need some support to DRY subresources.
%w[courses parallels exams timetable].each do |resource|
define_method(resource) do |semester: 'current'|
raise "Call #find({username}) before asking for #{resource}" unless id_set?
url_builder.set_path(id, resource)
url_builder.set_query_param(:sem, semester)
self
end
end
end
end
end
19 changes: 19 additions & 0 deletions spec/kosapi_client/entity/teacher_timetable_slot_spec.rb
@@ -0,0 +1,19 @@
require 'spec_helper'

describe KOSapiClient::Entity::TeacherTimetableSlot do

describe '.parse' do

it 'can be parsed from a hash' do
slot = described_class.parse({
id: '42', day: '1', first_hour: '3', duration: '2', parity: 'BOTH', title: 'Sleep'
})
expect(slot.id).to eq 42
expect(slot.day).to eq 1
expect(slot.first_hour).to eq 3
expect(slot.duration).to eq 2
expect(slot.parity).to eq :both
expect(slot.title).to eq 'Sleep'
end
end
end

0 comments on commit 73a1b65

Please sign in to comment.