Skip to content

Instantly share code, notes, and snippets.

@3den
Created March 30, 2012 17:53
Show Gist options
  • Save 3den/2253369 to your computer and use it in GitHub Desktop.
Save 3den/2253369 to your computer and use it in GitHub Desktop.
specs
All examples were filtered out; ignoring {:focus=>true}
Admin::Orders::CreditCardsController PUT #update
when credit card is valid
should be success
when update fails
should render form
Api::HealthController
GET #index
with a valid IP
Connection refused - connect(2)
responds with success
Connection refused - connect(2)
responce body is a JSON hash
without a valid IP
raises an 'CanCan::AccessDenied' error
GET #show
returns a RecordNotFound error for missing features
returns a valid response for db
returns a valid response for search
Connection refused - connect(2)
returns a valid response for tax
returns a valid response for auth
ApplicationController Helpers
#kiosk_mode?
should return session[:kiosk_mode]
ApplicationController Filters
#no_browser_cache_on_kiosk_mode
should set response header to disable cache browser if kiosk mode is enabled
Checkouts::ReviewsController PUT #show
should logout when kiosk mode is enabled
CreditCardsController
GET #index
should return the user's credit cards
should be success
GET #new
should assign a new credit card
should the credit card have a billing address
should the billing address have the user's country
POST #create
when credit card is saved
when is a xhr request
should return nothing
when is a html request
should redirect to credit card index page
when credit card is not saved
when is a xhr request
should render the new card form partial
when is a html request
should rendere the new view
KioskController PUT # update
should toggle kiosk mode
ProductSearchesController filters
redirect_if_no_search_parameters
should redirect to new_product_search_path if no search params present
Users::RegistrationsController PUT #update
when password params exists
should update with password
when password params does not exists
should update with password
when update the user is successfull
when the call is via XHR
should be success
when the call is via HTML
should redirect to after_update_path_for user
when update the user fails
when the call is via XHR
should render the form partial
FactoryGirl::Syntax::Vintage::Factory
with factory for :admin_user
is valid
with factory for :blacklist
is valid
with factory for :mailer_sent_to_collection
Connection refused - connect(2)
is valid
with factory for :store_location
is valid
with factory for :currency_exchange
is valid
with factory for :ebook_properties
is valid
with factory for :coupon_owner
is valid
with factory for :rental_no_book
is valid
with factory for :purchase_option
is valid
with factory for :store_term
is valid
with factory for :mailer_third_reminder
Connection refused - connect(2)
is valid
with factory for :user_with_default_address
is valid
with factory for :territory_manager
is valid
with factory for :store
is valid
with factory for :valid_address
is valid
with factory for :section_book
is valid
with factory for :digital_rental
is valid
with factory for :product_item
is valid
with factory for :mailer_collateral_charge_failed
Connection refused - connect(2)
is valid
with factory for :receiving_log
is valid
with factory for :course
is valid
with factory for :mailer_second_reminder
Connection refused - connect(2)
is valid
with factory for :section
is valid
with factory for :percent_coupon
is valid
with factory for :book_isbn10
is valid
with factory for :capybara_store
is valid
with factory for :contract_accounting_contact
is valid
with factory for :order_response
is valid
with factory for :email_template
is valid
with factory for :digital_sale
is valid
with factory for :product
is valid
with factory for :rental_item
is valid
with factory for :coupon
is valid
with factory for :order_transaction
Connection refused - connect(2)
is valid
with factory for :mailer_extension_charge
Connection refused - connect(2)
is valid
with factory for :digital_item
is valid
with factory for :school
is valid
with factory for :share_item
is valid
with factory for :affiliate_user
is valid
with factory for :user
is valid
with factory for :mailer_first_reminder
Connection refused - connect(2)
is valid
with factory for :book_with_ebook
is valid
with factory for :contract_owner
is valid
with factory for :sale
is valid
with factory for :generic_order_note
is valid
with factory for :order
is valid
with factory for :item_to_downgrade
is valid
with factory for :allow_ip
is valid
with factory for :order_item_ebook
is valid
with factory for :search_log
is valid
with factory for :department
is valid
with factory for :mailer_fifth_reminder
Connection refused - connect(2)
is valid
with factory for :shipping_customer
is valid
with factory for :order_item
is valid
with factory for :commission_payment
is valid
with factory for :mailer_log
Connection refused - connect(2)
is valid
with factory for :authorization
Connection refused - connect(2)
is valid
with factory for :shipping_box
is valid
with factory for :invalid_address
is valid
with factory for :order_note
is valid
with factory for :book
is valid
with factory for :rental
is valid
with factory for :blacklisted_user
is valid
with factory for :subscription_item
is valid
with factory for :store_email_template
is valid
with factory for :adoption_task
is valid
with factory for :credit_card
is valid
with factory for :book_properties
is valid
with factory for :extension
is valid
with factory for :canadian_order
is valid
with factory for :address
is valid
with factory for :credit_card_2
is valid
with factory for :transfer
is valid
with factory for :mailer_fourth_reminder
Connection refused - connect(2)
is valid
with factory for :business_rule
is valid
with factory for :adoption
is valid
with factory for :canadian_address
is valid
with factory for :adopted_book
is valid
with factory for :sourced_item
is valid
with factory for :password_reset_email_template
is valid
with factory for :contact
is valid
with factory for :one_order_item
is valid
Admin::IssuesHelper
case type menu for 'Shipment Level'
should contain case type 'Extra item'
should contain case type 'Incorrect item'
should contain case type 'Missing item'
should contain case type 'Package empty'
should contain case type 'Unable to process'
should contain 5 case types
case type menu for 'Item Level'
should contain case type 'Late rental return'
should contain case type 'Return to customer'
should contain case type 'Damage'
should contain case type 'Other'
should contain 4 case types
Admin::OrdersHelper
.order_response_message
should return a formatted message
.transaction_message
when the order is an Order
Connection refused - connect(2)
should return the transaction type
when the order is an OrderItem
Connection refused - connect(2)
should return the transaction type
Connection refused - connect(2)
should return the id
Connection refused - connect(2)
should return the product
when is a free extension/buyout
Connection refused - connect(2)
should return No charge
when is not a free extension/buyout
Connection refused - connect(2)
should return the amount
Admin::ReceivingsHelper
create_reject_link
Connection refused - connect(2)
should return the link to convert to purchase page
create_receipt_links
with orders
Connection refused - connect(2)
Connection refused - connect(2)
should include "2 books checked-in"
Connection refused - connect(2)
Connection refused - connect(2)
should not include the receipt to print
Connection refused - connect(2)
Connection refused - connect(2)
should have the 'Print Recipt' link
Connection refused - connect(2)
Connection refused - connect(2)
should not include the 'Clear Books' button
without orders
should include "0 books checked-in"
the 'Print Recipt' link should not print
should not include the receipt to print
Admin::Reports::PopularsHelper
.popular_books
should return an array with data of popular books
should return the isbn of thte book
should return the title of the book
should return the publisher of the book
should return the average price of the book
should return the avg retal period of the book
ApplicationHelper
returns display visible if true
returns display none if false
rental expiration helpers
my rentals page returns green when rental days left > 2 week
my rentals page returns yellow when rental days left <=3 days
header helper green when all rentals expire > 2 weeks
header helper red when any rentals expire =< 3 days
menu array for admin/affiliate user
for orders and receiving admin
for receiving admin only
store_rent?
should return true if the store rents
should return true if the store is nil
should return false if the store just buy
store_buy?
should return true if the store is buy?
should return true if the store is nil
should return false if the store is rent_only
facebook link to
creates the facebook uri with correct querystring
roles_list
returns the roles corresponding to an AffiliateUser
returns the roles corresponding to an AdminUser
map
should return an image tag with the map
should return the map image with ssl
CheckoutsHelper
with a rental
links to terms
links to shipping
credit cards
returns credit cards for us store
returns credit cards for canadian stores
FormattingHelper
#number_to_phone
turns a number into a phone number without an area code
turns a number into a phone number with an area code
turns a number into a phone number with an extension
prices
displays the canadian dollar since the current_store is canadian
returns the function
FormsHelper
returns a div with an error message in it
returns nothing
.pre_fill_states
when the arg is a string
should return the USA states when arg is 'US'
should return the CANADA states when arg is 'CA'
should return the an empty array when arg is 'another value'
when the arg is a form object
should return the USA states when form object has country with 'US' value
should return the CANADA states when form object has country with 'CA' value
should return an empty array when form object has country with 'another_value' value
PurchaseOptionsHelper
displays something when new
displays something when used
displays the period without the price
Bind
grabs whatever attributes it can without deleting the keys
deletes the attributes as it grabs them
BookFinder
returns a blank array
finds books by isbns
marks errors
splits on new lines, commas, and spaces
BooksMailer
#build_sub_vars
with a digital item
should parse {{order_items_formatted_list}} with PIN and URL
when there is a store
should parse {{customer_first_name}} as user.first_name
should parse {{customer_last_name}} as user.last_name
should parse {{order_id}} as order.id
should parse {{rental_return_due_date}} as item.to_with_extensions
should parse {{order_item_name}} as item.option.book.name
should parse {{rental_return_due_date}} as item.to_with_extensions
should parse {{rental_time_period}} as item.period
should parse {{rental_order_ship_date}} as item.shipping_method.estimate
should parse {{tracking_number}} as item.sourced_item.tracking_number
should parse {{transaction_type}}
should parse {{rentals_page_link}}
should parse {{affiliate_text}}
when there is no store
should parse {{affiliate_text}} and return nil
EmailValid
should validates emails with trailing spaces
should not validate wrong emails
Epay
.authorize
with a digital item
returns the 'download_url' and 'pin'
without a digital item
raises Epay::NonDigitalItemError
#api_url
includes the ENDPOINT and PUBLIC_KEY
#void
refunds a book (PENDING: Not yet implemented)
#recover_pin
retrieves a lost pin number (PENDING: Not yet implemented)
FedexAddress
with a valid address
takes an address
saves the address when valid and confirmed
fixes the zipcode
status must be 'confirmed'
with an invalid street
doesn't save the address when not confimed the first time
populates errors when address is invalid or unconfirmed
sugests a corrected address
status must be 'modified'
with an invalid city
fixes the city
status must be 'modified'
with a invalid address
status must be 'unrecognized'
HasDefaults
user defaults
set a default credit card
have only one default credit card
set a default address
have only one default address
many users with default addresses
does not change the default of other users
changing the default address of one user do not affect other users
Payment::CreditCardDeleter
has a delete method
#delete
DEPRECATION WARNING: class_inheritable_attribute is deprecated, please use class_attribute method instead. Notice their behavior are slightly different, so refer to class_attribute documentation first. (called from include at /Users/eden/.rvm/gems/ruby-1.8.7-p352@rentwb/bundler/gems/active_merchant-78c469f897af/lib/active_merchant/billing/gateway.rb:59)
DEPRECATION WARNING: class_inheritable_attribute is deprecated, please use class_attribute method instead. Notice their behavior are slightly different, so refer to class_attribute documentation first. (called from include at /Users/eden/.rvm/gems/ruby-1.8.7-p352@rentwb/bundler/gems/active_merchant-78c469f897af/lib/active_merchant/billing/gateway.rb:59)
allows deletion of non-default card
with no open rentals
deletes any non-default card
prevents deletion of the default card if other cards cant be authorized
with open rentals
Connection refused - connect(2)
does not delete card if default is only card
Connection refused - connect(2)
deletes it and makes new authorized default
Connection refused - connect(2)
wont delete the default if it cant authorize it
Payment::Gateway
.store_card
sets the ext_cc_id
adds mask to the number
sets front masked number
resets the ext_cc_id to nil in case of fail
returns errors if it's not valid
don't save an invalid card
doesn't try to store if the address is not valid
with a canadian user (plugnpay)
DEPRECATION WARNING: class_inheritable_attribute is deprecated, please use class_attribute method instead. Notice their behavior are slightly different, so refer to class_attribute documentation first. (called from /Users/eden/.rvm/gems/ruby-1.8.7-p352@rentwb/bundler/gems/active_merchant-78c469f897af/lib/active_merchant/billing/gateways/plugnpay.rb:5)
DEPRECATION WARNING: class_inheritable_attribute is deprecated, please use class_attribute method instead. Notice their behavior are slightly different, so refer to class_attribute documentation first. (called from /Users/eden/.rvm/gems/ruby-1.8.7-p352@rentwb/bundler/gems/active_merchant-78c469f897af/lib/active_merchant/billing/gateways/plugnpay.rb:5)
sets the ext_cc_id
adds mask to the number
sets front masked number
.update_card
updates the address with no cc changes
updates the credit card
doesn't updates the credit card if it's not valid
.delete_card
deletes the card from the gateway
deletes the card anyway
.charge!
purchases an amount and returns the requestId
should work even when coutry is passed as nil
returns an error if it can't purchase
.authorize!
with cybersource
purchases an amount and returns the requestId
with plugnpay
purchases an amount and returns the requestId
returns an 'authorizationCode'
.authorize
returns true if the card authorize the amount passed in
returns false if the card do not authorize the amount passed in
Payment::Plugnpay
#storing_card
authorize for $1,00 and revert the authorization (PENDING: Temporarily disabled with xit)
Shipping
should generate a tracking number with the shipping label
should generate a shipping label
should validate the shipping address
.get_rate
should return net amount > 0
should return rate in USD if not specified
should return the same service type requested
Solr
returns a set of products
returns less than the number of products per page
contains Product methods such as id and name
contains book properties such as isbn13 and authors
contains stock attributes
Taxware
under normal operation
/Users/eden/Code/ruby/rails/rentwb/lib/taxware.rb:207: warning: Object#id will be deprecated; use Object#object_id
Connection refused - connect(2)
should return tax amount
when using static XML for Health API check
Connection refused - connect(2)
should not raise an error
Connection refused - connect(2)
should return tax amount
failures
Connection refused
should return 10% taxes by default if it can't connect
address_to option was missing.
should return zero taxes when options are not passed in
should calculate an item's pro-rata share of taxes
Connection refused - connect(2)
when returning invalid XML
address_to option was missing.
when Taxware::AddressToError is raised
billing_address option was missing.
when Taxware::BillingAddressError is raised
order option was missing.
when Taxware::OrderError is raised
Translater
translates names
doesn't change good names
CheckInMailer
convert to purchase
renders the headers
rental extended
renders the headers
OrderMailer
order confirmation
Connection refused - connect(2)
renders the headers
order shipped confirmation
Connection refused - connect(2)
renders the headers
order delivered confirmation
renders the headers
first_reminder_at_7_days_from_due_date
when store is a depot
Connection refused - connect(2)
renders the headers
when store is not a depot
Connection refused - connect(2)
renders the headers
second_reminder_at_3_days_from_due_date
when store is a depot
Connection refused - connect(2)
renders the headers
when store is not a depot
Connection refused - connect(2)
renders the headers
third_reminder_at_1_day_from_due_date
when store is a depot
Connection refused - connect(2)
renders the headers
when store is not a depot
Connection refused - connect(2)
renders the headers
fourth_reminder_on_due_date
when store is a depot
Connection refused - connect(2)
renders the headers
when store is not a depot
Connection refused - connect(2)
renders the headers
fifth_reminder_at_1_day_past_due_date
when store is a depot
Connection refused - connect(2)
renders the headers
when store is not a depot
Connection refused - connect(2)
renders the headers
extension_charge
Connection refused - connect(2)
renders the headers
Collateral Charge Failed
Connection refused - connect(2)
renders the headers
Sent to Collection
Connection refused - connect(2)
renders the headers
RegistrationMailer
registration confirmation
renders the headers
password reset
renders the headers
ShippingMailer
rental check-in
renders the headers
damaged book
renders the headers
UserMailer
order confirmation
renders the headers
has the order id in the body
share email
body should have the store name
renders store name in the subject
Address
Associations
should belong to addressable
Validations
should require address_1 to be set
should require city to be set
should require zipcode to be set
should require phone to be set
should allow country to be set to "US"
should not allow country to be set to "united_fakes"
should ensure address_1 has a length of at most 100
should ensure address_2 has a length of at most 100
should ensure first_name has a length of at most 30
should ensure last_name has a length of at most 30
warns on incorrect phone number
doesn't accept a phone number greater than 10 digits long
accepts an extension up to 5 digits long
allows phone numbers with vanity
should allow international phone number with EPP format
an address
returns true if it's a po box
returns false if it's not a po box
turns into a hash for activemerchant to receive
has a formats to hash method
formats itself to a string
fedex verification
verification status must be confirmed
suggests a corrected address and zipcode
AdminUser
associations
should have many order_logs
should have many order_notes
should have many created_coupons
instance methods
.full_name
return first_name and last name
AdoptionTask
should belong to term
should calculate percentage complete
should retrieve list of processing tasks
AffiliateUser
associations
should belong to store
should have one address
should have many created_coupons
instance methods
.full_name
return first_name and last name
.default_address
return the user's address
.store_nane
return the user's associated store name
Authorization
associations
should belong to order
should have many transactions
should have many items through order
validations
should require order_id to be set
should require amount_in_cents to be set
should allow amount_in_cents to be set to 100
should not allow amount_in_cents to be set to "a"
an authorization
#must_charge?
when all items are shipped
should be true
should be false if is 'monitored'
when only some items are shipped
should be true if is older then 2 days
should be false if is 'monitored'
should be false if is new
when nothing is shipped
should be false
#must_cancel?
when is older then 4 days
should be true if nothing was shipped
should be false if something was shipped
#older_than
should be older than tomorow
should not be older than yesterday
when authorized
Connection refused - connect(2)
Connection refused - connect(2)
do NOT charge 'monitored' authorizations
Connection refused - connect(2)
Connection refused - connect(2)
creates a new authorization record
Connection refused - connect(2)
Connection refused - connect(2)
should be authorized
Connection refused - connect(2)
Connection refused - connect(2)
charged_or_authorized_at should be nil
Connection refused - connect(2)
do NOT ask the gateway to authorize twice
on charge
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
should update the transactions state
when charge fails
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
raises an error and stays authorizated
when authorization fails
Connection refused - connect(2)
Connection refused - connect(2)
should raise 'AuthorizationError'
when is voided
voided? should return true
with order items
when nothing is shipped
Connection refused - connect(2)
Connection refused - connect(2)
set all items to_cancel
when all items are shipped
Connection refused - connect(2)
Connection refused - connect(2)
should be all shipped
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
charge the total of the order
and an item to ship downgrade
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
uncheck the items to ship downgrade
when is old and some items are not shipped
Connection refused - connect(2)
should not be all shipped
Connection refused - connect(2)
should be one shipped
Connection refused - connect(2)
should charge the total amount
with a canceled item
Connection refused - connect(2)
charge only for the open items
Blacklist
associations
should belong to product
should belong to store
validations
should require reason to be set
should require product to be set
should require case sensitive unique value for product_id scoped to store_id
class methods
import
when import type is merge
should merge Blacklist
when import type is replace
should replace the Blacklist
BlacklistedUser
add some examples to (or delete) /Users/eden/Code/ruby/rails/rentwb/spec/models/blacklisted_user_spec.rb (PENDING: No reason given)
CommissionPayment
associations
should belong to store
should have many orders
validations
should require store to be set
should require period_from to be set
should require period_to to be set
Coupon
validations
should require creator to be set
should require code to be set
should require description to be set
should require discount_type to be set
should require discount_amount to be set
should require start_date to be set
should require expiration_date to be set
should allow discount_amount to be set to 1
should allow discount_amount to be set to 150
should allow discount_amount to be set to 150.1
should not allow discount_amount to be set to "AAA"
associations
should have many stores through coupon_owners
should have many coupon_owners dependent => destroy
dolar discounts
Connection refused - connect(2)
caulculate the correct amounts
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
apply discount
% discounts
Connection refused - connect(2)
caulculate the correct amounts
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
valid % discount
Course
returns associated sections sorted by name (ascending)
associations
should belong to department
should have many sections
validations
should require name to be set
should require case sensitive unique value for name scoped to department_id
CreditCard
Associations
should belong to user
accepts nested attributes for its billing_address
validations
should not allow number to be set to "123"
should not allow number to be set to "4111111111111111"
should not allow number to be set to nil
should not allow first_name to be set to nil
should not allow last_name to be set to nil
should not allow month to be set to nil
should not allow year to be set to nil
should not allow year to be set to 20011
should not allow verification_value to be set to nil
should not allow user_id to be set to nil
should not allow card_type to be set to nil
should allow year to be set to 11
should allow year to be set to 2011
should allow card_type to be set to "visa"
should require user_id to be set
should require masked_number to be set
should require billing_address to be set
should require card_type to be set
more validations
explains that it could not store the card if there's not ext_id
doesn't show ext_cc_id error unless everything else is valid
is valid if it has an ext_cc_id
does not raise an error on #front_masked_number
A credit card
has an expiration
turns into an activemerchant cc
doesn't have a display information if it's a new record
has a full name
.front_masked_number
should return the last four numbers
when being set as default
Connection refused - connect(2)
allows new default for authorized card
Connection refused - connect(2)
does not allow new default for unauthorized card
credit card payment
has display information if it's been saved
keeps new information if overwritten
CurrencyExchange
validations
should require rate_in_cents to be set
should require symbol to be set
finds
finds the rate for the day
conversion
returns the conversion for the day based on the country
returns the conversion for the previous days based on the country
defaults to united_states and today
Department
returns associated courses sorted by name (ascending)
associations
should belong to store_term
should have many courses
validations
should require name to be set
should require case sensitive unique value for name scoped to store_term_id
EmailTemplate
validations
should require name to be set
should require subject to be set
should require body to be set
Health
#db_connection
returns 'OK' when a store is found
returns 'PROBLEM' when nothing is found
#authorizations_charged
Connection refused - connect(2)
returns 'OK' when a recent authorizations was charged
Connection refused - connect(2)
Connection refused - connect(2)
returns 'PROBLEM' when no recent authorizations was charged
#calculate_taxes
when exceptions are not raised
returns 'OK'
returns 'PROBLEM'
Connection refused - connect(2)
when Taxware raises exception
Connection refused - connect(2)
when Taxware returns :exception option hash
#product_search
returns 'OK' when items are found
returns 'PROBLEM' when there is no item
#to_json
Connection refused - connect(2)
returns a json object with all checks
OrderItemEbook
associations
should belong to order_item
validations
should require order_item_id to be set
should require download_url to be set
should validate the masked_pin
with an older record
should require case sensitive unique value for order_item_id
.authorize!
sets the 'masked_pin' and 'epay_transaction_id'
keeps the virtual 'pin' untouched
OrderItem
associations
should belong to option
should belong to order
should belong to shipping_box
should have one authorization
should have many order_notes
should have many order_transactions dependent => destroy
validations
should allow order_type to be set to "Rental"
should not allow order_type to be set to "blah"
#received?
returns true if the item has been flagged as returned by rg
returns true if the item has been flagged as returned by depot
returns false if the item has not been flagged as returned
#product
with ebook
has ebook properties
without ebook
has empty ebook properties
#purchase_option_type
returns the predefined type if it is setted
returns the option class when the 'purchase_option_type' is not defined
#send_ebook
when the item is digital
sets the 'state' to 'shipped_with_customer'
sets the 'source_status' to 'to_download' and 'is_ditial' to 'true'
creates the order_item_ebook
updates all transactions 'is_digital' to true
when the item is NOT digital
returns false and does nothing
#days_since_collateral_charge_failed
without any collateral_charge_failed on mailer_logs
should be 0
with a collateral_charge_failed on mailer logs
should be 1 after 1 days
should be 5 after 5 days
should be 14 after 14 days
#transaction_state
when the item has one charged order_transaction
should be charged
when there are no transactions
should be 'nil'
#custom_unique_tax_identifier
returns 'permanentdownload' for DigitalSale option
returns 'subscriptiondownload' for DigitalRental option
returns 'rental60orless' for Rental option
#confirm_cancellation
with refundable transactions
Connection refused - connect(2)
has a refundable transaction before confirm_cancellation
Connection refused - connect(2)
all transactions should stay authorized
Connection refused - connect(2)
should void the authorization
#process_ship_downgrade
with a authorized authorization
Connection refused - connect(2)
returns true
Connection refused - connect(2)
do not create a refunt transaction
with a charged authorization
Connection refused - connect(2)
create a refund transaction for the shipping charged
Connection refused - connect(2)
refund the shipping shipping_cost_for_cancellation
Connection refused - connect(2)
set ship_to_downgrade to false
a product, option and item
finds outstanding rentals (PENDING: Temporarily disabled with xit)
returns true if the item has the same date_string and option_id
returns false if the item has a different date_string and option_id
has a name
has a list price
has a default list price of 100
has a limit amount for misc fee
stores the actual price of the purchase option (PENDING: Temporarily disabled with xit)
stores the actual price of the purchase option when canadian (PENDING: Temporarily disabled with xit)
has a description
has a quantity
has a from as a date
has a to as a date
has days left
has an option id
gets relieved
tells us if it's expiring soon
tells us if it's coming due
tells us if it's due over two weeks
has a tracking number for rental returns
sets the order type when option is a rental
sets the order type when option is a sale (PENDING: Temporarily disabled with xit)
sets the order type when option is an extension (PENDING: Temporarily disabled with xit)
doesn't overwrite the order_type if you set it manually
#shipping_method
should return a shipping method if it has an associated address
should default to a 48 states shipping method if it does not have an associated address
pricing
calculates price based on quantity (PENDING: Temporarily disabled with xit)
returns the total (PENDING: Temporarily disabled with xit)
with canadian
converts list_price to CAD (PENDING: Temporarily disabled with xit)
converts price to CAD (PENDING: Temporarily disabled with xit)
calculates item's due date (days_left)
should be within reminder period if due in exactly a week
should be due in exactly a week
should be due in exactly 3 days
should be due tomorrow
should due today
should be one day past due date
calculates item's due date (days_left) with extensions
should have extension days left
extension days
should have extensions
should update extension_days when the item has one extension associated
should update extension_days when the item has more than one extension associated
should be considerated for days_left
Trigger email reminders
Connection refused - connect(2)
should send first reminder at 7 days from due date
Connection refused - connect(2)
should send second reminder at 3 days from due date
Connection refused - connect(2)
should send third reminder at 1 day from due date
Connection refused - connect(2)
should send fourth reminder on due date
Connection refused - connect(2)
should send fifth reminder at 1 day past due date
Process Fedex shipments
should process only non-deliverd tracking numbers (e.g., pending or shipped_with_customer) (PENDING: Temporarily disabled with xit)
should change pending order item to shipped (PENDING: Temporarily disabled with xit)
should mark delivered_at (PENDING: Temporarily disabled with xit)
should mark shipped_at (PENDING: Temporarily disabled with xit)
cancellation of 10 items (VERY IMPORTANT CASE, Order #46001)
Connection refused - connect(2)
should calculate shipping cost per item
Connection refused - connect(2)
should calculate the amount to refund for item id 111619
Connection refused - connect(2)
should calculate the amount to refund for item id 111599
Connection refused - connect(2)
should calculate the amount to refund for item id 111589
Connection refused - connect(2)
should calculate the amount to refund for item id 111571
Connection refused - connect(2)
should determine the amount of items to_cancel
Connection refused - connect(2)
should determine which order item id's to cancel
Connection refused - connect(2)
should calculate the refund amount threshold
Connection refused - connect(2)
should determine if refund amount exceeds threshold
after successful cancellation
Connection refused - connect(2)
should set source_status and status to 'canceled'
Connection refused - connect(2)
should send a 'order_item_canceled_confirmation' email
process_cancellations_and_downgrades
with all items pending to cancel
should have items
should have an item with the state to_cancel
should have an item with the state to_cancel_pending_refund
should have an item with the state cancel_try_again_0
when transaction is authorized
and refund works
Connection refused - connect(2)
should cancel all pending to cancel items
Connection refused - connect(2)
the transactions should stay 'authorized'
Connection refused - connect(2)
no refund transactions
Connection refused - connect(2)
have void transactions
and refund fails
Connection refused - connect(2)
should cancel all pending to cancel items
when transaction is charged
and refund works
Connection refused - connect(2)
should cancel all pending to cancel items
Connection refused - connect(2)
the transactions should stay 'charged'
Connection refused - connect(2)
have a refund transactions
Connection refused - connect(2)
no void transactions
and refund fails
Connection refused - connect(2)
should NOT cancel items
Connection refused - connect(2)
should have NO cancelled items
gateway failure
Connection refused - connect(2)
should send a 'cancellation_amount_too_high' email to customer service
Connection refused - connect(2)
should set source_status and status to 'canceled'
above refund threshold
for order item #1
Connection refused - connect(2)
should send a 'cancellation_amount_too_high' email to customer service
Connection refused - connect(2)
should set source_status and status to 'canceled'
Connection refused - connect(2)
should determine if refund amount exceeds threshold
for order item #2
Connection refused - connect(2)
should not send a 'cancellation_amount_too_high' email to customer service
Connection refused - connect(2)
should not set source_status and status to 'canceled'
to_cancel_pending_refund
item #1
Connection refused - connect(2)
should calculate shipping cost per item
Connection refused - connect(2)
should calculate the amount to refund for item id 1
Connection refused - connect(2)
should determine if refund amount exceeds threshold
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #1
item #2
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #2
with a discount
item #1
Connection refused - connect(2)
should calculate shipping cost per item for item #1
Connection refused - connect(2)
should calculate the amount to refund for item #1
Connection refused - connect(2)
should determine if refund amount exceeds threshold
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #1
Connection refused - connect(2)
should send a 'order_item_canceled_confirmation' email
item #2
Connection refused - connect(2)
should calculate shipping cost per item for item #2
Connection refused - connect(2)
should calculate the amount to refund for item #2
Connection refused - connect(2)
should determine if refund amount exceeds threshold
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #2
Connection refused - connect(2)
should send a 'order_item_canceled_confirmation' email
cannot be cancelled
due to having a fee
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #1
Connection refused - connect(2)
should not send a 'order_item_canceled_confirmation' email
Connection refused - connect(2)
should send a cannot_be_cancelled email to customer service
due to having a refund
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #1
Connection refused - connect(2)
should not send a 'order_item_canceled_confirmation' email
Connection refused - connect(2)
should send a cannot_be_cancelled email to customer service
due to having an auto_buyout
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #1
Connection refused - connect(2)
should not send a 'order_item_canceled_confirmation' email
Connection refused - connect(2)
should send a cannot_be_cancelled email to customer service
due to having an auto_extension
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #1
Connection refused - connect(2)
should not send a 'order_item_canceled_confirmation' email
Connection refused - connect(2)
should send a cannot_be_cancelled email to customer service
due to having a buyout
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #1
Connection refused - connect(2)
should not send a 'order_item_canceled_confirmation' email
Connection refused - connect(2)
should send a cannot_be_cancelled email to customer service
due to having an extension
Connection refused - connect(2)
should not set source_status and status to 'canceled' for item #1
Connection refused - connect(2)
should not send an cannot_be_cancelled email to the customer
Connection refused - connect(2)
should send a cannot_be_cancelled email to customer service
for a Canadian order
for order Item # 1
Connection refused - connect(2)
should set source_status and status to 'canceled'
Connection refused - connect(2)
should send a 'order_item_canceled_confirmation' email
for order Item # 2
Connection refused - connect(2)
should set source_status and status to 'canceled'
Connection refused - connect(2)
should send a 'order_item_canceled_confirmation' email
manual refunds
for buyouts
should refund full value for amount
should refund taxes
should not refund if the amount exceed the limit (order.net_total)
for shipping charged
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
should refund shipping charged
manual fee
for rental item
should charge shipping_upgrade fee
should charge restocking fee
should charge misc fee
should abort misc fee if the amount exceeds the limit for item
should abort misc fee if the amount exceeds the available amount for the order
extend_or_purchase!
when is not rental or due date has not passed
Connection refused - connect(2)
when is not a rental should return true
Connection refused - connect(2)
when days_left is greater or equal than 0 should return true
when is a successfull transaction
when is an extension
Connection refused - connect(2)
should log auto_extension
Connection refused - connect(2)
should log tax charged
Connection refused - connect(2)
should return true
when is a buyout
Connection refused - connect(2)
should log auto_extension
Connection refused - connect(2)
should log tax charged
Connection refused - connect(2)
should return save value
Connection refused - connect(2)
should option update relieved_at to now
Connection refused - connect(2)
should update state to closed_by_purchase
when is fully refunded
Connection refused - connect(2)
refunded_total should be $1.00
Connection refused - connect(2)
should be fully refunded
Connection refused - connect(2)
should not extend_or_purchase
when the transaction fails
Connection refused - connect(2)
should create a order response
Connection refused - connect(2)
should send the collateral charge failed emal when the charge fails for the first time
Connection refused - connect(2)
should return false
after 2 days
Connection refused - connect(2)
should not send emails
Connection refused - connect(2)
should not try to charge
after 5 days trying to charge
Connection refused - connect(2)
should sent_to_collection email
Connection refused - connect(2)
should not sent_to_collection email
after 14 days trying to charge
Connection refused - connect(2)
should sent_to_collection email
Connection refused - connect(2)
should be sent to collection
after 30 days trying to charge
Connection refused - connect(2)
should sent_to_collection email
Connection refused - connect(2)
should be sent to collection
Credit card tokens
order ext_cc_id is nil
Connection refused - connect(2)
should return nil for PlugnPay auto-cancellation
Connection refused - connect(2)
should return nil for Plugnpay manual refunds
Connection refused - connect(2)
should return nil for Plugnpay manual fees
credit card ext_cc_id is nil
Connection refused - connect(2)
should return nil for Cybersource auto-cancellation
Connection refused - connect(2)
should return nil for Cybersource manual refunds
Connection refused - connect(2)
should return nil for Cybersource manual fees
.try_again_cancellation
should update source_status from cancel_try_again_0 to cancel_try_again_1
should return false when source_status is cancel_try_again_1
should update source_status with cancel_try_again_0 from to_cancel
should update source_status with cancel_try_again_0 from to_cancel_pending_refund
extensions
Connection refused - connect(2)
should assign the correct creator
Connection refused - connect(2)
should send the airbrake notification with the id and user email if raise an error
.refundable?
should return true when from date is lower than 21 days ago
should return false when from date is greater than 21 days ago
Determine buyout amounts
Connection refused - connect(2)
should calculate the buyout price
Connection refused - connect(2)
should return zero if calculated price is negative
user cancelations
Connection refused - connect(2)
Connection refused - connect(2)
can be canceled by user if status is pending
Connection refused - connect(2)
Connection refused - connect(2)
cannot be canceled by user if was created more than 2 hours ago
Connection refused - connect(2)
Connection refused - connect(2)
should change the state when canceled
Connection refused - connect(2)
Connection refused - connect(2)
should change the source_status when canceled
.process_extension_without_charge
when is a buyout
Connection refused - connect(2)
should update the relieved at time
Connection refused - connect(2)
should change the state to closed_by_pruchase
Connection refused - connect(2)
should add a free_buyout transaction
when is an extension
Connection refused - connect(2)
should increase the extension days
Connection refused - connect(2)
should add a free_extension transaction
.shipped?
should return true when was shipped
should return false when was not shipped
OrderLog
validations
should require action to be set
should require user_id to be set
should require order_id to be set
associations
should belong to user
should belong to order
OrderNote
associations
should belong to order_item
should belong to user
validations
should require comment to be set
should require title to be set
should require isbn to be set
a generic issue
has barcode_info
saves a new order note
an item issue
barcode_info should be based on the item
#search
returns nothing when the query does not match with any record
with an empty query
returns all notes
with query = Order id
finds the note with that id
with query = Issue id
finds the note with that id
with query = Customer email
finds the notes for that user email
resolving issues
With an existing order
Do not charge the customer
Connection refused - connect(2)
should save the order note
Connection refused - connect(2)
should not attempt to charge the customer
Connection refused - connect(2)
should record the transaction in the order log
Connection refused - connect(2)
should save the order note
Connection refused - connect(2)
should not attempt to charge the customer
Connection refused - connect(2)
should record the transaction in the order log
Charge the customer
100% of the purchase price
Connection refused - connect(2)
should save the order note
Connection refused - connect(2)
should record the transaction in the order log
Connection refused - connect(2)
should calculate the amount to charge
Connection refused - connect(2)
should charge the customer
Connection refused - connect(2)
sets order item state to closed_rejected_by_depot for depot store
Connection refused - connect(2)
sets order item state to closed_rejected_by_rg for non-depot store
logging
Connection refused - connect(2)
should log the resolution amount
Connection refused - connect(2)
should log the resolution tax
50% of the purchase price
Connection refused - connect(2)
should save the order note
Connection refused - connect(2)
should record the transaction in the order log
Connection refused - connect(2)
should calculate the amount to charge
Connection refused - connect(2)
should charge the customer
Connection refused - connect(2)
sets order item state to closed_rejected_by_depot for depot store
Connection refused - connect(2)
sets order item state to closed_rejected_by_rg for non-depot store
logging
Connection refused - connect(2)
should log the resolution amount
Connection refused - connect(2)
should log the resolution tax
10% of the purchase price
Connection refused - connect(2)
should save the order note
Connection refused - connect(2)
should record the transaction in the order log
Connection refused - connect(2)
should calculate the amount to charge
Connection refused - connect(2)
should charge the customer
Connection refused - connect(2)
sets order item state to closed_rejected_by_depot for depot store
Connection refused - connect(2)
sets order item state to closed_rejected_by_rg for non-depot store
logging
Connection refused - connect(2)
should log the resolution amount
Connection refused - connect(2)
should log the resolution tax
Order
Associations
should belong to credit_card
should belong to user
should belong to store
should belong to commission_payment
should have one authorization
should have one shipping_address dependent => destroy
should have many items dependent => destroy
should have many order_logs dependent => destroy
should have many order_transactions dependent => destroy
should have many order_responses
accepts nested attributes for its shipping_address
accepts nested attributes for its credit_card
updates nested attributes for its credit_card
has a shipping method
validations
Connection refused - connect(2)
is invalid if the total open rentals for its user exceeds the limit
for shipping address
when fedex validation is false
Connection refused - connect(2)
use fedex validation and do not save a invalid addresses
Connection refused - connect(2)
do not use fedex validation for CA addresses
Connection refused - connect(2)
skip the fedex validation and save if it was already verified
when fedex validation is true
Connection refused - connect(2)
saves new shipping address
Connection refused - connect(2)
Connection refused - connect(2)
saves a shipping address from user
Connection refused - connect(2)
raise an error if the address is invalid
#date
formats the date
#update_items_start_date
when the order is not processed
Connection refused - connect(2)
sets the 'from' date of the items to today if it was older
when the order is processed
Connection refused - connect(2)
returns false and does nothing else
an Order
with items
Connection refused - connect(2)
sets the shipping_method_id on all items
Connection refused - connect(2)
has a subtotal that is just the item prices sum
Connection refused - connect(2)
stores the costs
Connection refused - connect(2)
returns the cart size
Connection refused - connect(2)
Connection refused - connect(2)
has tax (FAILED - 1)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
has a total that includes price, tax, and shipping
Connection refused - connect(2)
Connection refused - connect(2)
has a updated total when order is changed (FAILED - 2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
has a total that includes a discount
Connection refused - connect(2)
defaults currency to USD
#digital?
when all items are ebooks
Connection refused - connect(2)
should be digital
when some items are books and others are not
Connection refused - connect(2)
should not be digital
#canceled_total
without canceled items
Connection refused - connect(2)
canceled total should be $0.00
with a canceled item
Connection refused - connect(2)
canceled total should be $10.00
Connection refused - connect(2)
amount to charge should be iqual to the open total
has a shipping cost
Connection refused - connect(2)
of $0.00 if no shipping is assigned
Connection refused - connect(2)
of $0.00 for shipping id 1
Connection refused - connect(2)
of $0.00 for shipping id 1
Connection refused - connect(2)
in the right currency if a shipping method is assigned
with item to ship downgrade
Connection refused - connect(2)
do not charge the shipping for the downgraded item
Connection refused - connect(2)
calculate the correct total
on checkout
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
complete checkout (FAILED - 3)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
can update an order after review checkout (FAILED - 4)
confirm checkout
when authorized
and can charge
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
create authoriration and transactions (FAILED - 5)
Connection refused - connect(2)
Connection refused - connect(2)
autorizes and charges for the correct amount (FAILED - 6)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
do NOT charge if authorization_without_charge is true (FAILED - 7)
and charge fail
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
should stay authorized (FAILED - 8)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
keep the transactions as authorized (FAILED - 9)
when authorization fails
Connection refused - connect(2)
Connection refused - connect(2)
do NOT create authorization nor transactions
decrement stock properly
when user rent a book
Connection refused - connect(2)
decrement all rental options + buy used option if quantity > 0
Connection refused - connect(2)
decrement all rental options + buy new option if buy used quantity <= 0
when user buy a new book
Connection refused - connect(2)
decrement all rental options + buy new option
when user buy an used book
Connection refused - connect(2)
decrement all rental options + buy used option
and a canadian store
Connection refused - connect(2)
has currency
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
converts its prices
Connection refused - connect(2)
Connection refused - connect(2)
stores its currency
Connection refused - connect(2)
converts sums to canadian dollars
and a discount coupon
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
order should have a coupon id
Connection refused - connect(2)
keeps the saved discount even it the coupon changes
and a national discount coupon
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
creates a discount transaction labeled global (FAILED - 10)
and an affiliate discount coupon
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
creates a discount transaction labeled local (FAILED - 11)
.admin_search
Connection refused - connect(2)
find by isbn
Connection refused - connect(2)
find by date range
and fees and refunds
has a refund total of 200 for the order
has a fee total of 2140 for the order
has a misc fee total of 550 for the order
has a misc refund total of 53 for the order
has a net misc total of 497 for the order
has a limit of 4500 to charge of misc fees for the order
has an available amount of 4003 to charge of misc fees for the order
has a net total of 8740 for the order
a list of orders
.admin_search
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
find order by id
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
find order by user
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
find order by full name
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
find order by email
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
finds order by shipment_id
.chronological_log
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
should show the last created log item first
no log items
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
should return an empty array
.all_transactions
should return the order_responses
OrderTransaction
associations
should belong to order
should belong to creator
should belong to authorization
validations
Connection refused - connect(2)
should allow transaction_type to be set to "auto_extension"
Connection refused - connect(2)
should allow transaction_type to be set to "free_extension"
Connection refused - connect(2)
should allow transaction_type to be set to "void"
Connection refused - connect(2)
should allow transaction_type to be set to "discount"
Connection refused - connect(2)
should allow transaction_type to be set to "extension"
Connection refused - connect(2)
should allow transaction_type to be set to "purchase"
Connection refused - connect(2)
should allow transaction_type to be set to "buyout"
Connection refused - connect(2)
should allow transaction_type to be set to "refund"
Connection refused - connect(2)
should allow transaction_type to be set to "auto_buyout"
Connection refused - connect(2)
should allow transaction_type to be set to "tax_charged"
Connection refused - connect(2)
should allow transaction_type to be set to "shipping_charged"
Connection refused - connect(2)
should allow transaction_type to be set to "rental"
Connection refused - connect(2)
should allow transaction_type to be set to "subscription"
Connection refused - connect(2)
should allow transaction_type to be set to "fee"
Connection refused - connect(2)
should allow transaction_type to be set to "free_buyout"
Connection refused - connect(2)
should not allow transaction_type to be set to "foo"
Connection refused - connect(2)
should not allow transaction_type to be set to "bar"
Connection refused - connect(2)
should not allow transaction_type to be set to "baz"
Connection refused - connect(2)
should require transaction_type to be set
Connection refused - connect(2)
should require amount_in_cents to be set
Connection refused - connect(2)
should require transaction_sub_type to be set
an order transaction
Connection refused - connect(2)
returns true if type is refund or discount
Connection refused - connect(2)
returns true if type is fee
Connection refused - connect(2)
returns true if type is refund
Connection refused - connect(2)
returns true if type is purchase
change states
Connection refused - connect(2)
start as authorized
Connection refused - connect(2)
sets the state to charged
#canceled?
with an canceled order item
Connection refused - connect(2)
should be canceled
with an open order item
Connection refused - connect(2)
should not be canceled
with an order
Connection refused - connect(2)
should not be canceled
Partial vs Full Refunds
when Manual Refund
for Minor damage
Connection refused - connect(2)
data[:refund] should equal :partial
Connection refused - connect(2)
order_type should be OrderItem
Connection refused - connect(2)
id should be the OrderItem's id
for Shipping charged
Connection refused - connect(2)
data[:refund] should equal :partial
Connection refused - connect(2)
order_type should be Order
Connection refused - connect(2)
id should be the Order's id
for Misc
Connection refused - connect(2)
data[:refund] should equal :partial
Connection refused - connect(2)
order_type should be Order
Connection refused - connect(2)
id should be the Order's id
when Manual Fee
for Minor damage
Connection refused - connect(2)
data should not contain string :partial
Connection refused - connect(2)
order_type should be OrderItem
Connection refused - connect(2)
id should be the OrderItem's id
for Shipping upgrade
Connection refused - connect(2)
data should not contain string :partial
Connection refused - connect(2)
order_type should be Order
Connection refused - connect(2)
id should be the Order's id
for Misc
Connection refused - connect(2)
data should not contain string :partial
Connection refused - connect(2)
order_type should be Order
Connection refused - connect(2)
id should be the Order's id
when Check-in
Connection refused - connect(2)
data[:refund] should contain string :full
Connection refused - connect(2)
order_type should be OrderItem
Connection refused - connect(2)
id should be the OrderItem's id
create a transaction
with OrderTransaction.auto_extension!
Connection refused - connect(2)
the state should be charged
with OrderTransaction.free_extension!
there is no test for 'free_extension' (PENDING: Temporarily disabled with xit)
with OrderTransaction.void!
Connection refused - connect(2)
the state should be authorized
with OrderTransaction.extension!
Connection refused - connect(2)
the state should be charged
with OrderTransaction.discount!
Connection refused - connect(2)
the state should be authorized
with OrderTransaction.buyout!
Connection refused - connect(2)
the state should be charged
with OrderTransaction.purchase!
Connection refused - connect(2)
the state should be authorized
with OrderTransaction.refund!
Connection refused - connect(2)
the state should be charged
with OrderTransaction.auto_buyout!
Connection refused - connect(2)
the state should be charged
with OrderTransaction.tax_authorized!
Connection refused - connect(2)
the state should be authorized
with OrderTransaction.fee!
Connection refused - connect(2)
the state should be charged
with OrderTransaction.subscription!
there is no test for 'subscription' (PENDING: Temporarily disabled with xit)
with OrderTransaction.rental!
Connection refused - connect(2)
the state should be authorized
with OrderTransaction.shipping_charged!
Connection refused - connect(2)
the state should be authorized
with OrderTransaction.tax_charged!
Connection refused - connect(2)
the state should be charged
with OrderTransaction.free_buyout!
there is no test for 'free_buyout' (PENDING: Temporarily disabled with xit)
ProductCode
validations
should require product_code to be set
should require taxware_code to be set
should require code_description to be set
Book
associations
should have one properties
should have many ebooks
class methods
finds the book by isbn10
finds the book by isbn13
validations
should require name to be set
should not allow isbn10 to be set to "9394830"
should not allow isbn13 to be set to "not an isbn13"
has at least one isbn
has a full purchase option set
a valid book
has a list price
aliases name to title
returns it's isbn13 if it has it
returns it's isbn10 if it has it
returns both isbns if it has them
turns into a hash
associations
has generic product properties
has specific properties of a book
has property fields
deletes the properties on destroy
has a purchase_option_set
destroys it's purchase_option_set on delete
Ebook::Properties
associations
should belong to book_properties
validations
should require ebook_code to be set
should require title_id to be set
with an older record
should require case sensitive unique value for ebook_code
should require case sensitive unique value for title_id
.find_subscription
returns a single rentable ebook when there is one
returns nothing when there is no rentable ebook
.find_purchase
returns a single purchase ebook when there is one
ProductSearch
validations
should ensure keyword has a length of at least 1
search for products
searching for 'Ishmael'
should include "Ishmael (Trade Ed)"
should not include "Incredibly loud"
searching for 'loud'
should not include "Ishmael (Trade Ed)"
should include "Incredibly loud"
when searching with an ISBN
using isbn13 9780553375404
should eql "Ishmael (Trade Ed)"
should not eql "Incredibly loud"
using isbn10 0553375407
should eql "Incredibly loud"
should not eql "Ishmael (Trade Ed)"
when query includes whitespace
searching for ' Ishmael '
should include "Ishmael (Trade Ed)"
should not include "Incredibly loud"
searching for ' loud '
should not include "Ishmael (Trade Ed)"
should include "Incredibly loud"
using isbn13 9780553375404 including whitespace
should eql "Ishmael (Trade Ed)"
should not eql "Incredibly loud"
using isbn10 0553375407 including whitespace
should eql "Incredibly loud"
should not eql "Ishmael (Trade Ed)"
Product
validations
should require name to be set
a valid product
responds to an image method
instance methods
.order_items
should return order items through purchase options
PurchaseOption::Extension
final price should be 15
validations
should not allow period to be set to 99
should not allow period to be set to nil
should allow period to be set to 14
PurchaseOption::OptionSet
returns true if the product is rentable and has all it's options
returns false if the product is rentable, but doesn't have all it's options
map works
finds the lowest rental
doesn't find the lowest if there is no stock
finds the lowest sale
turns to a hash
converts the prices when turning into a hash
only returns options with available stock
PurchaseOption::Rental
displays nicely as a string
final price should be 15
associations
belongs to a product
validations
should not allow period to be set to "2342342"
should not allow period to be set to nil
should require price_in_cents to be set
PurchaseOption::Sale
displays nicely as a string
final price should be 100
associations
belongs to a product
validations
should not allow condition to be set to "okay"
should not allow condition to be set to nil
should require price_in_cents to be set
PurchaseOption::Transfer
final price should be 100
PurchaseOption
associations
should belong to book
should belong to product
a canadian option
has a stock of zero by default
has different stock based on canadian parameter
can decrement the stock
can't decrement the stock when it's zero
an option
has a stock of zero by default
can decrement the stock
turns into a hash
returns its price per day
School::Importer
imports the properties
imports the address
School
validations
should require full_name to be set
association
should belong to address
should have one store
SearchLog
log of empty searches
search of existing book
shouldn't create a new entry in Search log
search of existing isbn
shouldn't create a new entry in Search log
search of non-existing book
should create a new entry in Search log
search of non-existing isbn
should create a new entry in Search log
search of out of stock item
should create a new entry in Search log
SectionBook
associations
should belong to adoption
should belong to book
validations
should require adoption to be set
should require book to be set
Section
associations
should belong to course
should have many adoptions
validations
should require name to be set
should require case sensitive unique value for name scoped to course_id
Shipment
should return a Shipment class
returns a tracking number
generates a pdf file and puts it into the shipping labels directory
populates errors from fedex if necessary
associates the rental with a shipping customer after creating the shipping customer (PENDING: there is an inconsistency here because item.shipment_id and subject.shipment_id have diferent types)
creates a recipient with no decoration on the address
initializes the barcode instance variable on further calls to new
affiliate return
creates a recipient with ADR appended to the address
ShippingBox
associations
should have many order_items
should belong to store
ShippingMethod
returns nil if no method is found
returns the standard shipping method (PENDING: Not yet implemented)
find by id
for us addresses
doesnt find without a valid address
doesnt find with a wrong id
has cost $0.00 when quantity is 0
with 'Standard' shipping for CA/US and 2 items
region should be '48 States'
quantity should be '2'
id should be '1'
cost should be $0.00
name should be 'Standard'
with 'Expedited' shipping for HI/US
and with 2 items
region should be 'AK / HI'
quantity should be '2'
id should be '2'
cost should be $14.00
name should be 'Expedited'
and with 1 items
quantity should be '1'
cost should be $10.00
and with 0 items
quantity should be '0'
cost should be $0.00
for Canada
finds by id if providing CA or Canada
finds all
for Canada
for a US address
a shipping method
knows it's region if in Canada
knows it's region if in US
knows it's region if AK
has a shipping cost per region
has a description
has a speed based on the region when Canadian
shipping cost
with an US address from AK
takes quantity into consideration to caulculate the cost
with an US address from one of the 48 states
takes quantity into consideration to caulculate the cost
with a Canada address
takes quantity into consideration to caulculate the cost
standard to AK
has a speed based on the region when AK
gives a deliver estimate based on today
gives a deliver estimate based on passed in date
validations
doesn't have errors if you can use this method for the region
has errors if you try to ship to the po box
StoreLocation
associations
should belong to store
should have one address
validations
should require store to be set
should require address to be set
associate invalid address
should be false
Store
has a custom logo
returns true if canadian
returns its home_url
returns wether to hide or show list price
should return true if store has gray_background
associations
should belong to school
should have one address
should have many locations
should have one tax_information
should have one affiliate_user
should have one contract_owner dependent => destroy
should have one contract_accounting_contact dependent => destroy
should have one territory_manager dependent => destroy
should have one business_rule dependent => destroy
should have many orders
should have many order_items through orders
should have many coupon_owners dependent => destroy
should have many coupons through coupon_owners
should have many adoptions dependent => destroy
should have many shipping_boxes
should have many terms
should have many departments through terms
should have many blacklists
should have many commission_payments
validations
should require name to be set
should require follett_customer_number to be set
should require url to be set
should require follett_customer_number to be set
should require territory_designation to be set
should require fax to be set
should require commissions to be set
length
should allow commissions to be set to 10
should allow tag_line to be set to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
should allow store_hours to be set to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
should allow custom_text to be set to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
should allow primary_color to be set to "aaa"
should allow primary_color to be set to "aaa123"
should allow secondary_color to be set to "aaa"
should allow secondary_color to be set to "aaa123"
should not allow commissions to be set to 100
should not allow tag_line to be set to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
should not allow store_hours to be set to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
should not allow custom_text to be set to "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
should not allow primary_color to be set to "a"
should not allow secondary_color to be set to "a"
uniqueness
should not allow url to be set to "valid212"
format
should allow url to be set to "valid.domain.com"
should allow primary_color to be set to "aaa123"
should not allow url to be set to "|Nv$l|d_domain.com"
should not allow primary_color to be set to "gggggg"
#buy_rent?
should return true if the rental_type is "buy_rent"
should return false if the rental_type is not "buy_rent"
#buy_only?
should return true if the rental_type is "buy_only"
should return false if the rental_type is not "buy_only"
#rent_only?
should return true if the rental_type is "rent_only"
should return false if the rental_type is not "rent_only"
#rent?
should return true if the rental_type is rent_only
should return true if the rental_type is buy_rent
should return false if the rental_type is buy_only
#buy?
should return true if the rental_type is buy_only
should return true if the rental_type is buy_rent
should return false if the rental_type is rent_only
#ebooks?
returns true if ebooks are enabled on the store and settings
returns false if ebooks are enabled only on the settings
returns false even if ebooks are enabled only on the store
StoreTerm
associations
should belong to store
should have many adoptions
should have many departments dependent => destroy
validations
should require name to be set
should require case sensitive unique value for name scoped to store_id
Adoption::AdoptedBook
validations
should require book to be set
should require adoption to be set
should require case sensitive unique value for book_id scoped to adoption_id
associations
should belong to adoption
should belong to book
CourseworkImporter
New adoption (replace)
populates the missed departments
populates the missed courses
populates the missed sections
populate the adoption including the given books
doesn't populate repeated adoptions
attach isbns to same adoption when store, term and section are equals
returns missing isbns
Existing adoptions (merge)
updates the adoption
appends the books when no delete flag is set
RatexImporter
New adoption (replace)
populates the missed departments
populates the missed courses
populates the missed sections
populate the adoption including the given books
doesn't populate repeated adoptions
attach isbns to same adoption when store, term and section are equals
returns missing isbns
Existing adoptions (merge)
updates the adoption
appends the books when no delete flag is set
Adoption::Importer
New adoption (replace)
populates the store's adoption (PENDING: Temporarily disabled with xit)
imports books by isbn (PENDING: Temporarily disabled with xit)
returns missing isbns (PENDING: Temporarily disabled with xit)
Existing adoptions (merge)
updates the adoption (PENDING: Temporarily disabled with xit)
appends the books when no delete flag is set (PENDING: Temporarily disabled with xit)
Adoption
associations
should belong to store
should belong to term
should belong to section
should have many section_books
should have many books through section_books
validations
should require term_id to be set
should require section_id to be set
should require course to be set
should require department to be set
a course and department
TaxInformation
associations
should belong to store
validations
should require federal_tax_id to be set
should require business_name to be set
User
validations
should require first_name to be set
should require last_name to be set
should ensure first_name has a length of at most 30
should ensure last_name has a length of at most 30
requires acceptance of TOS
requires a date for the grad year
requires a small school name
email validation
is invalid without a uniq email
requires a email
should accept valid email addresses
should reject invalid email addresses
password validations
requires a password
requires a matching password
requires a password to be 6 characters long
Associations
should have many addresses dependent => destroy
should have many orders
should have many credit_cards
should have many order_logs
should have many order_notes
have shipping addresses
with rentals
Connection refused - connect(2)
has rental_items
Connection refused - connect(2)
has rentals
Connection refused - connect(2)
has a total open rental amount
instance methods
.full_name
return first_name and last name
mailing_list
Connection refused - connect(2)
Connection refused - connect(2)
should include opt-in users who have ordered from the current store
Connection refused - connect(2)
Connection refused - connect(2)
should not include opt-in users who have not ordered from the current store
Connection refused - connect(2)
Connection refused - connect(2)
should not include opt-out users
Admin::Blacklist
blacklist index page
show current blacklisted items
search for blacklisted items successfully
search for blacklisted items unsuccessfully
add blacklist page
creates a blacklist item
fails to create without a valid book
fails to create without a reason
Admin::Coupons
save
discount type should always be in %
creates a coupon
updates a cupon
Admin::Customers
customers search customers page
by first name
by last name
by full name
by email
redirect to edit page if search result match one single result
show error message when no result found
Admin::Issues
Connection refused - connect(2)
issues link on orders menu
list order notes
Connection refused - connect(2)
show open issues by default
Connection refused - connect(2)
show not show closed issues by default
Connection refused - connect(2)
should have a menu for displaying open, closed & all issues
Connection refused - connect(2)
search for a issue
Connection refused - connect(2)
should show errors on resolving an issue
Connection refused - connect(2)
should resolve an issue when required fields are input
an issue
Connection refused - connect(2)
create a generic issue
Connection refused - connect(2)
show errors for invalid issue
Admin::Orders
list orders
Connection refused - connect(2)
empty list if there is no items
with items
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
list the items from an order
show an order
with discount
Connection refused - connect(2)
Connection refused - connect(2)
/Users/eden/Code/ruby/rails/rentwb/app/views/admin/orders/_customer_info.html.haml:31: warning: Object#type is deprecated; use Object#class
Connection refused - connect(2)
Connection refused - connect(2)
/Users/eden/Code/ruby/rails/rentwb/app/views/admin/orders/_customer_info.html.haml:31: warning: Object#type is deprecated; use Object#class
Connection refused - connect(2)
the price of a processed order should not change
Admin::Recievings
list check-in orders
with items
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
empty list if there is no query
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
hide all received items from all orders by default
check-in a book
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
click on 'pass' to check a book as returned
with checked in receivings
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
should have a RETURNED_RECEIVED_BY_RG book
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
should not see the print receipt link (as admin)
an issue
create a generic issue
Connection refused - connect(2)
create a item issue
Admin::Reports::Revenues
form
contain inputs to request report data
report results
display total summary
Admin::Stores
save
has commissions field
has enable_ebooks field
store#edit
should display the correct password error message
should have a gray background checkbox
Admin::Orders::Rentals
list rentals
Connection refused - connect(2)
show items
extend rental
Connection refused - connect(2)
show price with multiplier and button to extend
Connection refused - connect(2)
/Users/eden/Code/ruby/rails/rentwb/app/views/admin/orders/_customer_info.html.haml:31: warning: Object#type is deprecated; use Object#class
Connection refused - connect(2)
Connection refused - connect(2)
extend the item
convert to purchase a rental
Connection refused - connect(2)
show sale price with multiplier and button to purchase
Connection refused - connect(2)
/Users/eden/Code/ruby/rails/rentwb/app/views/admin/orders/_customer_info.html.haml:31: warning: Object#type is deprecated; use Object#class
Connection refused - connect(2)
Connection refused - connect(2)
purchase the item
Affiliates::Adoptions
main page
adoptions link on settings menu
there's current import process happenning
should show a notification of current percentage
there's pending import process to start
should show a notification of current percentage
adoption's new page
add adoptions link on main page
import form
contain inputs to import adoptions data
add new adoption form
contain inputs to add/update a single adoption
adding a new adoption
let the user to add a new term
Books
Given I am a logged in user
When I choose a book with rental option
I can rent the Book
When I choose a book with all purchase options
I can see the digital sale/rental options if ebooks are enabled on the server settings
I CANNOT see the digital sale/rental options if ebooks are disabled on the server settings
Carts
Given I am a logged in user
When I add a book to my cart
address_to option was missing.
address_to option was missing.
I can update the rental period and save the changes
address_to option was missing.
address_to option was missing.
I can update the quantity and save the changes
address_to option was missing.
I cannot update the quantity with a non numeric value
When I have nothing in my cart
And I visit the cart page
I can see that my cart is empty
Checkouts
Given I am a logged in user
And I choose to buy a digital book
When I am at the 'Terms' page
address_to option was missing.
I can see the 'digital terms'
address_to option was missing.
address_to option was missing.
address_to option was missing.
I am redirected to the 'Billing' page if I accept the terms
address_to option was missing.
I am redirected back to the 'Terms' page If I try to access the 'Shipping Address'
When I am at the 'Billing' page
address_to option was missing.
address_to option was missing.
address_to option was missing.
I am redirected back to the 'Terms' page If I try to access the 'Shipping Address'
When I am at the 'Review' page
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
I can see the 'Payment Info' but no 'Shipping Info' (FAILED - 12)
And I place the order
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
I can see the Download URL and the Activation PIN (FAILED - 13)
And I choose to rent a book
When I am at the 'Terms' page
address_to option was missing.
address_to option was missing.
address_to option was missing.
I am redirected to the 'Shipping' page If I accept the terms
address_to option was missing.
I am notified to 'accept the terms before continuing' If I refuse the terms
address_to option was missing.
The error message is cleaned If I visit an other page after getting an error
When I am at the 'Shipping Address' page
And I want to add a new address
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
I can create a new address If it is valid and verified by Fedex
address_to option was missing.
address_to option was missing.
address_to option was missing.
I get errors If my shipping address is invalid
address_to option was missing.
address_to option was missing.
address_to option was missing.
I get the fedex errors for shipping address modified by fedex
address_to option was missing.
address_to option was missing.
address_to option was missing.
I get the fedex errors for an unrecognized shipping address
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
I can create the address and skip the fedex validation If it was already verified
And I want to use an existent address
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I can select an address and continue with the checkout
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
My saved address is selected by default If I return to the 'Shipping Address' page
And autodowngrade is enebled in the server settings
address_to option was missing.
address_to option was missing.
address_to option was missing.
I get a validation error If I select 'Expedited Shipping' and no auto-downgrade choice was made
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I can save the address with 'Expedited Shipping' If the auto-downgrade choice was made
When I am at the 'Billing' page
And I want to add a new credit card
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I can create a new credit card If it is valid (FAILED - 14)
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I CANNOT create a credit card with an invalid number
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I CANNOT create a credit card with no number
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I get an error if the credit card is refused by the payment gateway
And I want to use an existent credit card
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I can select an existent credit card and continue with the checkout (FAILED - 15)
When I am at the 'Review' page
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I can pay with a valid credit card (FAILED - 16)
address_to option was missing.
address_to option was missing.
address_to option was missing.
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I get an error If the authorization fails (FAILED - 17)
CreditCards
logged in
#new
should have editable credit card fields
#edit
should not have editable credit card fields
Orders
Given I am a logged user
When I have a pending order
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I can cancel one of my pending order items
When I have an order with all kind of items
Connection refused - connect(2)
Connection refused - connect(2)
I can see the correct purchase options for each item
When I have a digital order
Connection refused - connect(2)
Connection refused - connect(2)
Connection refused - connect(2)
I can see the download URL of my ebook but not the 'Return' buttons
Portal
searching for existing school
should redirect to the school's page
searching for school that does not have an affiliate store
should redirect to the national site
searchng for non-existent school
should redirect to the national site home page
Products
has a product image div
Rentals
list rentals
with a refundable rental
Connection refused - connect(2)
show 'Return for Refund' link on items
without a refundable rental
Connection refused - connect(2)
show checkbox on items
extend rental
Connection refused - connect(2)
show price with multiplier
Connection refused - connect(2)
Connection refused - connect(2)
extend the rental period (FAILED - 18)
Returning a book
logged in user
listing rentals
Connection refused - connect(2)
should show selectable rentals to return
selecting rentals to return
Connection refused - connect(2)
should enable print buttons when a check box is selected
returning selected rentals
via Shipment
Connection refused - connect(2)
should show print buttons
via Store
Connection refused - connect(2)
should show print buttons
Searches
Given I am a guest user
And I search for a book
When the book have 'rental' and 'sale' options
I can see the buttons and prices to 'Buy' and 'Rent'
When the book only have the 'digital' option
I can see only see the button and price for the 'digital' option
SignUp
When filling out the sign up form
should have #user_mailing_list checked
should have #user_mobile_promotions checked and disabled
/Users/eden/Code/ruby/rails/rentwb/config/initializers/states.rb:52: warning: already initialized constant USA_STATES
/Users/eden/Code/ruby/rails/rentwb/config/initializers/states.rb:69: warning: already initialized constant CANADA_PROVINCES
should enable #user_mobile_promotions when filling in Mobile number
should have #user_school_name be populated with the school name searched for from portal
should have #user_school_name use school auto complete
UserAuths
Facebook Auth
auth from Facebook for existing user
FacebookService
find_user_for_oauth
when a user is found
when a user has not facebook id
should be assigned a facebook id
when a user has facebook id
should return the user is the facebook id matches
should return a new user id when the facebook id not matches
when a user is not found
should return a new user
should assign a facebook_id
Pending:
Epay#void refunds a book
# Not yet implemented
# ./spec/lib/epay_spec.rb:41
Epay#recover_pin retrieves a lost pin number
# Not yet implemented
# ./spec/lib/epay_spec.rb:45
Payment::Plugnpay#storing_card authorize for $1,00 and revert the authorization
# Temporarily disabled with xit
# ./spec/lib/payment/plugnpay_spec.rb:16
BlacklistedUser add some examples to (or delete) /Users/eden/Code/ruby/rails/rentwb/spec/models/blacklisted_user_spec.rb
# No reason given
# ./spec/models/blacklisted_user_spec.rb:4
OrderItem a product, option and item finds outstanding rentals
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:276
OrderItem a product, option and item stores the actual price of the purchase option
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:324
OrderItem a product, option and item stores the actual price of the purchase option when canadian
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:333
OrderItem a product, option and item sets the order type when option is a sale
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:400
OrderItem a product, option and item sets the order type when option is an extension
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:406
OrderItem a product, option and item pricing calculates price based on quantity
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:425
OrderItem a product, option and item pricing returns the total
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:429
OrderItem a product, option and item pricing with canadian converts list_price to CAD
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:439
OrderItem a product, option and item pricing with canadian converts price to CAD
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:443
OrderItem Process Fedex shipments should process only non-deliverd tracking numbers (e.g., pending or shipped_with_customer)
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:623
OrderItem Process Fedex shipments should change pending order item to shipped
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:627
OrderItem Process Fedex shipments should mark delivered_at
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:634
OrderItem Process Fedex shipments should mark shipped_at
# Temporarily disabled with xit
# ./spec/models/order_item_spec.rb:638
OrderTransaction create a transaction with OrderTransaction.free_extension! there is no test for 'free_extension'
# Temporarily disabled with xit
# ./spec/models/order_transaction_spec.rb:309
OrderTransaction create a transaction with OrderTransaction.subscription! there is no test for 'subscription'
# Temporarily disabled with xit
# ./spec/models/order_transaction_spec.rb:309
OrderTransaction create a transaction with OrderTransaction.free_buyout! there is no test for 'free_buyout'
# Temporarily disabled with xit
# ./spec/models/order_transaction_spec.rb:309
Shipment associates the rental with a shipping customer after creating the shipping customer
# there is an inconsistency here because item.shipment_id and subject.shipment_id have diferent types
# ./spec/models/shipment_spec.rb:36
ShippingMethod returns the standard shipping method
# Not yet implemented
# ./spec/models/shipping_method_spec.rb:128
Adoption::Importer New adoption (replace) populates the store's adoption
# Temporarily disabled with xit
# ./spec/models/stores/adoption/importer_spec.rb:22
Adoption::Importer New adoption (replace) imports books by isbn
# Temporarily disabled with xit
# ./spec/models/stores/adoption/importer_spec.rb:26
Adoption::Importer New adoption (replace) returns missing isbns
# Temporarily disabled with xit
# ./spec/models/stores/adoption/importer_spec.rb:31
Adoption::Importer Existing adoptions (merge) updates the adoption
# Temporarily disabled with xit
# ./spec/models/stores/adoption/importer_spec.rb:45
Adoption::Importer Existing adoptions (merge) appends the books when no delete flag is set
# Temporarily disabled with xit
# ./spec/models/stores/adoption/importer_spec.rb:49
Failures:
1) Order an Order with items has tax
Failure/Error: subject.tax.to_s.should == "$1.70"
expected: "$1.70"
got: "$200.00" (using ==)
# ./spec/models/order_spec.rb:271
2) Order an Order with items has a updated total when order is changed
Failure/Error: subject.total.to_s.should == "$33.70"
expected: "$33.70"
got: "$232.00" (using ==)
# ./spec/models/order_spec.rb:279
3) Order an Order with items on checkout complete checkout
Failure/Error: subject.bill!
TypeError:
can't convert String into Integer
# ./app/models/order.rb:710:in `[]'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:638:in `money'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:709:in `update_tax_for_order_and_items'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:432:in `tap'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./spec/models/order_spec.rb:309
4) Order an Order with items on checkout can update an order after review checkout
Failure/Error: subject.bill!
TypeError:
can't convert String into Integer
# ./app/models/order.rb:710:in `[]'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:638:in `money'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:709:in `update_tax_for_order_and_items'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:432:in `tap'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./spec/models/order_spec.rb:324
5) Order an Order with items on checkout confirm checkout when authorized and can charge create authoriration and transactions
Failure/Error: subject.confirm_checkout
TypeError:
can't convert String into Integer
# ./app/models/order.rb:710:in `[]'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:638:in `money'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:709:in `update_tax_for_order_and_items'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:432:in `tap'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:735:in `prepare_to_confirm'
# ./app/models/order.rb:305:in `confirm_checkout'
# ./app/models/authorization.rb:61:in `authorize!'
# ./app/models/order.rb:284:in `confirm_checkout'
# ./spec/models/order_spec.rb:343
6) Order an Order with items on checkout confirm checkout when authorized and can charge autorizes and charges for the correct amount
Failure/Error: subject.confirm_checkout
TypeError:
can't convert String into Integer
# ./app/models/order.rb:710:in `[]'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:638:in `money'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:709:in `update_tax_for_order_and_items'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:432:in `tap'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:735:in `prepare_to_confirm'
# ./app/models/order.rb:305:in `confirm_checkout'
# ./app/models/authorization.rb:61:in `authorize!'
# ./app/models/order.rb:284:in `confirm_checkout'
# ./spec/models/order_spec.rb:350
7) Order an Order with items on checkout confirm checkout when authorized and can charge do NOT charge if authorization_without_charge is true
Failure/Error: subject.confirm_checkout
TypeError:
can't convert String into Integer
# ./app/models/order.rb:710:in `[]'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:638:in `money'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:709:in `update_tax_for_order_and_items'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:432:in `tap'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:735:in `prepare_to_confirm'
# ./app/models/order.rb:305:in `confirm_checkout'
# ./app/models/authorization.rb:61:in `authorize!'
# ./app/models/order.rb:284:in `confirm_checkout'
# ./spec/models/order_spec.rb:357
8) Order an Order with items on checkout confirm checkout when authorized and charge fail should stay authorized
Failure/Error: expect {subject.confirm_checkout}.to raise_error AuthorizationChargeError
expected AuthorizationChargeError, got #<TypeError: can't convert String into Integer>
# ./spec/models/order_spec.rb:366
9) Order an Order with items on checkout confirm checkout when authorized and charge fail keep the transactions as authorized
Failure/Error: expect {subject.confirm_checkout}.to raise_error AuthorizationChargeError
expected AuthorizationChargeError, got #<TypeError: can't convert String into Integer>
# ./spec/models/order_spec.rb:366
10) Order an Order with items and a national discount coupon creates a discount transaction labeled global
Failure/Error: subject.bill!
TypeError:
can't convert String into Integer
# ./app/models/order.rb:710:in `[]'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:638:in `money'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:709:in `update_tax_for_order_and_items'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:432:in `tap'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./spec/models/order_spec.rb:546
11) Order an Order with items and an affiliate discount coupon creates a discount transaction labeled local
Failure/Error: subject.bill!
TypeError:
can't convert String into Integer
# ./app/models/order.rb:710:in `[]'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:638:in `money'
# ./app/models/order.rb:710:in `update_tax_for_order_and_items'
# ./app/models/order.rb:709:in `update_tax_for_order_and_items'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./app/models/order.rb:432:in `tap'
# ./app/models/order.rb:432:in `calculate_tax_and_save'
# ./spec/models/order_spec.rb:559
12) Checkouts Given I am a logged in user And I choose to buy a digital book When I am at the 'Review' page I can see the 'Payment Info' but no 'Shipping Info'
Failure/Error: page.should have_content "Digital Purchase"
expected there to be content "Digital Purchase" in "\nsomebody300\n\n/* vars ******************************************* */\n/* end vars *************************************** */\n/* mixins ******************************************* */\n/* end mixins *************************************** */\n/* Search *************************************** */\n#search-box input[type=\"text\"] {\n box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.4);\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);\n color: white; }\n\n/* block elements ************************************* */\nh2.title {\n color: #2a2a2a;\n text-shadow: 0 1px 0 white; }\n\nheader .store-name {\n color: #d0d0d0; }\nheader #header-nav-bottom {\n border-top: 2px solid #909090 !important; }\n\n.big {\n color: #aaaaaa; }\n\nlabel {\n color: #aaaaaa !important; }\n\nfooter {\n background-color: #aaaaaa;\n border-top: 1px solid #777777; }\n footer a {\n color: white !important; }\n\n/* links ********************************************* */\na {\n color: #d0d0d0; }\n\na.large {\n color: #d0d0d0; }\n\n#return-books a {\n color: #333333; }\n\n/* Shared ****************************************** */\n#ui-datepicker-div {\n border: 3px solid #c3c3c3; }\n #ui-datepicker-div .ui-widget-header {\n background-color: #c3c3c3; }\n\n#main, #main.home, article#static_pages {\n border-top: 1px solid #777777;\n background: #aaaaaa url(\"/assets/arches-affiliate.png\") no-repeat center 30px; }\n\n#main.affiliate, #main.home.affiliate {\n border-top: 1px solid #444444;\n background: #aaaaaa url(\"/assets/arches-affiliate.png\") no-repeat top center; }\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"email\"], select {\n border: 1px solid #dddddd;\n box-shadow: inset 1px 1px 3px #eaeaea; }\n\n#site-list, .site-list, .checkout, .checkout-review, .order_confirmation {\n border: 1px solid #aaaaaa !important; }\n\n.icon {\n color: #aaaaaa; }\n\n.adoption-search .icon, .adoption-search .column-a, .adoption-search .column-b {\n color: white; }\n\n.adoption-search .column-a {\n border-bottom: 1px solid white; }\n\n.faq dt:before {\n color: #aaaaaa;\n background-color: #aaaaaa; }\n\n.faq dd:before {\n color: #aaaaaa;\n background-color: #aaaaaa; }\n\nbody.accounts form h3 {\n background-color: #aaaaaa;\n color: #aaaaaa; }\n\nbody.accounts section h3, body.accounts section .site-list-header, body.orders section h3, body.orders section .site-list-header, body.carts section h3, body.carts section .site-list-header, body.product_searches section h3, body.product_searches section .site-list-header, body.adoption_searches section h3, body.adoption_searches section .site-list-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\nbody.accounts submit-button, body.orders submit-button, body.carts submit-button, body.product_searches submit-button, body.adoption_searches submit-button {\n margin-top: 0; }\n\nbody.registrations .site-list-header, body.registrations .checkout-items.review th, body.registrations .confirm-header, body.registrations h1, body.registrations .checkout_terms_items th, body.shippings .site-list-header, body.shippings .checkout-items.review th, body.shippings .confirm-header, body.shippings h1, body.shippings .checkout_terms_items th, body.billings .site-list-header, body.billings .checkout-items.review th, body.billings .confirm-header, body.billings h1, body.billings .checkout_terms_items th, body.reviews .site-list-header, body.reviews .checkout-items.review th, body.reviews .confirm-header, body.reviews h1, body.reviews .checkout_terms_items th, .legal .site-list-header, .legal .checkout-items.review th, .legal .confirm-header, .legal h1, .legal .checkout_terms_items th {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\nbody.registrations h3, body.registrations .checkout-items.receipt th, body.shippings h3, body.shippings .checkout-items.receipt th, body.billings h3, body.billings .checkout-items.receipt th, body.reviews h3, body.reviews .checkout-items.receipt th, .legal h3, .legal .checkout-items.receipt th {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n.dialog form h3.section-header {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n#account-information {\n border: 1px solid #aaaaaa !important; }\n\n.my-account-right-header, .my-account-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\n\n.account-information-section h4 {\n color: #aaaaaa !important; }\n\n#order-history {\n border: 1px solid #aaaaaa !important; }\n\n.order-single h4 {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n .order-single h4 a {\n color: #9d9d9d !important; }\n.order-single li {\n color: #aaaaaa !important;\n border-bottom: 1px solid #f6f6f6 !important; }\n\n.ui-dialog.ui-widget.ui-widget-content {\n border: 1px solid #aaaaaa !important; }\n\n.ui-dialog-titlebar {\n border-bottom: 1px solid #aaaaaa !important;\n color: #5d5d5d !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background: #c3c3c3 !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important; }\n\n.dialog li.button {\n border: 1px solid #eaeaea !important; }\n\n.order-item {\n border-bottom: 1px solid #eaeaea !important; }\n\n/* My Rentals ************************************* */\n.rentals .rental_options input[type=\"submit\"], .rentals .rental_options input[type=\"submit\"]:hover {\n border: 1px solid #a3a3a3 !important;\n color: #6f6f6f !important;\n text-shadow: 0 1px 0 white;\n background-color: #efefef;\n background-image: none;\n box-shadow: inset 0px 1px 0px white !important; }\n.rentals .rental_options input[type=\"submit\"]:hover {\n background-color: #d5d5d5 !important; }\n.rentals .rental-item {\n border-bottom: 1px solid #f6f6f6; }\n.rentals .rental-due li:first-child {\n color: #aaaaaa; }\n.rentals .rental-due li:first-child span {\n color: #2a2a2a; }\n.rentals .rental-due li:nth-child(2) {\n color: #2a2a2a; }\n.rentals .rental-due li:first-child span.overdue {\n color: #990000; }\n.rentals a.mark, .rentals a.mark:hover {\n background: #efefef url(\"/assets/mark_icon.png\") no-repeat 10px 6px !important; }\n.rentals a.mark:hover {\n background-color: #efefef !important; }\n.rentals a.marked, .rentals a.marked:hover {\n color: #5b5474 !important;\n background: #dddddd url(\"/assets/marked_icon.png\") no-repeat 10px 7px !important;\n text-shadow: 0 1px 0 #f6f6f6 !important;\n border: 1px solid #736992 !important;\n box-shadow: inset 0 1px 0 #f6f6f6 !important; }\n.rentals a.marked:hover {\n background-color: #b8b3c8 !important; }\n\n/* Order details ********************************** */\n.orders #order-shipping {\n border: 1px solid #aaaaaa;\n background-color: white !important; }\n.orders #order-summary {\n border: 1px solid #aaaaaa;\n background-color: white !important; }\n.orders .order-details-right-header, .orders .order-details-header {\n border-bottom: 1px solid #aaaaaa;\n color: #5d5d5d;\n text-shadow: 0 1px 0 #dddddd;\n background: #c3c3c3 url(\"/assets/search_form_bg.png\") repeat-x bottom left;\n box-shadow: inset 0 1px 0 #c3c3c3; }\n.orders .order-item {\n border-bottom: 1px solid #f6f6f6; }\n.orders #status li:nth-child(2) {\n color: #444444; }\n.orders #item-terms li:first-child {\n color: #aaaaaa; }\n.orders #item-terms li:nth-child(2) {\n color: #2a2a2a; }\n.orders #total li span {\n background-color: white; }\n.orders #total li span:last-child {\n background-color: white;\n color: #aaaaaa; }\n.orders #total span:last-child.price {\n color: #444444; }\n.orders #transaction-list {\n background-color: white !important;\n border-color: #aaaaaa !important; }\n.orders #transaction-list tr:first-child {\n background-color: white; }\n.orders #transaction-list tr:first-child th {\n color: #aaaaaa;\n border-bottom: 1px solid #dddddd;\n box-shadow: inset 0 -1px 0 white; }\n.orders .even {\n background-color: white !important; }\n.orders .odd {\n background-color: white !important; }\n .orders .odd td {\n border-top: 1px solid #f6f6f6;\n border-bottom: 1px solid #f6f6f6; }\n\n/* Product details ********************************* */\n.books .product-display li span {\n color: #aaaaaa !important;\n text-shadow: 0 1px 0 white; }\n.books .product-display #description h4 {\n color: #aaaaaa !important; }\n.books .product-pricing {\n border: 1px solid #aaaaaa !important;\n background-color: white; }\n .books .product-pricing .cart_item {\n background-color: white; }\n.books .product-pricing-right-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\n.books #item-submit {\n background-color: #efefef;\n background-image: none; }\n.books .rental_period label {\n color: #aaaaaa !important; }\n .books .rental_period label .picker input {\n border: 1px solid #cccccc;\n color: #777777 !important; }\n.books span.select, .books .rental_period span.to {\n color: #777777 !important; }\n.books p.list-price {\n color: #aaaaaa !important; }\n\n/* Checkout *********************************** */\nbody.carts .cart-checkout {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\nbody.carts span.to {\n color: #aaaaaa !important; }\nbody.carts .cart-item .cart-item-options .cart-details .purchase_option, body.carts .cart-item .cart-item-options .cart-details .cart-quantity {\n color: #aaaaaa !important; }\n\n.shipping-info-checkout-review, .order_confirmation th {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n/* Homepage ********************************* */\n.store .home-graphic {\n border: 1px solid #777777;\n color: #777777 !important; }\n.store .home-search-form #search-box input[type=\"text\"]::-webkit-input-placeholder {\n color: #dddddd; }\n.store .home-search-form #search-box input[type=\"text\"]:-moz-placeholder {\n color: #dddddd; }\n.store ul#features li {\n background-color: #909090 !important;\n border: 1px solid #777777;\n -webkit-box-shadow: inset 1px 1px 0 #aaaaaa !important;\n -moz-box-shadow: inset 1px 1px 0 #aaaaaa !important;\n border-right-color: #777777;\n color: white !important; }\n.store h3#satisfaction span, .store h3#shipping span {\n color: #aaaaaa; }\n.store #location-slider li div.location h4 {\n color: #aaaaaa; }\n.store .social-home h3 {\n border-bottom: 1px solid #aaaaaa;\n color: #5d5d5d;\n text-shadow: 0 1px 0 #dddddd;\n background: #c3c3c3;\n box-shadow: inset 0 1px 0 #c3c3c3; }\n.store .about-us, .store .our-store {\n border: 1px solid #aaaaaa;\n background-color: white; }\n.store .store .adoption-search .or-find-by {\n color: #777777 !important; }\n\n/* user#sign_up ********************************* */\n#sign-up-form .terms {\n border-top: 1px solid #aaaaaa; }\n\n\n//<![CDATA[\nvar shipping_address = null\n//]]>\n\n\n\t\n\t Email: \n\t \tPassword: \n\t Forgot Password?\n\t\n\n\n\n\n\nHello, name_1181    Logout\n\n\n\n\n\nShopping Cart (1)\n\n\n\nHome\n\n\nMy Account\n\nMy Rentals\n\n\n\n\nsomebody300\n\n\n\n\n\n\n\n\n\nThe credit card information is incorrect\n\n\n\n \nWarning: Due to the high volume of orders during the holiday season, you may experience delays in your shipping.\n\n\n\n \n\n Agreement Terms\n\n\n\t\t\t\n\t\t\t Billing Info\n\t\t\t\n\n\t\t\t\n\t\t\t Order Review\n\t\t\t\n\t\tBilling Information\n\n \n \n Credit Card\n \n \n Use an existing credit card:\n Joe User / Visa / xxxxxxxxxxxx1111\n \n Add a new card:\n \n \n \n \n\n \n \n\n \n First Name\n \n \n Last Name\n \n \n Card type\n MastercardDiscoverVisaAmerican Express\n \n Card Number\n \n \n Security Code\n \n \n Expiration Date\n 01020304050607080910111220122013201420152016201720182019202020212022\n \n Save this card as default\n \n \n \n \n \n \n Credit Card Billing Address\n \n NOTE: Billing address must match the address on file with your credit card company.\n \n \n Same as shipping address\n \n \n \n \n\n\n \n First Name\n \n \n Last Name\n \n \n Address 1\n (Use for actual street address or post office box.)\n\n \n \n Address 2\n (Use for Apartment, Building, Unit, Floor, Suite, etc)\n \n \n Country\n AfghanistanAlbaniaAlgeriaAmerican SamoaAndorraAngolaAnguillaAntarcticaAntigua And BarbudaArgentinaArmeniaArubaAustraliaAustriaAzerbaijanBahamasBahrainBangladeshBarbadosBelarusBelgiumBelizeBeninBermudaBhutanBoliviaBosnia And HerzegovinaBotswanaBouvet IslandBrazilBritish Indian Ocean TerritoryBruneiBulgariaBurkina FasoBurundiCambodiaCameroonCanadaCape VerdeCayman IslandsCentral African RepublicChadChileChinaChristmas IslandCocos (Keeling) IslandsColumbiaComorosCongoCook IslandsCosta RicaCote D'Ivorie (Ivory Coast)Croatia (Hrvatska)CubaCyprusCzech RepublicDemocratic Republic Of Congo (Zaire)DenmarkDjiboutiDominicaDominican RepublicEast TimorEcuadorEgyptEl SalvadorEquatorial GuineaEritreaEstoniaEthiopiaFalkland Islands (Malvinas)Faroe IslandsFijiFinlandFranceFrance, MetropolitanFrench GuineaFrench PolynesiaFrench Southern TerritoriesGabonGambiaGeorgiaGermanyGhanaGibraltarGreeceGreenlandGrenadaGuadeloupeGuamGuatemalaGuineaGuinea-BissauGuyanaHaitiHeard And McDonald IslandsHondurasHong KongHungaryIcelandIndiaIndonesiaIranIraqIrelandIsraelItalyJamaicaJapanJordanKazakhstanKenyaKiribatiKuwaitKyrgyzstanLaosLatviaLebanonLesothoLiberiaLibyaLiechtensteinLithuaniaLuxembourgMacauMacedoniaMadagascarMalawiMalaysiaMaldivesMaliMaltaMarshall IslandsMartiniqueMauritaniaMauritiusMayotteMexicoMicronesiaMoldovaMonacoMongoliaMontserratMoroccoMozambiqueMyanmar (Burma)NamibiaNauruNepalNetherlandsNetherlands AntillesNew CaledoniaNew ZealandNicaraguaNigerNigeriaNiueNorfolk IslandNorth KoreaNorthern Mariana IslandsNorwayOmanPakistanPalauPanamaPapua New GuineaParaguayPeruPhilippinesPitcairnPolandPortugalPuerto RicoQatarReunionRomaniaRussiaRwandaSaint HelenaSaint Kitts And NevisSaint LuciaSaint Pierre And MiquelonSaint Vincent And The GrenadinesSan MarinoSao Tome And PrincipeSaudi ArabiaSenegalSeychellesSierra LeoneSingaporeSlovak RepublicSloveniaSolomon IslandsSomaliaSouth AfricaSouth Georgia And South Sandwich IslandsSouth KoreaSpainSri LankaSudanSurinameSvalbard And Jan MayenSwazilandSwedenSwitzerlandSyriaTaiwanTajikistanTanzaniaThailandTogoTokelauTongaTrinidad And TobagoTunisiaTurkeyTurkmenistanTurks And Caicos IslandsTuvaluUgandaUkraineUnited Arab EmiratesUnited KingdomUnited StatesUnited States Minor Outlying IslandsUruguayUzbekistanVanuatuVatican City (Holy See)VenezuelaVietnamVirgin Islands (British)Virgin Islands (US)Wallis And Futuna IslandsWestern SaharaWestern SamoaYemenYugoslaviaZambiaZimbabwe\n \n City\n \n \n State or Province\n AlabamaAlaskaArizonaArkansasCaliforniaColoradoConnecticutDelawareDistrict Of ColumbiaFloridaGeorgiaHawaiiIdahoIllinoisIndianaIowaKansasKentuckyLouisianaMaineMarylandMassachusettsMichiganMinnesotaMississippiMissouriMontanaNebraskaNevadaNew HampshireNew JerseyNew MexicoNew YorkNorth CarolinaNorth DakotaOhioOklahomaOregonPennsylvaniaRhode IslandSouth CarolinaSouth DakotaTennesseeTexasUtahVermontVirginiaWashingtonWest VirginiaWisconsinWyoming\n \n Zip Code\n \n \n Phone\n \n \n Use address as default\n \n \n\n\n \n \n\n\n\n\nTerms of Use\nPrivacy Policy\nContact Us\nFAQ\n\nCopyright\n2012\nFollett. All Right Reserved.\n\n\n //<![CDATA[\n var _gaq = _gaq || [];\n _gaq.push(['_setAccount', 'UA-24220693-1']);\n _gaq.push(['_setDomainName', '.rentsbooks.com']);\n _gaq.push(['_trackPageview']);\n \n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n //]]>\n"
# ./spec/requests/checkouts_spec.rb:63
13) Checkouts Given I am a logged in user And I choose to buy a digital book When I am at the 'Review' page And I place the order I can see the Download URL and the Activation PIN
Failure/Error: click_on "Place your order"
Capybara::ElementNotFound:
no link or button 'Place your order' found
# (eval):2:in `send'
# (eval):2:in `click_on'
# ./spec/requests/checkouts_spec.rb:78
14) Checkouts Given I am a logged in user And I choose to rent a book When I am at the 'Billing' page And I want to add a new credit card I can create a new credit card If it is valid
Failure/Error: page.should have_content "Shipping/Billing Information"
expected there to be content "Shipping/Billing Information" in "\nsomebody314\n\n/* vars ******************************************* */\n/* end vars *************************************** */\n/* mixins ******************************************* */\n/* end mixins *************************************** */\n/* Search *************************************** */\n#search-box input[type=\"text\"] {\n box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.4);\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);\n color: white; }\n\n/* block elements ************************************* */\nh2.title {\n color: #2a2a2a;\n text-shadow: 0 1px 0 white; }\n\nheader .store-name {\n color: #d0d0d0; }\nheader #header-nav-bottom {\n border-top: 2px solid #909090 !important; }\n\n.big {\n color: #aaaaaa; }\n\nlabel {\n color: #aaaaaa !important; }\n\nfooter {\n background-color: #aaaaaa;\n border-top: 1px solid #777777; }\n footer a {\n color: white !important; }\n\n/* links ********************************************* */\na {\n color: #d0d0d0; }\n\na.large {\n color: #d0d0d0; }\n\n#return-books a {\n color: #333333; }\n\n/* Shared ****************************************** */\n#ui-datepicker-div {\n border: 3px solid #c3c3c3; }\n #ui-datepicker-div .ui-widget-header {\n background-color: #c3c3c3; }\n\n#main, #main.home, article#static_pages {\n border-top: 1px solid #777777;\n background: #aaaaaa url(\"/assets/arches-affiliate.png\") no-repeat center 30px; }\n\n#main.affiliate, #main.home.affiliate {\n border-top: 1px solid #444444;\n background: #aaaaaa url(\"/assets/arches-affiliate.png\") no-repeat top center; }\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"email\"], select {\n border: 1px solid #dddddd;\n box-shadow: inset 1px 1px 3px #eaeaea; }\n\n#site-list, .site-list, .checkout, .checkout-review, .order_confirmation {\n border: 1px solid #aaaaaa !important; }\n\n.icon {\n color: #aaaaaa; }\n\n.adoption-search .icon, .adoption-search .column-a, .adoption-search .column-b {\n color: white; }\n\n.adoption-search .column-a {\n border-bottom: 1px solid white; }\n\n.faq dt:before {\n color: #aaaaaa;\n background-color: #aaaaaa; }\n\n.faq dd:before {\n color: #aaaaaa;\n background-color: #aaaaaa; }\n\nbody.accounts form h3 {\n background-color: #aaaaaa;\n color: #aaaaaa; }\n\nbody.accounts section h3, body.accounts section .site-list-header, body.orders section h3, body.orders section .site-list-header, body.carts section h3, body.carts section .site-list-header, body.product_searches section h3, body.product_searches section .site-list-header, body.adoption_searches section h3, body.adoption_searches section .site-list-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\nbody.accounts submit-button, body.orders submit-button, body.carts submit-button, body.product_searches submit-button, body.adoption_searches submit-button {\n margin-top: 0; }\n\nbody.registrations .site-list-header, body.registrations .checkout-items.review th, body.registrations .confirm-header, body.registrations h1, body.registrations .checkout_terms_items th, body.shippings .site-list-header, body.shippings .checkout-items.review th, body.shippings .confirm-header, body.shippings h1, body.shippings .checkout_terms_items th, body.billings .site-list-header, body.billings .checkout-items.review th, body.billings .confirm-header, body.billings h1, body.billings .checkout_terms_items th, body.reviews .site-list-header, body.reviews .checkout-items.review th, body.reviews .confirm-header, body.reviews h1, body.reviews .checkout_terms_items th, .legal .site-list-header, .legal .checkout-items.review th, .legal .confirm-header, .legal h1, .legal .checkout_terms_items th {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\nbody.registrations h3, body.registrations .checkout-items.receipt th, body.shippings h3, body.shippings .checkout-items.receipt th, body.billings h3, body.billings .checkout-items.receipt th, body.reviews h3, body.reviews .checkout-items.receipt th, .legal h3, .legal .checkout-items.receipt th {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n.dialog form h3.section-header {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n#account-information {\n border: 1px solid #aaaaaa !important; }\n\n.my-account-right-header, .my-account-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\n\n.account-information-section h4 {\n color: #aaaaaa !important; }\n\n#order-history {\n border: 1px solid #aaaaaa !important; }\n\n.order-single h4 {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n .order-single h4 a {\n color: #9d9d9d !important; }\n.order-single li {\n color: #aaaaaa !important;\n border-bottom: 1px solid #f6f6f6 !important; }\n\n.ui-dialog.ui-widget.ui-widget-content {\n border: 1px solid #aaaaaa !important; }\n\n.ui-dialog-titlebar {\n border-bottom: 1px solid #aaaaaa !important;\n color: #5d5d5d !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background: #c3c3c3 !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important; }\n\n.dialog li.button {\n border: 1px solid #eaeaea !important; }\n\n.order-item {\n border-bottom: 1px solid #eaeaea !important; }\n\n/* My Rentals ************************************* */\n.rentals .rental_options input[type=\"submit\"], .rentals .rental_options input[type=\"submit\"]:hover {\n border: 1px solid #a3a3a3 !important;\n color: #6f6f6f !important;\n text-shadow: 0 1px 0 white;\n background-color: #efefef;\n background-image: none;\n box-shadow: inset 0px 1px 0px white !important; }\n.rentals .rental_options input[type=\"submit\"]:hover {\n background-color: #d5d5d5 !important; }\n.rentals .rental-item {\n border-bottom: 1px solid #f6f6f6; }\n.rentals .rental-due li:first-child {\n color: #aaaaaa; }\n.rentals .rental-due li:first-child span {\n color: #2a2a2a; }\n.rentals .rental-due li:nth-child(2) {\n color: #2a2a2a; }\n.rentals .rental-due li:first-child span.overdue {\n color: #990000; }\n.rentals a.mark, .rentals a.mark:hover {\n background: #efefef url(\"/assets/mark_icon.png\") no-repeat 10px 6px !important; }\n.rentals a.mark:hover {\n background-color: #efefef !important; }\n.rentals a.marked, .rentals a.marked:hover {\n color: #5b5474 !important;\n background: #dddddd url(\"/assets/marked_icon.png\") no-repeat 10px 7px !important;\n text-shadow: 0 1px 0 #f6f6f6 !important;\n border: 1px solid #736992 !important;\n box-shadow: inset 0 1px 0 #f6f6f6 !important; }\n.rentals a.marked:hover {\n background-color: #b8b3c8 !important; }\n\n/* Order details ********************************** */\n.orders #order-shipping {\n border: 1px solid #aaaaaa;\n background-color: white !important; }\n.orders #order-summary {\n border: 1px solid #aaaaaa;\n background-color: white !important; }\n.orders .order-details-right-header, .orders .order-details-header {\n border-bottom: 1px solid #aaaaaa;\n color: #5d5d5d;\n text-shadow: 0 1px 0 #dddddd;\n background: #c3c3c3 url(\"/assets/search_form_bg.png\") repeat-x bottom left;\n box-shadow: inset 0 1px 0 #c3c3c3; }\n.orders .order-item {\n border-bottom: 1px solid #f6f6f6; }\n.orders #status li:nth-child(2) {\n color: #444444; }\n.orders #item-terms li:first-child {\n color: #aaaaaa; }\n.orders #item-terms li:nth-child(2) {\n color: #2a2a2a; }\n.orders #total li span {\n background-color: white; }\n.orders #total li span:last-child {\n background-color: white;\n color: #aaaaaa; }\n.orders #total span:last-child.price {\n color: #444444; }\n.orders #transaction-list {\n background-color: white !important;\n border-color: #aaaaaa !important; }\n.orders #transaction-list tr:first-child {\n background-color: white; }\n.orders #transaction-list tr:first-child th {\n color: #aaaaaa;\n border-bottom: 1px solid #dddddd;\n box-shadow: inset 0 -1px 0 white; }\n.orders .even {\n background-color: white !important; }\n.orders .odd {\n background-color: white !important; }\n .orders .odd td {\n border-top: 1px solid #f6f6f6;\n border-bottom: 1px solid #f6f6f6; }\n\n/* Product details ********************************* */\n.books .product-display li span {\n color: #aaaaaa !important;\n text-shadow: 0 1px 0 white; }\n.books .product-display #description h4 {\n color: #aaaaaa !important; }\n.books .product-pricing {\n border: 1px solid #aaaaaa !important;\n background-color: white; }\n .books .product-pricing .cart_item {\n background-color: white; }\n.books .product-pricing-right-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\n.books #item-submit {\n background-color: #efefef;\n background-image: none; }\n.books .rental_period label {\n color: #aaaaaa !important; }\n .books .rental_period label .picker input {\n border: 1px solid #cccccc;\n color: #777777 !important; }\n.books span.select, .books .rental_period span.to {\n color: #777777 !important; }\n.books p.list-price {\n color: #aaaaaa !important; }\n\n/* Checkout *********************************** */\nbody.carts .cart-checkout {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\nbody.carts span.to {\n color: #aaaaaa !important; }\nbody.carts .cart-item .cart-item-options .cart-details .purchase_option, body.carts .cart-item .cart-item-options .cart-details .cart-quantity {\n color: #aaaaaa !important; }\n\n.shipping-info-checkout-review, .order_confirmation th {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n/* Homepage ********************************* */\n.store .home-graphic {\n border: 1px solid #777777;\n color: #777777 !important; }\n.store .home-search-form #search-box input[type=\"text\"]::-webkit-input-placeholder {\n color: #dddddd; }\n.store .home-search-form #search-box input[type=\"text\"]:-moz-placeholder {\n color: #dddddd; }\n.store ul#features li {\n background-color: #909090 !important;\n border: 1px solid #777777;\n -webkit-box-shadow: inset 1px 1px 0 #aaaaaa !important;\n -moz-box-shadow: inset 1px 1px 0 #aaaaaa !important;\n border-right-color: #777777;\n color: white !important; }\n.store h3#satisfaction span, .store h3#shipping span {\n color: #aaaaaa; }\n.store #location-slider li div.location h4 {\n color: #aaaaaa; }\n.store .social-home h3 {\n border-bottom: 1px solid #aaaaaa;\n color: #5d5d5d;\n text-shadow: 0 1px 0 #dddddd;\n background: #c3c3c3;\n box-shadow: inset 0 1px 0 #c3c3c3; }\n.store .about-us, .store .our-store {\n border: 1px solid #aaaaaa;\n background-color: white; }\n.store .store .adoption-search .or-find-by {\n color: #777777 !important; }\n\n/* user#sign_up ********************************* */\n#sign-up-form .terms {\n border-top: 1px solid #aaaaaa; }\n\n\n//<![CDATA[\nvar shipping_address = {\"address\":{\"city\":\"San Francisco\",\"created_at\":\"2012-03-30T12:34:22-05:00\",\"cell\":null,\"country\":\"US\",\"default\":null,\"updated_at\":\"2012-03-30T12:34:24-05:00\",\"zipcode\":\"94105\",\"addressable_type\":\"Order\",\"addressable_id\":1,\"id\":3,\"address_1\":\"301 Main street\",\"foreign_state\":null,\"address_2\":\"unit 11b\",\"fax\":null,\"last_name\":\"Wobo\",\"phone\":\"555-555-2434\",\"first_name\":\"Luca\",\"state\":\"CA\"}}\n//]]>\n\n\n\t\n\t Email: \n\t \tPassword: \n\t Forgot Password?\n\t\n\n\n\n\n\nHello, name_1199    Logout\n\n\n\n\n\nShopping Cart (1)\n\n\n\nHome\n\n\nMy Account\n\nMy Rentals\n\n\n\n\nsomebody314\n\n\n\n\n\n\n\n\n\nThe credit card information is incorrect\n\n\n\n \nWarning: Due to the high volume of orders during the holiday season, you may experience delays in your shipping.\n\n\n\n \n\n Agreement Terms\n\n \n Shipping Info\n \n\n\t\t\t\n\t\t\t Billing Info\n\t\t\t\n\n\t\t\t\n\t\t\t Order Review\n\t\t\t\n\t\tBilling Information\n\n \n \n Credit Card\n \n \n Use an existing credit card:\n Joe User / Visa / xxxxxxxxxxxx1111\n \n Add a new card:\n \n \n \n \n\n \n \n\n \n First Name\n \n \n Last Name\n \n \n Card type\n MastercardDiscoverVisaAmerican Express\n \n Card Number\n \n \n Security Code\n \n \n Expiration Date\n 01020304050607080910111220122013201420152016201720182019202020212022\n \n Save this card as default\n \n \n \n \n \n \n Credit Card Billing Address\n \n NOTE: Billing address must match the address on file with your credit card company.\n \n \n Same as shipping address\n \n \n \n \n\n\n \n First Name\n \n \n Last Name\n \n \n Address 1\n (Use for actual street address or post office box.)\n\n \n \n Address 2\n (Use for Apartment, Building, Unit, Floor, Suite, etc)\n \n \n Country\n AfghanistanAlbaniaAlgeriaAmerican SamoaAndorraAngolaAnguillaAntarcticaAntigua And BarbudaArgentinaArmeniaArubaAustraliaAustriaAzerbaijanBahamasBahrainBangladeshBarbadosBelarusBelgiumBelizeBeninBermudaBhutanBoliviaBosnia And HerzegovinaBotswanaBouvet IslandBrazilBritish Indian Ocean TerritoryBruneiBulgariaBurkina FasoBurundiCambodiaCameroonCanadaCape VerdeCayman IslandsCentral African RepublicChadChileChinaChristmas IslandCocos (Keeling) IslandsColumbiaComorosCongoCook IslandsCosta RicaCote D'Ivorie (Ivory Coast)Croatia (Hrvatska)CubaCyprusCzech RepublicDemocratic Republic Of Congo (Zaire)DenmarkDjiboutiDominicaDominican RepublicEast TimorEcuadorEgyptEl SalvadorEquatorial GuineaEritreaEstoniaEthiopiaFalkland Islands (Malvinas)Faroe IslandsFijiFinlandFranceFrance, MetropolitanFrench GuineaFrench PolynesiaFrench Southern TerritoriesGabonGambiaGeorgiaGermanyGhanaGibraltarGreeceGreenlandGrenadaGuadeloupeGuamGuatemalaGuineaGuinea-BissauGuyanaHaitiHeard And McDonald IslandsHondurasHong KongHungaryIcelandIndiaIndonesiaIranIraqIrelandIsraelItalyJamaicaJapanJordanKazakhstanKenyaKiribatiKuwaitKyrgyzstanLaosLatviaLebanonLesothoLiberiaLibyaLiechtensteinLithuaniaLuxembourgMacauMacedoniaMadagascarMalawiMalaysiaMaldivesMaliMaltaMarshall IslandsMartiniqueMauritaniaMauritiusMayotteMexicoMicronesiaMoldovaMonacoMongoliaMontserratMoroccoMozambiqueMyanmar (Burma)NamibiaNauruNepalNetherlandsNetherlands AntillesNew CaledoniaNew ZealandNicaraguaNigerNigeriaNiueNorfolk IslandNorth KoreaNorthern Mariana IslandsNorwayOmanPakistanPalauPanamaPapua New GuineaParaguayPeruPhilippinesPitcairnPolandPortugalPuerto RicoQatarReunionRomaniaRussiaRwandaSaint HelenaSaint Kitts And NevisSaint LuciaSaint Pierre And MiquelonSaint Vincent And The GrenadinesSan MarinoSao Tome And PrincipeSaudi ArabiaSenegalSeychellesSierra LeoneSingaporeSlovak RepublicSloveniaSolomon IslandsSomaliaSouth AfricaSouth Georgia And South Sandwich IslandsSouth KoreaSpainSri LankaSudanSurinameSvalbard And Jan MayenSwazilandSwedenSwitzerlandSyriaTaiwanTajikistanTanzaniaThailandTogoTokelauTongaTrinidad And TobagoTunisiaTurkeyTurkmenistanTurks And Caicos IslandsTuvaluUgandaUkraineUnited Arab EmiratesUnited KingdomUnited StatesUnited States Minor Outlying IslandsUruguayUzbekistanVanuatuVatican City (Holy See)VenezuelaVietnamVirgin Islands (British)Virgin Islands (US)Wallis And Futuna IslandsWestern SaharaWestern SamoaYemenYugoslaviaZambiaZimbabwe\n \n City\n \n \n State or Province\n AlabamaAlaskaArizonaArkansasCaliforniaColoradoConnecticutDelawareDistrict Of ColumbiaFloridaGeorgiaHawaiiIdahoIllinoisIndianaIowaKansasKentuckyLouisianaMaineMarylandMassachusettsMichiganMinnesotaMississippiMissouriMontanaNebraskaNevadaNew HampshireNew JerseyNew MexicoNew YorkNorth CarolinaNorth DakotaOhioOklahomaOregonPennsylvaniaRhode IslandSouth CarolinaSouth DakotaTennesseeTexasUtahVermontVirginiaWashingtonWest VirginiaWisconsinWyoming\n \n Zip Code\n \n \n Phone\n \n \n Use address as default\n \n \n\n\n \n \n\n\n\n\nTerms of Use\nPrivacy Policy\nContact Us\nFAQ\n\nCopyright\n2012\nFollett. All Right Reserved.\n\n\n //<![CDATA[\n var _gaq = _gaq || [];\n _gaq.push(['_setAccount', 'UA-24220693-1']);\n _gaq.push(['_setDomainName', '.rentsbooks.com']);\n _gaq.push(['_trackPageview']);\n \n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n //]]>\n"
# ./spec/requests/checkouts_spec.rb:246
15) Checkouts Given I am a logged in user And I choose to rent a book When I am at the 'Billing' page And I want to use an existent credit card I can select an existent credit card and continue with the checkout
Failure/Error: page.should have_content "Shipping/Billing Information"
expected there to be content "Shipping/Billing Information" in "\nsomebody318\n\n/* vars ******************************************* */\n/* end vars *************************************** */\n/* mixins ******************************************* */\n/* end mixins *************************************** */\n/* Search *************************************** */\n#search-box input[type=\"text\"] {\n box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.4);\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);\n color: white; }\n\n/* block elements ************************************* */\nh2.title {\n color: #2a2a2a;\n text-shadow: 0 1px 0 white; }\n\nheader .store-name {\n color: #d0d0d0; }\nheader #header-nav-bottom {\n border-top: 2px solid #909090 !important; }\n\n.big {\n color: #aaaaaa; }\n\nlabel {\n color: #aaaaaa !important; }\n\nfooter {\n background-color: #aaaaaa;\n border-top: 1px solid #777777; }\n footer a {\n color: white !important; }\n\n/* links ********************************************* */\na {\n color: #d0d0d0; }\n\na.large {\n color: #d0d0d0; }\n\n#return-books a {\n color: #333333; }\n\n/* Shared ****************************************** */\n#ui-datepicker-div {\n border: 3px solid #c3c3c3; }\n #ui-datepicker-div .ui-widget-header {\n background-color: #c3c3c3; }\n\n#main, #main.home, article#static_pages {\n border-top: 1px solid #777777;\n background: #aaaaaa url(\"/assets/arches-affiliate.png\") no-repeat center 30px; }\n\n#main.affiliate, #main.home.affiliate {\n border-top: 1px solid #444444;\n background: #aaaaaa url(\"/assets/arches-affiliate.png\") no-repeat top center; }\n\ninput[type=\"text\"], input[type=\"password\"], input[type=\"email\"], select {\n border: 1px solid #dddddd;\n box-shadow: inset 1px 1px 3px #eaeaea; }\n\n#site-list, .site-list, .checkout, .checkout-review, .order_confirmation {\n border: 1px solid #aaaaaa !important; }\n\n.icon {\n color: #aaaaaa; }\n\n.adoption-search .icon, .adoption-search .column-a, .adoption-search .column-b {\n color: white; }\n\n.adoption-search .column-a {\n border-bottom: 1px solid white; }\n\n.faq dt:before {\n color: #aaaaaa;\n background-color: #aaaaaa; }\n\n.faq dd:before {\n color: #aaaaaa;\n background-color: #aaaaaa; }\n\nbody.accounts form h3 {\n background-color: #aaaaaa;\n color: #aaaaaa; }\n\nbody.accounts section h3, body.accounts section .site-list-header, body.orders section h3, body.orders section .site-list-header, body.carts section h3, body.carts section .site-list-header, body.product_searches section h3, body.product_searches section .site-list-header, body.adoption_searches section h3, body.adoption_searches section .site-list-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\nbody.accounts submit-button, body.orders submit-button, body.carts submit-button, body.product_searches submit-button, body.adoption_searches submit-button {\n margin-top: 0; }\n\nbody.registrations .site-list-header, body.registrations .checkout-items.review th, body.registrations .confirm-header, body.registrations h1, body.registrations .checkout_terms_items th, body.shippings .site-list-header, body.shippings .checkout-items.review th, body.shippings .confirm-header, body.shippings h1, body.shippings .checkout_terms_items th, body.billings .site-list-header, body.billings .checkout-items.review th, body.billings .confirm-header, body.billings h1, body.billings .checkout_terms_items th, body.reviews .site-list-header, body.reviews .checkout-items.review th, body.reviews .confirm-header, body.reviews h1, body.reviews .checkout_terms_items th, .legal .site-list-header, .legal .checkout-items.review th, .legal .confirm-header, .legal h1, .legal .checkout_terms_items th {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\nbody.registrations h3, body.registrations .checkout-items.receipt th, body.shippings h3, body.shippings .checkout-items.receipt th, body.billings h3, body.billings .checkout-items.receipt th, body.reviews h3, body.reviews .checkout-items.receipt th, .legal h3, .legal .checkout-items.receipt th {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n.dialog form h3.section-header {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n#account-information {\n border: 1px solid #aaaaaa !important; }\n\n.my-account-right-header, .my-account-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\n\n.account-information-section h4 {\n color: #aaaaaa !important; }\n\n#order-history {\n border: 1px solid #aaaaaa !important; }\n\n.order-single h4 {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n .order-single h4 a {\n color: #9d9d9d !important; }\n.order-single li {\n color: #aaaaaa !important;\n border-bottom: 1px solid #f6f6f6 !important; }\n\n.ui-dialog.ui-widget.ui-widget-content {\n border: 1px solid #aaaaaa !important; }\n\n.ui-dialog-titlebar {\n border-bottom: 1px solid #aaaaaa !important;\n color: #5d5d5d !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background: #c3c3c3 !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important; }\n\n.dialog li.button {\n border: 1px solid #eaeaea !important; }\n\n.order-item {\n border-bottom: 1px solid #eaeaea !important; }\n\n/* My Rentals ************************************* */\n.rentals .rental_options input[type=\"submit\"], .rentals .rental_options input[type=\"submit\"]:hover {\n border: 1px solid #a3a3a3 !important;\n color: #6f6f6f !important;\n text-shadow: 0 1px 0 white;\n background-color: #efefef;\n background-image: none;\n box-shadow: inset 0px 1px 0px white !important; }\n.rentals .rental_options input[type=\"submit\"]:hover {\n background-color: #d5d5d5 !important; }\n.rentals .rental-item {\n border-bottom: 1px solid #f6f6f6; }\n.rentals .rental-due li:first-child {\n color: #aaaaaa; }\n.rentals .rental-due li:first-child span {\n color: #2a2a2a; }\n.rentals .rental-due li:nth-child(2) {\n color: #2a2a2a; }\n.rentals .rental-due li:first-child span.overdue {\n color: #990000; }\n.rentals a.mark, .rentals a.mark:hover {\n background: #efefef url(\"/assets/mark_icon.png\") no-repeat 10px 6px !important; }\n.rentals a.mark:hover {\n background-color: #efefef !important; }\n.rentals a.marked, .rentals a.marked:hover {\n color: #5b5474 !important;\n background: #dddddd url(\"/assets/marked_icon.png\") no-repeat 10px 7px !important;\n text-shadow: 0 1px 0 #f6f6f6 !important;\n border: 1px solid #736992 !important;\n box-shadow: inset 0 1px 0 #f6f6f6 !important; }\n.rentals a.marked:hover {\n background-color: #b8b3c8 !important; }\n\n/* Order details ********************************** */\n.orders #order-shipping {\n border: 1px solid #aaaaaa;\n background-color: white !important; }\n.orders #order-summary {\n border: 1px solid #aaaaaa;\n background-color: white !important; }\n.orders .order-details-right-header, .orders .order-details-header {\n border-bottom: 1px solid #aaaaaa;\n color: #5d5d5d;\n text-shadow: 0 1px 0 #dddddd;\n background: #c3c3c3 url(\"/assets/search_form_bg.png\") repeat-x bottom left;\n box-shadow: inset 0 1px 0 #c3c3c3; }\n.orders .order-item {\n border-bottom: 1px solid #f6f6f6; }\n.orders #status li:nth-child(2) {\n color: #444444; }\n.orders #item-terms li:first-child {\n color: #aaaaaa; }\n.orders #item-terms li:nth-child(2) {\n color: #2a2a2a; }\n.orders #total li span {\n background-color: white; }\n.orders #total li span:last-child {\n background-color: white;\n color: #aaaaaa; }\n.orders #total span:last-child.price {\n color: #444444; }\n.orders #transaction-list {\n background-color: white !important;\n border-color: #aaaaaa !important; }\n.orders #transaction-list tr:first-child {\n background-color: white; }\n.orders #transaction-list tr:first-child th {\n color: #aaaaaa;\n border-bottom: 1px solid #dddddd;\n box-shadow: inset 0 -1px 0 white; }\n.orders .even {\n background-color: white !important; }\n.orders .odd {\n background-color: white !important; }\n .orders .odd td {\n border-top: 1px solid #f6f6f6;\n border-bottom: 1px solid #f6f6f6; }\n\n/* Product details ********************************* */\n.books .product-display li span {\n color: #aaaaaa !important;\n text-shadow: 0 1px 0 white; }\n.books .product-display #description h4 {\n color: #aaaaaa !important; }\n.books .product-pricing {\n border: 1px solid #aaaaaa !important;\n background-color: white; }\n .books .product-pricing .cart_item {\n background-color: white; }\n.books .product-pricing-right-header {\n border-bottom: 1px solid #aaaaaa !important;\n background-color: #aaaaaa !important;\n box-shadow: inset 0 1px 0 #c3c3c3 !important;\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important; }\n.books #item-submit {\n background-color: #efefef;\n background-image: none; }\n.books .rental_period label {\n color: #aaaaaa !important; }\n .books .rental_period label .picker input {\n border: 1px solid #cccccc;\n color: #777777 !important; }\n.books span.select, .books .rental_period span.to {\n color: #777777 !important; }\n.books p.list-price {\n color: #aaaaaa !important; }\n\n/* Checkout *********************************** */\nbody.carts .cart-checkout {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\nbody.carts span.to {\n color: #aaaaaa !important; }\nbody.carts .cart-item .cart-item-options .cart-details .purchase_option, body.carts .cart-item .cart-item-options .cart-details .cart-quantity {\n color: #aaaaaa !important; }\n\n.shipping-info-checkout-review, .order_confirmation th {\n color: #909090 !important;\n text-shadow: 0 1px 0 #dddddd !important;\n background-color: white !important;\n box-shadow: inset 0 -1px 0 white !important;\n border-bottom: 1px solid #f6f6f6 !important;\n border-top: 1px solid #f6f6f6 !important; }\n\n/* Homepage ********************************* */\n.store .home-graphic {\n border: 1px solid #777777;\n color: #777777 !important; }\n.store .home-search-form #search-box input[type=\"text\"]::-webkit-input-placeholder {\n color: #dddddd; }\n.store .home-search-form #search-box input[type=\"text\"]:-moz-placeholder {\n color: #dddddd; }\n.store ul#features li {\n background-color: #909090 !important;\n border: 1px solid #777777;\n -webkit-box-shadow: inset 1px 1px 0 #aaaaaa !important;\n -moz-box-shadow: inset 1px 1px 0 #aaaaaa !important;\n border-right-color: #777777;\n color: white !important; }\n.store h3#satisfaction span, .store h3#shipping span {\n color: #aaaaaa; }\n.store #location-slider li div.location h4 {\n color: #aaaaaa; }\n.store .social-home h3 {\n border-bottom: 1px solid #aaaaaa;\n color: #5d5d5d;\n text-shadow: 0 1px 0 #dddddd;\n background: #c3c3c3;\n box-shadow: inset 0 1px 0 #c3c3c3; }\n.store .about-us, .store .our-store {\n border: 1px solid #aaaaaa;\n background-color: white; }\n.store .store .adoption-search .or-find-by {\n color: #777777 !important; }\n\n/* user#sign_up ********************************* */\n#sign-up-form .terms {\n border-top: 1px solid #aaaaaa; }\n\n\n//<![CDATA[\nvar shipping_address = {\"address\":{\"city\":\"San Francisco\",\"created_at\":\"2012-03-30T12:34:57-05:00\",\"cell\":null,\"country\":\"US\",\"default\":null,\"updated_at\":\"2012-03-30T12:34:59-05:00\",\"zipcode\":\"94105\",\"addressable_type\":\"Order\",\"addressable_id\":1,\"id\":3,\"address_1\":\"301 Main street\",\"foreign_state\":null,\"address_2\":\"unit 11b\",\"fax\":null,\"last_name\":\"Wobo\",\"phone\":\"555-555-2450\",\"first_name\":\"Luca\",\"state\":\"CA\"}}\n//]]>\n\n\n\t\n\t Email: \n\t \tPassword: \n\t Forgot Password?\n\t\n\n\n\n\n\nHello, name_1207    Logout\n\n\n\n\n\nShopping Cart (1)\n\n\n\nHome\n\n\nMy Account\n\nMy Rentals\n\n\n\n\nsomebody318\n\n\n\n\n\n\n\n\n\nThe credit card information is incorrect\n\n\n\n \nWarning: Due to the high volume of orders during the holiday season, you may experience delays in your shipping.\n\n\n\n \n\n Agreement Terms\n\n \n Shipping Info\n \n\n\t\t\t\n\t\t\t Billing Info\n\t\t\t\n\n\t\t\t\n\t\t\t Order Review\n\t\t\t\n\t\tBilling Information\n\n \n \n Credit Card\n \n \n Use an existing credit card:\n Joe User / Visa / xxxxxxxxxxxx1111\n \n Add a new card:\n \n \n \n \n\n \n \n\n \n First Name\n \n \n Last Name\n \n \n Card type\n MastercardDiscoverVisaAmerican Express\n \n Card Number\n \n \n Security Code\n \n \n Expiration Date\n 01020304050607080910111220122013201420152016201720182019202020212022\n \n Save this card as default\n \n \n \n \n \n \n Credit Card Billing Address\n \n NOTE: Billing address must match the address on file with your credit card company.\n \n \n Same as shipping address\n \n \n \n \n\n\n \n First Name\n \n \n Last Name\n \n \n Address 1\n (Use for actual street address or post office box.)\n\n \n \n Address 2\n (Use for Apartment, Building, Unit, Floor, Suite, etc)\n \n \n Country\n AfghanistanAlbaniaAlgeriaAmerican SamoaAndorraAngolaAnguillaAntarcticaAntigua And BarbudaArgentinaArmeniaArubaAustraliaAustriaAzerbaijanBahamasBahrainBangladeshBarbadosBelarusBelgiumBelizeBeninBermudaBhutanBoliviaBosnia And HerzegovinaBotswanaBouvet IslandBrazilBritish Indian Ocean TerritoryBruneiBulgariaBurkina FasoBurundiCambodiaCameroonCanadaCape VerdeCayman IslandsCentral African RepublicChadChileChinaChristmas IslandCocos (Keeling) IslandsColumbiaComorosCongoCook IslandsCosta RicaCote D'Ivorie (Ivory Coast)Croatia (Hrvatska)CubaCyprusCzech RepublicDemocratic Republic Of Congo (Zaire)DenmarkDjiboutiDominicaDominican RepublicEast TimorEcuadorEgyptEl SalvadorEquatorial GuineaEritreaEstoniaEthiopiaFalkland Islands (Malvinas)Faroe IslandsFijiFinlandFranceFrance, MetropolitanFrench GuineaFrench PolynesiaFrench Southern TerritoriesGabonGambiaGeorgiaGermanyGhanaGibraltarGreeceGreenlandGrenadaGuadeloupeGuamGuatemalaGuineaGuinea-BissauGuyanaHaitiHeard And McDonald IslandsHondurasHong KongHungaryIcelandIndiaIndonesiaIranIraqIrelandIsraelItalyJamaicaJapanJordanKazakhstanKenyaKiribatiKuwaitKyrgyzstanLaosLatviaLebanonLesothoLiberiaLibyaLiechtensteinLithuaniaLuxembourgMacauMacedoniaMadagascarMalawiMalaysiaMaldivesMaliMaltaMarshall IslandsMartiniqueMauritaniaMauritiusMayotteMexicoMicronesiaMoldovaMonacoMongoliaMontserratMoroccoMozambiqueMyanmar (Burma)NamibiaNauruNepalNetherlandsNetherlands AntillesNew CaledoniaNew ZealandNicaraguaNigerNigeriaNiueNorfolk IslandNorth KoreaNorthern Mariana IslandsNorwayOmanPakistanPalauPanamaPapua New GuineaParaguayPeruPhilippinesPitcairnPolandPortugalPuerto RicoQatarReunionRomaniaRussiaRwandaSaint HelenaSaint Kitts And NevisSaint LuciaSaint Pierre And MiquelonSaint Vincent And The GrenadinesSan MarinoSao Tome And PrincipeSaudi ArabiaSenegalSeychellesSierra LeoneSingaporeSlovak RepublicSloveniaSolomon IslandsSomaliaSouth AfricaSouth Georgia And South Sandwich IslandsSouth KoreaSpainSri LankaSudanSurinameSvalbard And Jan MayenSwazilandSwedenSwitzerlandSyriaTaiwanTajikistanTanzaniaThailandTogoTokelauTongaTrinidad And TobagoTunisiaTurkeyTurkmenistanTurks And Caicos IslandsTuvaluUgandaUkraineUnited Arab EmiratesUnited KingdomUnited StatesUnited States Minor Outlying IslandsUruguayUzbekistanVanuatuVatican City (Holy See)VenezuelaVietnamVirgin Islands (British)Virgin Islands (US)Wallis And Futuna IslandsWestern SaharaWestern SamoaYemenYugoslaviaZambiaZimbabwe\n \n City\n \n \n State or Province\n AlabamaAlaskaArizonaArkansasCaliforniaColoradoConnecticutDelawareDistrict Of ColumbiaFloridaGeorgiaHawaiiIdahoIllinoisIndianaIowaKansasKentuckyLouisianaMaineMarylandMassachusettsMichiganMinnesotaMississippiMissouriMontanaNebraskaNevadaNew HampshireNew JerseyNew MexicoNew YorkNorth CarolinaNorth DakotaOhioOklahomaOregonPennsylvaniaRhode IslandSouth CarolinaSouth DakotaTennesseeTexasUtahVermontVirginiaWashingtonWest VirginiaWisconsinWyoming\n \n Zip Code\n \n \n Phone\n \n \n Use address as default\n \n \n\n\n \n \n\n\n\n\nTerms of Use\nPrivacy Policy\nContact Us\nFAQ\n\nCopyright\n2012\nFollett. All Right Reserved.\n\n\n //<![CDATA[\n var _gaq = _gaq || [];\n _gaq.push(['_setAccount', 'UA-24220693-1']);\n _gaq.push(['_setDomainName', '.rentsbooks.com']);\n _gaq.push(['_trackPageview']);\n \n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n //]]>\n"
# ./spec/requests/checkouts_spec.rb:285
16) Checkouts Given I am a logged in user And I choose to rent a book When I am at the 'Review' page I can pay with a valid credit card
Failure/Error: click_on "Place your order"
Capybara::ElementNotFound:
no link or button 'Place your order' found
# (eval):2:in `send'
# (eval):2:in `click_on'
# ./spec/requests/checkouts_spec.rb:305
17) Checkouts Given I am a logged in user And I choose to rent a book When I am at the 'Review' page I get an error If the authorization fails
Failure/Error: click_on "Place your order"
Capybara::ElementNotFound:
no link or button 'Place your order' found
# (eval):2:in `send'
# (eval):2:in `click_on'
# ./spec/requests/checkouts_spec.rb:317
18) Rentals extend rental extend the rental period
Failure/Error: click_link "Extend Rental"
TypeError:
can't convert String into Integer
# ./app/models/order_item.rb:1063:in `[]'
# ./app/models/order_item.rb:1063:in `calculate_item_tax'
# ./app/models/order_item.rb:573:in `calculate_buyout_or_extension'
# ./app/controllers/rentals_controller.rb:55:in `set_instance_variables'
# (eval):2:in `send'
# (eval):2:in `click_link'
# ./spec/requests/rentals_spec.rb:68
Finished in 959.63 seconds
1299 examples, 18 failures, 27 pending
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment