Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/models/address.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class Address < ActiveRecord::Base
belongs_to :sponsor
end
2 changes: 2 additions & 0 deletions app/models/sessions.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
class Sessions < ActiveRecord::Base

has_many :invitations
has_many :sponsor_sessions
has_many :sponsors, through: :sponsor_sessions

scope :upcoming, -> { where("date_and_time > ?", DateTime.now) }

Expand Down
7 changes: 7 additions & 0 deletions app/models/sponsor.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Sponsor < ActiveRecord::Base
has_one :address
has_many :sponsor_sessions
has_many :sessions, through: :sponsor_sessions

validates :name, :description, :address, presence: true
end
4 changes: 4 additions & 0 deletions app/models/sponsor_session.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class SponsorSession < ActiveRecord::Base
belongs_to :sponsor
belongs_to :sessions
end
9 changes: 9 additions & 0 deletions db/migrate/20131102132756_create_sponsors.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class CreateSponsors < ActiveRecord::Migration
def change
create_table :sponsors do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
11 changes: 11 additions & 0 deletions db/migrate/20131102141049_create_address.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class CreateAddress < ActiveRecord::Migration
def change
create_table :addresses do |t|
t.string :flat
t.string :street
t.string :postal_code
t.belongs_to :sponsor
t.timestamps
end
end
end
10 changes: 10 additions & 0 deletions db/migrate/20131103174325_create_sponsor_sessions.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class CreateSponsorSessions < ActiveRecord::Migration
def change
create_table :sponsor_sessions do |t|
t.belongs_to :sponsor, index: true
t.belongs_to :sessions, index: true
t.boolean :host, default: false
t.timestamps
end
end
end
29 changes: 28 additions & 1 deletion db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,16 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20131029210620) do
ActiveRecord::Schema.define(version: 20131103174325) do

create_table "addresses", force: true do |t|
t.string "flat"
t.string "street"
t.string "postal_code"
t.integer "sponsor_id"
t.datetime "created_at"
t.datetime "updated_at"
end

create_table "courses", force: true do |t|
t.string "title"
Expand Down Expand Up @@ -76,4 +85,22 @@
t.integer "seats", default: 15
end

create_table "sponsor_sessions", force: true do |t|
t.integer "sponsor_id"
t.integer "sessions_id"
t.boolean "host", default: false
t.datetime "created_at"
t.datetime "updated_at"
end

add_index "sponsor_sessions", ["sessions_id"], name: "index_sponsor_sessions_on_sessions_id"
add_index "sponsor_sessions", ["sponsor_id"], name: "index_sponsor_sessions_on_sponsor_id"

create_table "sponsors", force: true do |t|
t.string "name"
t.text "description"
t.datetime "created_at"
t.datetime "updated_at"
end

end
5 changes: 5 additions & 0 deletions spec/fabricators/address_fabticator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Fabricator(:address) do
flat { "flat 1" }
street { "fake street" }
postal_code { "NW1 9KJ" }
end
5 changes: 5 additions & 0 deletions spec/fabricators/sponsor_fabricator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Fabricator(:sponsor) do
name { Faker::Name.name }
description { Faker::Lorem.paragraph }
address { Fabricate(:address) }
end
3 changes: 2 additions & 1 deletion spec/features/listing_sessions_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
let(:date_and_time) { DateTime.now+1.week }
let!(:session) { Sessions.create title: "HTML by Codebar",
description: "Let's work together through out mini HTML workshop",
date_and_time: date_and_time }
date_and_time: date_and_time,
sponsors: [Fabricate.build(:sponsor)] }

scenario 'when i visit the page, i can view a list with all the sesions' do
pending("on hold until we finish the home page design")
Expand Down
10 changes: 10 additions & 0 deletions spec/models/address_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require 'spec_helper'

describe Address do
subject(:address) { Fabricate.build(:address) }

it { should respond_to(:sponsor) }
it { should respond_to(:flat) }
it { should respond_to(:street) }
it { should respond_to(:postal_code) }
end
8 changes: 8 additions & 0 deletions spec/models/sessions_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
require 'spec_helper'

describe Sessions do
subject(:session) { Fabricate.build(:sessions) }

it { should respond_to(:title) }
it { should respond_to(:description) }
it { should respond_to(:date_and_time) }
it { should respond_to(:seats) }
it { should respond_to(:sponsors) }
it { should respond_to(:sponsor_sessions)}

context "#scopes" do
it "#upcoming" do
Expand Down
36 changes: 36 additions & 0 deletions spec/models/sponsor_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
require 'spec_helper'

describe Sponsor do
subject(:sponsor) { Fabricate.build(:sponsor) }

it { should respond_to(:name) }
it { should respond_to(:description) }
it { should respond_to(:address) }
it { should respond_to(:sessions)}
it { should respond_to(:sponsor_sessions)}
it { should be_valid }

context 'validations' do
context 'presence' do
describe '#name' do
before { sponsor.name = nil }

it { should_not be_valid }
it { should have(1).error_on(:name) }
end
describe '#description' do
before { sponsor.description = nil }

it { should_not be_valid}
it { should have(1).error_on(:description) }
end
describe '#address' do
before { sponsor.address = nil }

it { should_not be_valid}
it { should have(1).error_on(:address) }
end
end
end

end