Sunil Pai
Sunil Pai

Reputation: 23

Rspecs with ruby file

I have a ruby file airplane.rb

with a ruby class like so -

class AirplaneSeat
 attr_accessor :seat_row, :seat_column, :type, :order, :assigned_passenger

  def initialize(seat_row, seat_column, type, order, assigned_passenger = 0)
    @seat_row = seat_row
    @seat_column = seat_column
    @type = type
    @order = order
    @assigned_passenger = assigned_passenger
  end

  def get_passenger_seating
    #some code   
  end
end # end of class

# outside the class
begin
  puts "Enter the seating matrix as 2D array"
  seat_matrix = JSON.parse gets.chomp

  puts "Enter the number of passengers"
  no_of_passengers = gets.chomp
  raise "Please enter a valid passenger count" if (no_of_passengers.empty? || no_of_passengers.to_i <=0)

  AirplaneSeat.get_passenger_seating(seat_matrix, no_of_passengers)
rescue Exception => e
  puts "Error encountered -> #{e.message}"
end

So the ruby class has a few methods and couple of lines of code to execute outside the class, which takes input from the user and then calls the class method.

How do I go about writing test cases for this? I have the rspecs gem and spec folder setup done. I don't really understand how to begin with the test cases. Any pointers greatly appreciated. Thanks!

Upvotes: 0

Views: 31

Answers (1)

Kris
Kris

Reputation: 19958

As a simple example say we have our file for a Foo class, foo.rb:

class Foo
  def call
    'bar'
  end
end

We can create a spec, foo_spec.rb:

require 'rspec'
require_relative 'foo'

RSpec.describe Foo do
  describe '#call' do
    it 'works' do
      expect(described_class.new.call).to eq 'Bar'
    end
  end
end

And then from the command line we can run the spec:

$ rspec foo_spec.rb

Upvotes: 1

Related Questions