Skip to content
Open
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
33 changes: 33 additions & 0 deletions lib/rental_plan.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'rental_plan/metadata'
require 'rental_plan/day_range'
require 'rental_plan/hour_range'

class RentalPlan
def self.build(name)
build_metadata name
build_ranges

new(@metadata, @ranges)
end

def self.build_metadata(name)
@metadata = Metadata.new(name)
end

def self.build_ranges
@ranges = [DayRange.build]
end

def initialize(metadata, ranges)
@metadata = metadata
@ranges = ranges
end

def name
@metadata.name
end

def ranges
@ranges
end
end
18 changes: 18 additions & 0 deletions lib/rental_plan/day_range.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
class DayRange
def self.build(start=1, finish=9999)
build_hour_ranges

new(@hour_ranges, start, finish)
end

def self.build_hour_ranges
@hour_ranges = [HourRange.new]
end

attr_reader :start, :finish, :hour_ranges
def initialize(hour_ranges, start=1, finish=9999)
@start = start
@finish = finish
@hour_ranges = hour_ranges
end
end
7 changes: 7 additions & 0 deletions lib/rental_plan/hour_range.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class HourRange
attr_reader :start, :finish
def initialize(start=1, finish=24)
@start = start
@finish = finish
end
end
6 changes: 6 additions & 0 deletions lib/rental_plan/metadata.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class Metadata
attr_reader :name
def initialize(name)
@name = name
end
end
4 changes: 2 additions & 2 deletions spec/anything_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
require 'rental_plan'

describe RentalPlan do
let(:plan) { RentalPlan.new 'My rental plan' }
let(:plan) { RentalPlan.build 'My rental plan' }

it 'it has metadata' do
expect(plan.name).to eq('My rental plan')
end

it 'has list of day ranges' do
expect(plan.ranges).to be_a(Array)
expect(plan.sample.start).to eq(1)
expect(plan.ranges.sample.start).to eq(1)
end

describe 'each day range' do
Expand Down