require 'test_helper' module Vedeu describe HTMLChar do let(:described) { Vedeu::HTMLChar } let(:instance) { described.new(char) } let(:char) { Vedeu::Char.new(attributes) } let(:attributes) { { border: border, colour: colour, parent: parent, value: _value } } let(:border) {} let(:colour) {} let(:parent) { Vedeu::Line.new(colour: parent_colour) } let(:parent_colour) {} let(:_value) {} describe '#initialize' do it { instance.must_be_instance_of(described) } it { instance.instance_variable_get('@char').must_equal(char) } end describe '.render' do subject { described.render(char) } it { subject.must_be_instance_of(String) } context 'when there is a border' do let(:border) { :top_left } context 'when there is a colour' do let(:colour) { Vedeu::Colour.new(background: '#220022', foreground: '#aadd00') } it { subject.must_equal( " " ) } end context 'when there is no colour' do context 'when there is a parent colour' do let(:parent_colour) { Vedeu::Colour.new(background: '#002222', foreground: '#dd2200') } it { subject.must_equal( " " ) } end context 'when there is no parent colour' do it { subject.must_equal( "" \ " " ) } end end end grey = '1px #222 solid' { top_horizontal: "border-top:#{grey};", left_vertical: "border-left:#{grey};", right_vertical: "border-right:#{grey};", bottom_horizontal: "border-bottom:#{grey};", top_left: "border-top:#{grey};border-left:#{grey};", top_right: "border-top:#{grey};border-right:#{grey};", bottom_left: "border-bottom:#{grey};border-left:#{grey};", bottom_right: "border-bottom:#{grey};border-right:#{grey};", horizontal: '', vertical: '' }.each do |border_style, result| context "when there is a border (#{border_style.inspect})" do let(:border) { border_style } it { subject.must_equal( " " ) } end end context 'when there is no border' do context 'when there is no value' do it { subject.must_equal(' ') } end context 'when the value is empty' do let(:_value) { '' } it { subject.must_equal(' ') } end context 'when there is a value' do let(:_value) { 'a' } it { subject.must_equal( "a" ) } end end end end # HTMLChar end # Vedeu