# frozen_string_literal: true
require 'test_helper'
module Vedeu
module Renderers
describe JSON do
let(:described) { Vedeu::Renderers::JSON }
let(:instance) { described.new(options) }
let(:options) {
{
compression: compression,
end_tag: end_tag,
end_row_tag: end_row_tag,
filename: filename,
output: output,
start_tag: start_tag,
start_row_tag: start_row_tag,
template: template,
timestamp: timestamp,
write_file: write_file,
}
}
let(:compression) { false }
let(:end_tag) { '' }
let(:end_row_tag) { '' }
let(:filename) { 'vedeu_renderers_json' }
let(:start_tag) { '
' }
let(:template) {
::File.dirname(__FILE__) + '/../../../support/templates/' \
'html_renderer.vedeu'
}
let(:timestamp) { false }
let(:write_file) { false }
let(:output) {
Vedeu::Models::Page.coerce([
Vedeu::Cells::Char.new(output_attributes)
])
}
let(:output_attributes) {
{
colour: {
background: '#ff0000',
foreground: '#ffffff',
},
name: 'Vedeu::Renderers::JSON',
position: [2, 9],
value: 'a',
}
}
let(:output_as_hash) {
[
{
name: 'Vedeu::Renderers::JSON',
style: '',
type: 'char',
value: 'a',
colour: {
background: '#ff0000',
foreground: '#ffffff',
},
position: {
y: 2,
x: 9,
},
}, {
type: :escape,
value: "\e[0m",
}
]
}
let(:output_as_json) { ::JSON.pretty_generate(output_as_hash) }
before { ::File.stubs(:write) }
describe '#initialize' do
it { instance.must_be_instance_of(described) }
it { instance.instance_variable_get('@options').must_equal(options) }
end
describe '#clear' do
subject { instance.clear }
it { subject.must_be_instance_of(String) }
it { subject.must_equal("{\n}") }
end
describe '#write' do
subject { instance.write }
context 'when the :write_file option is true' do
let(:write_file) { true }
it do
::File.expects(:write).with(filename, output_as_json)
subject
end
end
context 'when the :write_file option is false' do
it { subject.must_equal(output_as_json) }
end
end
end # JSON
end # Renderers
end # Vedeu
|