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_pact_url).with(pact, '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 "