From a4c1a91f201715c9b4a8890cc1f4faca167702d1 Mon Sep 17 00:00:00 2001 From: Tomas Simacek Date: Sun, 21 Jan 2018 11:10:47 +0100 Subject: [PATCH 1/2] Added support for divisions resource --- lib/kosapi_client/resource.rb | 1 + .../resource/divisions_builder.rb | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 lib/kosapi_client/resource/divisions_builder.rb diff --git a/lib/kosapi_client/resource.rb b/lib/kosapi_client/resource.rb index 6f395de..786299c 100644 --- a/lib/kosapi_client/resource.rb +++ b/lib/kosapi_client/resource.rb @@ -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 diff --git a/lib/kosapi_client/resource/divisions_builder.rb b/lib/kosapi_client/resource/divisions_builder.rb new file mode 100644 index 0000000..59e3e17 --- /dev/null +++ b/lib/kosapi_client/resource/divisions_builder.rb @@ -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 From 74c39f12aa045ab95d342299920b507517696551 Mon Sep 17 00:00:00 2001 From: Tomas Simacek Date: Sun, 21 Jan 2018 11:11:11 +0100 Subject: [PATCH 2/2] Added test for divisions resource. --- .../resource/divisions_builder_spec.rb | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 spec/kosapi_client/resource/divisions_builder_spec.rb diff --git a/spec/kosapi_client/resource/divisions_builder_spec.rb b/spec/kosapi_client/resource/divisions_builder_spec.rb new file mode 100644 index 0000000..d75c079 --- /dev/null +++ b/spec/kosapi_client/resource/divisions_builder_spec.rb @@ -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