require 'rails_helper'

RSpec.describe VariavelPersonalizada do
  it 'normaliza a chave (minúscula, sem espaço)' do
    v = create(:variavel_personalizada, chave: ' Telefone Suporte ', valor: '4002-8922')
    expect(v.chave).to eq('telefone_suporte')
    expect(v.marcador).to eq('{{telefone_suporte}}')
  end

  it 'recusa chave com formato que o renderizador não substituiria' do
    expect(build(:variavel_personalizada, chave: '2telefone')).not_to be_valid
    expect(build(:variavel_personalizada, chave: 'telefone-suporte')).not_to be_valid
  end

  # Deixar o ADM criar {{valor}} faria a variável dele brigar com a do sistema —
  # e o preview não mostraria o problema, só o envio real.
  it 'recusa chave que já existe no sistema' do
    v = build(:variavel_personalizada, chave: 'valor')
    expect(v).not_to be_valid
    expect(v.errors[:chave].join).to include('já existe no sistema')
  end

  it 'não aceita duas variáveis com a mesma chave' do
    create(:variavel_personalizada, chave: 'site', valor: 'a')
    expect(build(:variavel_personalizada, chave: 'SITE', valor: 'b')).not_to be_valid
  end
end
