Sam's Lawn Mower Repait and CD Rental Store

Database Setup

Setup the database with clean tables

fixtures.SetupDatabase
setup()
true

 Add a CD

fixtures.CDs    

PhysicalID

Title

add()
CD1234567890 Beatles Greatest Hits true

and a customer

fixtures.Customers    
CustomerID Name add()
C007 James true

 Check-out CD

Given:

That a CD is not rented

 fixtures.CDData        
PhysicalID Title Rented Customer ID StartTime
CD1234567890 Beatles Greatest Hits No    

and the date is

fixtures.TestDate  
Date set()
1/3/10 8:00 AM true

When:

the CD is Checked Out:

fit.ActionFixture    
start fixtures.CheckOut  
enter CustomerID C007
enter CDID CD1234567890
press Rent true

Then:

The CD is recorded as rented at the checkout time

 fixtures.CDData        
PhysicalID Title Rented Customer ID StartTime
CD1234567890 Beatles Greatest Hits Yes C007 1/3/10 8:00 AM

and the following data is readied to be printed on the Rental Contract 

fixtures.RentalContractData          
CustomerID Customer Name PhysicalID Title RentalDue check()
C007 James CD1234567890 Beatles Greatest Hits 1/5/10 8:00 AM true

Check-in

Given:

at a later date,

fixtures.TestDate  
Date set()
1/8/10 8:00 AM true

When:

the CD is Checked in

fit.ActionFixture    
start fixtures.CheckIn  
enter CDID CD1234567890
press Return true

 Then:

the CD is recorded as not rented

 fixtures.CDData        
PhysicalID Title Rented Customer ID StartTime
CD1234567890 Beatles Greatest Hits No    

and charge data is prepared for the charging system.  (This is computed at $2 per day)  

fixtures.RentalChargeData

       
CustomerName Title ReturnDate RentalFee check()
James Beatles Greatest Hits 1/8/10 8:00 AM $10.00 true

Category Based Rental Fees

Given

fees based on categories

fixtures.CDCategoryValues        
Category

RentalDays

BaseRentalFee ExtraDayRentalFee add()
NewRelease 1 2.00 2.00 true
GoldenOldie 3 1.00 0.50 true
Regular 2 1.50 1.00 true
NotSet 2 1.00 1.00 true

When a rental is returned, then the correct rental charge is computed

fixtures.RentalFee    
Category Rental Days Rental Fee()
NewRelease 5 $10.00
GoldenOldie 3 $1.00
Regular 3 $2.50