You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
asciinema.org/spec/models/cell_spec.rb

83 lines
1.8 KiB
Ruby

require 'rails_helper'
describe Cell do
let(:cell) { described_class.new('a', brush) }
let(:brush) { double('brush') }
describe '#empty?' do
let(:cell) { described_class.new(text, brush) }
subject { cell.empty? }
context "when text is not blank" do
let(:text) { 'a' }
let(:brush) { double('brush', :default? => true) }
it { should be(false) }
end
context "when brush is not default" do
let(:text) { ' ' }
let(:brush) { double('brush', :default? => false) }
it { should be(false) }
end
context "when text is blank and brush is default" do
let(:text) { ' ' }
let(:brush) { double('brush', :default? => true) }
it { should be(true) }
end
end
describe '#==' do
let(:other) { described_class.new(text, other_brush) }
subject { cell == other }
context "when text differs" do
let(:text) { 'b' }
let(:other_brush) { double('brush', :== => true) }
it { should be(false) }
end
context "when brush differs" do
let(:text) { 'a' }
let(:other_brush) { double('brush', :== => false) }
it { should be(false) }
end
context "when text and brush are equal" do
let(:text) { 'a' }
let(:other_brush) { double('brush', :== => true) }
it { should be(true) }
end
end
describe '#[]' do
let(:cell) { described_class.new('abcdef', brush) }
subject { cell[2..4] }
it 'returns new cell with the cropped text and the same brush' do
expect(subject).to eq(Cell.new('cde', brush))
end
end
describe '#as_json' do
subject { cell.as_json }
before do
allow(brush).to receive(:as_json) { { fg: 1, bold: true } }
end
it { should eq(['a', { fg: 1, bold: true }]) }
end
end