require 'spec_helper'
require 'pact_broker/api/renderers/html_pact_renderer'
require 'timecop'
module PactBroker
module Api
module Renderers
describe HtmlPactRenderer do
before do
ENV['BACKUP_TZ'] = ENV['TZ']
ENV['TZ'] = "Australia/Melbourne"
PactBroker.configuration.enable_public_badge_access = true
allow(PactBroker::Api::PactBrokerUrls).to receive(:pact_url).with('http://base', pact).and_return(pact_url)
allow(PactBroker::Api::PactBrokerUrls).to receive(:matrix_for_pacticipant_version_url).with(consumer_version, 'http://base').and_return(matrix_url)
allow_any_instance_of(HtmlPactRenderer).to receive(:logger).and_return(logger)
Timecop.freeze(created_at + 3)
end
after do
ENV['TZ'] = ENV['BACKUP_TZ']
Timecop.return
end
let(:consumer) { double('consumer', name: 'Consumer')}
let(:provider) { double('provider', name: 'Provider')}
let(:consumer_version) { double('consumer version') }
let(:created_at) { DateTime.new(2014, 02, 27) }
let(:json_content) { load_fixture('renderer_pact.json') }
let(:pact) do
double('pact',
json_content: json_content,
consumer_version_number: '1.2.3',
consumer: consumer,
provider: provider,
consumer_version_tag_names: ['prod', 'master'],
created_at: created_at,
consumer_version: consumer_version
)
end
let(:pact_url) { '/pact/url' }
let(:matrix_url) { '/matrix/url' }
let(:options) do
{
base_url: 'http://base',
badge_url: 'http://badge'
}
end
let(:logger) { double('logger').as_null_object }
subject { HtmlPactRenderer.call pact, options }
describe ".call" do
it "renders the pact as HTML" do
expect(subject).to include("")
expect(subject).to include("")
expect(subject).to include(".*Some Consumer/
expect(subject).to match /.*Some Provider/
expect(subject).to include("Date published:")
expect(subject).to include("Thu 27 Feb 2014, 11:00am +11:00")
expect(subject).to include("3 days ago")
expect(subject).to match /title.*Pact between Consumer and Provider/
expect(subject).to match /prod, master/
end
it "renders the badge image" do
expect(subject).to include ""
end
it "renders a text area with the badge markdown" do
expect(subject).to include "