forked from marick/fp-oo
/
ruby-fetching-example.rb
40 lines (31 loc) · 1.26 KB
/
ruby-fetching-example.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
require 'rubygems'
require 'sequel'
require 'pp'
require 'shoulda'
require 'set'
DB = Sequel.connect('postgres://postgres@localhost/fpoo')
class FetchingExample < Test::Unit::TestCase
should "be able to fetch a map of courses" do
registration_counts = DB[:courses].
left_join(:signups, :signups__course_id => :courses__id).
group(:courses__id).
select(:courses__id.as(:course_id)).
select_more{count(:signups__id).as(:registered)}
courses = DB[:courses].
join(registration_counts, :course_id => :courses__id).
join(:course_templates, :course_templates__id => :courses__course_template_id).
select(:course_templates__name.as("course-name"),
:courses__morning.as("morning?"),
:limit,
:registered)
# puts courses.sql
pp courses.all
actual = Set.new(courses.all)
assert_equal(Set.new([
{:"course-name" => "Zigging", :morning? => true, :limit => 4, :registered => 0},
{:"course-name" => "Zigging", :morning? => false, :limit => 4, :registered => 2},
{:"course-name" => "Zagging", :morning? => true, :limit => 2, :registered => 1},
{:"course-name" => "Zagging", :morning? => false, :limit => 2, :registered => 1}]),
actual)
end
end