# frozen_string_literal: true
require 'test_helper'
module Vedeu
module Cells
describe Empty do
let(:described) { Vedeu::Cells::Empty }
let(:instance) { described.new(attributes) }
let(:attributes) {
{
colour: colour,
name: _name,
position: position,
style: style,
value: _value,
}
}
let(:colour) { {} }
let(:_name) { nil }
let(:position) { Vedeu::Geometries::Position.new(1, 1) }
let(:style) { '' }
let(:_value) { '' }
describe '#as_html' do
subject { instance.as_html }
it { subject.must_equal(' ') }
end
describe '#name' do
it { instance.must_respond_to(:name) }
end
describe '#value' do
it { instance.must_respond_to(:value) }
end
describe '#eql?' do
let(:other) { instance }
subject { instance.eql?(other) }
it { subject.must_equal(true) }
context 'when different to other' do
let(:other) {
described.new(position: Vedeu::Geometries::Position.new(1, 2))
}
it { subject.must_equal(false) }
end
end
describe '#==' do
it { instance.must_respond_to(:==) }
end
describe '#text' do
subject { instance.text }
it { subject.must_equal(' ') }
end
describe '#to_h' do
let(:colour) { Vedeu::Colours::Colour.new(background: '#000000') }
let(:expected) {
{
name: '',
style: '',
type: :empty,
value: '',
colour: {
background: '#000000',
foreground: '',
},
position: {
y: 1,
x: 1,
},
}
}
subject { instance.to_h }
it { subject.must_be_instance_of(Hash) }
it { subject.must_equal(expected) }
end
describe '#to_hash' do
it { instance.must_respond_to(:to_hash) }
end
describe '#to_html' do
subject { instance.to_html }
it { subject.must_be_instance_of(String) }
it { subject.must_equal('
| ') }
end
describe '#to_s' do
let(:position) {}
let(:_value) { 'a' }
subject { instance.to_s }
it { subject.must_be_instance_of(String) }
context 'when a position is specified' do
let(:position) { Vedeu::Geometries::Position.coerce([17, 2]) }
it { subject.must_equal("\e[17;2Ha") }
end
context 'when a position is not specified' do
let(:position) {}
it { subject.must_equal('a') }
end
context 'when a colour is specified' do
let(:colour) {
Vedeu::Colours::Colour.new(foreground: '#00ff00',
background: '#005500')
}
context 'and a parent colour is specified' do
let(:parent_colour) {
Vedeu::Colours::Colour.new(foreground: '#ff0000',
background: '#550000')
}
it { subject.must_equal("\e[38;2;0;255;0m\e[48;2;0;85;0ma") }
end
context 'and a parent colour is not specified' do
let(:parent_colour) {}
it { subject.must_equal("\e[38;2;0;255;0m\e[48;2;0;85;0ma") }
end
end
context 'when a colour is not specified' do
let(:colour) {}
it { subject.must_equal('a') }
end
context 'when a style is specified' do
let(:style) { Vedeu::Presentation::Style.new('underline') }
context 'when a parent style is specified' do
let(:parent_style) { Vedeu::Presentation::Style.new('bold') }
it { subject.must_equal("\e[4ma") }
end
context 'when a parent style is not specified' do
let(:parent_style) {}
it { subject.must_equal("\e[4ma") }
end
end
context 'when a style is not specified' do
let(:style) {}
it { subject.must_equal('a') }
end
context 'when the value is nil' do
let(:_value) {}
it { subject.must_equal('') }
end
end
describe '#to_str' do
it { instance.must_respond_to(:to_str) }
end
describe '#type' do
subject { instance.type }
it { subject.must_equal(:empty) }
end
end # Empty
end # Cells
end # Vedeu