Skip to content

Commit

Permalink
Merge 74c39f1 into 30f49fa
Browse files Browse the repository at this point in the history
  • Loading branch information
simactom committed Jan 21, 2018
2 parents 30f49fa + 74c39f1 commit f244236
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/kosapi_client/resource.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
require 'kosapi_client/resource/exams_builder'
require 'kosapi_client/resource/course_events_builder'
require 'kosapi_client/resource/teachers_builder'
require 'kosapi_client/resource/divisions_builder'

module KOSapiClient
module Resource
Expand Down
24 changes: 24 additions & 0 deletions lib/kosapi_client/resource/divisions_builder.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
module KOSapiClient
module Resource
class DivisionsBuilder < RequestBuilder

def courses
raise 'Call #find({division_id}) before asking for courses' unless id_set?
url_builder.set_path(id, 'courses')
self
end

def subdivisions
raise 'Call #find({division_id}) before asking for subdivisions' unless id_set?
url_builder.set_path(id, 'subdivisions')
self
end

def teachers
raise 'Call #find({division_id}) before asking for teachers' unless id_set?
url_builder.set_path(id, 'teachers')
self
end
end
end
end
66 changes: 66 additions & 0 deletions spec/kosapi_client/resource/divisions_builder_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
require 'spec_helper'

describe KOSapiClient::Resource::DivisionsBuilder do

let(:url_builder) { instance_double(KOSapiClient::URLBuilder, url: 'http://example.com') }
let(:response) { double(foo: :bar) }
let(:http_client) { double(send_request: response) }
subject(:builder) { KOSapiClient::Resource::DivisionsBuilder.new('http://example.com', http_client, url_builder) }

describe '#courses' do

before { allow(url_builder).to receive(:set_path) }

it 'throws error when division id is not set' do
expect { builder.courses }.to raise_error(RuntimeError)
end

it 'return self' do
builder.find(69)
expect(builder.courses).to eq builder
end

it 'adds courses to URL' do
expect(url_builder).to receive(:set_path).with(69, 'courses')
builder.find(69).courses
end
end

describe '#subdivisions' do

before { allow(url_builder).to receive(:set_path) }

it 'throws error when division id is not set' do
expect { builder.subdivisions }.to raise_error(RuntimeError)
end

it 'return self' do
builder.find(69)
expect(builder.subdivisions).to eq builder
end

it 'adds subdivisions to URL' do
expect(url_builder).to receive(:set_path).with(69, 'subdivisions')
builder.find(69).subdivisions
end
end

describe '#teachers' do

before { allow(url_builder).to receive(:set_path) }

it 'throws error when division id is not set' do
expect { builder.teachers }.to raise_error(RuntimeError)
end

it 'return self' do
builder.find(69)
expect(builder.teachers).to eq builder
end

it 'adds teachers to URL' do
expect(url_builder).to receive(:set_path).with(69, 'teachers')
builder.find(69).teachers
end
end
end

0 comments on commit f244236

Please sign in to comment.