test/integration/district_test.rb in clever-ruby-0.1.0 vs test/integration/district_test.rb in clever-ruby-0.2.0
- old
+ new
@@ -6,48 +6,79 @@
config.api_key = "DEMO_KEY"
end
end
should "retrieve a district's schools" do
- VCR.use_cassette("districts_schools") do
- @district = Clever::District.all.first
- @district.schools.size.must_equal 4
- end
+ test_object_list 'schools', 4, Clever::School
end
+ should "page a district's schools" do
+ test_object_pages('school', 2, 2)
+ end
+
should "retrieve a district's teachers" do
- VCR.use_cassette("districts_teachers") do
- @district = Clever::District.all.first
- @district.teachers.size.must_equal 48
- end
+ test_object_list 'teachers', 48, Clever::Teacher
end
+ should "page a district's teachers" do
+ test_object_pages('teacher', 10, 5)
+ end
+
should "retrieve a district's sections" do
- VCR.use_cassette("districts_sections") do
- @district = Clever::District.all.first
- @district.sections.size.must_equal 44
- end
+ test_object_list 'sections', 44, Clever::Section
end
+ should "page a district's sections" do
+ test_object_pages('section', 10, 5)
+ end
+
should "retrieve a district's students" do
- VCR.use_cassette("districts_students") do
- @district = Clever::District.all.first
- @district.students.size.must_equal 100
- end
+ test_object_list 'students', 100, Clever::Student
end
+ should "page a district's students" do
+ test_object_pages('student', 50, 18)
+ end
+
should "retrieve a district's students with a small filter" do
VCR.use_cassette("districts_students_filtered") do
@district = Clever::District.all.first
@district.students({limit: 2}).size.must_equal 2
end
end
should "retrieve a district's events" do
- VCR.use_cassette("districts_events", :allow_playback_repeats => true) do
- @district = Clever::District.all.first
- @district.events.size.must_equal 1
- event = @district.events.first
- event.must_be_instance_of Clever::Event
+ test_object_list 'events', 1, Clever::Event
+ end
+
+ should "page a district's events" do
+ test_object_pages('event', 1, 1)
+ end
+
+ private
+
+ def test_object_list(plural_object_name, object_count, instance_name)
+ VCR.use_cassette("districts_#{plural_object_name}", :allow_playback_repeats => true) do
+ district = Clever::District.all.first
+ district.send(plural_object_name).size.must_equal object_count
+ district.send(plural_object_name).first.must_be_instance_of instance_name
+ end
+ end
+
+ def test_object_pages(object_name, limit, page_count)
+ VCR.use_cassette("districts_#{object_name}_pages", :allow_playback_repeats => true) do
+ district = Clever::District.all.first
+ object_count_from_list = district.send("#{object_name}s", {limit: 100000}).size
+
+ object_count_from_paging = 0
+ pages = 0
+ district.send("#{object_name}_pages", { limit: limit }).each do |object_page|
+ pages += 1
+ objects = object_page.all
+ object_count_from_paging += objects.size
+ end
+
+ object_count_from_paging.must_equal object_count_from_list
+ pages.must_equal page_count
end
end
end