Class: Bddgenx::Tracer
- Inherits:
-
Object
- Object
- Bddgenx::Tracer
- Defined in:
- lib/bddgenx/reports/tracer.rb
Overview
Classe para adicionar registros de rastreabilidade a um relatório CSV.
Class Method Summary collapse
-
.adicionar_entrada(historia, nome_arquivo_feature) ⇒ void
Adiciona entradas de rastreabilidade para cada passo de cada grupo da história em um arquivo CSV localizado em ‘reports/output/rastreabilidade.csv’.
-
.escrever_csv(caminho, cabecalho, linhas) ⇒ void
Escreve ou anexa registros em um arquivo CSV, criando cabeçalho se necessário.
Class Method Details
.adicionar_entrada(historia, nome_arquivo_feature) ⇒ void
This method returns an undefined value.
Adiciona entradas de rastreabilidade para cada passo de cada grupo da história em um arquivo CSV localizado em ‘reports/output/rastreabilidade.csv’.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/bddgenx/reports/tracer.rb', line 19 def self.adicionar_entrada(historia, nome_arquivo_feature) # Garante existência do diretório de saída FileUtils.mkdir_p('reports/output') arquivo_csv = 'reports/output/rastreabilidade.csv' # Cabeçalho padrão do CSV: identifica colunas cabecalho = ['Funcionalidade', 'Tipo', 'Tag', 'Cenário', 'Passo', 'Origem'] linhas = [] # Itera sobre grupos de passos para compor linhas de rastreabilidade historia[:grupos].each_with_index do |grupo, idx| tipo = grupo[:tipo] tag = grupo[:tag] passos = grupo[:passos] || [] nome_funcionalidade = historia[:quero].gsub(/^Quero\s*/, '').strip nome_cenario = "Cenário #{idx + 1}" passos.each do |passo| linhas << [ nome_funcionalidade, tipo, tag || '-', nome_cenario, passo, File.basename(nome_arquivo_feature) ] end end # Escreve ou anexa as linhas geradas ao CSV escrever_csv(arquivo_csv, cabecalho, linhas) end |
.escrever_csv(caminho, cabecalho, linhas) ⇒ void
This method returns an undefined value.
Escreve ou anexa registros em um arquivo CSV, criando cabeçalho se necessário.
60 61 62 63 64 65 66 67 68 |
# File 'lib/bddgenx/reports/tracer.rb', line 60 def self.escrever_csv(caminho, cabecalho, linhas) # Verifica se é um novo arquivo para incluir o cabeçalho novo_arquivo = !File.exist?(caminho) CSV.open(caminho, 'a+', col_sep: ';', force_quotes: true) do |csv| csv << cabecalho if novo_arquivo linhas.each { |linha| csv << linha } end end |