49 lines
1.4 KiB
Ruby
49 lines
1.4 KiB
Ruby
require 'rails_helper'
|
|
|
|
describe AsciicastImageGenerator, needs_phantomjs_2_bin: true do
|
|
|
|
let(:image_generator) { AsciicastImageGenerator.new(template_renderer) }
|
|
let(:template_renderer) { ApplicationController.new }
|
|
|
|
describe '#generate' do
|
|
let(:asciicast) {
|
|
create(
|
|
:asciicast,
|
|
theme_name: 'asciinema',
|
|
file: Asciinema::FixtureHelpers.fixture_file('1/screenshot.json', 'application/json')
|
|
)
|
|
}
|
|
|
|
def rgb(color)
|
|
[ChunkyPNG::Color.r(color), ChunkyPNG::Color.g(color), ChunkyPNG::Color.b(color)]
|
|
end
|
|
|
|
before do
|
|
image_generator.generate(asciicast)
|
|
end
|
|
|
|
it 'generates screenshot of "snapshot frame"' do
|
|
png = ChunkyPNG::Image.from_file(asciicast.image.path)
|
|
|
|
# make sure there are black-ish borders
|
|
expect(rgb(png[1, 1])).to eq([17, 19, 20])
|
|
expect(rgb(png[png.width - 2, png.height - 2])).to eq([17, 19, 20])
|
|
|
|
# check content color (red-ish text background)
|
|
expect(rgb(png[93, 15])).to eq([221, 60, 105])
|
|
|
|
# make sure white SVG play icon is rendered correctly
|
|
expect(rgb(png[png.width / 2, (png.height / 2) - 10])).to eq([255, 255, 255])
|
|
|
|
# make sure PowerlineSymbols are rendered
|
|
expect(rgb(png[114, 28])).to eq([78, 191, 34])
|
|
end
|
|
|
|
it 'sets image_width and image_height on the asciicast' do
|
|
expect(asciicast.image_width).to_not be(nil)
|
|
expect(asciicast.image_height).to_not be(nil)
|
|
end
|
|
end
|
|
|
|
end
|