require 'squib'
require 'spec_helper'

describe Squib::Conf do

  it 'parses the project template file just fine' do
    conf = Squib::Conf.load project_template('config.yml')
    expect(conf.backend).to eq(Squib::Conf::DEFAULTS['backend'])
  end

  it 'parses an empty file' do
    conf = Squib::Conf.load conf('empty.yml')
    expect(conf.backend).to eq(Squib::Conf::DEFAULTS['backend'])
  end

  it 'parses the sample custom config' do
    conf = Squib::Conf.load sample_file('config/custom-config.yml')
    expect(conf.progress_bars).to  be true
    expect(conf.text_hint).to      eq '#FF0000'
    expect(conf.custom_colors).to  eq({ 'foo' => '#ccc' })
    expect(conf.img_dir).to        eq 'customconfig-imgdir'
  end

  it 'normalizes antialias automatically' do
    expect(Squib::Conf::DEFAULTS['antialias']).to eq 'best'
    expect(Squib::Conf.new.antialias).to          eq 'subpixel'
  end

  it 'warns when the yml has an unrecognized option' do
    expect(Squib::logger).to receive(:warn).with('Unrecognized configuration option(s): unicorns')
    Squib::Conf.load conf('unrecognized.yml')
  end

  it 'helps Andy get full coverage with a test on to_s' do
    conf = Squib::Conf.load conf('empty.yml')
    expect(conf.to_s).to start_with 'Conf: '
  end

  it 'allows Squib.configure to override yml' do
    Squib.configure img_dir: 'color'
    c = Squib::Conf.load conf('basic.yml')
    expect(c.img_dir).to eq 'color'
    # reset our state to be nice
    Squib::USER_CONFIG.clear
  end

end
