Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Tests passing and adding partial crud of teams

  • Loading branch information...
commit 6e41f243162282867606c65a2d423822ac81d8eb 1 parent 4691c6d
Leonardo Campos authored
View
2  Gemfile
@@ -41,3 +41,5 @@ group :test do
gem "vcr", "~> 2.0.0"
gem 'fakeweb'
end
+
+gem 'step-up', "~> 0.8.0", :group => [:preparing]
View
3  Gemfile.lock
@@ -127,6 +127,8 @@ GEM
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sqlite3 (1.3.5)
+ step-up (0.8.0)
+ thor (>= 0.14.6)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
@@ -156,6 +158,7 @@ DEPENDENCIES
ruby-debug19
sass-rails (~> 3.1.5)
sqlite3
+ step-up (~> 0.8.0)
turn (= 0.8.2)
uglifier (>= 1.0.3)
vcr (~> 2.0.0)
View
7 app/controllers/chamados_controller.rb
@@ -13,14 +13,15 @@ def gerar
end
def create
+ @chamado = Chamado.new(:project => @project)
@version = params["qa-version"]
@former_version = params["prod-version"]
hash_part = {:after => @former_version, :upto => @version}
- @motivo = @project.stepup_diff(hash_part, %w[changes features bugfixes])
- @pre_deploy = @project.stepup_diff(hash_part, %w[pre_deploy])
- @pos_deploy = @project.stepup_diff(hash_part, %w[pos_deploy])
+ @motivo = ScrumBoard::ConfluenceClient.encode(@project.stepup_diff(hash_part, %w[changes features bugfixes]))
+ @pre_deploy = ScrumBoard::ConfluenceClient.encode(@project.stepup_diff(hash_part, %w[pre_deploy]))
+ @pos_deploy = ScrumBoard::ConfluenceClient.encode(@project.stepup_diff(hash_part, %w[pos_deploy]))
if @project.pilot?
render 'pilot'
View
5 app/controllers/teams_controller.rb
@@ -0,0 +1,5 @@
+class TeamsController < ApplicationController
+ def edit
+
+ end
+end
View
8 app/models/chamado.rb
@@ -25,15 +25,15 @@ def create_page(version, content=@content)
confluence_client.add_page(page_name(version), content, extras)
end
+ def page_name(version)
+ "#{@project.name.downcase} - #{version}"
+ end
+
private
def confluence_client
@client ||= ScrumBoard::ConfluenceClient.new
end
- def page_name(version)
- "#{@project.name.downcase} - #{version}"
- end
-
def add_line_to_page(page, version)
linha = "| #{@project.name} | #{version} | [IM-000000|plataforma:#{page_name(version)}] | 12/03/2012 | | Aberto | Piloto | | |"
View
16 app/models/project.rb
@@ -36,7 +36,7 @@ def retrieve_qa_approved_version
def stepup_diff(data, sections=[])
data ||= {}
- command = 'stepup notes'
+ command = 'stepup notes --fetch'
data.each_pair do |chave, valor|
command += " --#{chave}=#{valor}"
@@ -46,6 +46,7 @@ def stepup_diff(data, sections=[])
command += " --sections=#{sections.join(' ')}"
end
+ set_current_dir
clean_stepup_notes `#{command}`
end
@@ -56,11 +57,20 @@ def sha1(version)
private
def repositories_dir
- File.join(Rails.root, 'repositories')
+ return @rep_dir_name unless @rep_dir_name.blank?
+ @rep_dir_name = File.join(Rails.root, 'repositories')
+ @rep_dir_name
end
def retrive_dir_name
- File.join(repositories_dir, repository.match(/([^\/]+)\.git/)[1])
+ return @dir_name unless @dir_name.blank?
+
+ @dir_name = File.join(repositories_dir, repository.match(/([^\/]+)\.git/)[1])
+ @dir_name
+ end
+
+ def set_current_dir
+ Dir.chdir retrive_dir_name
end
def clean_stepup_notes(text)
View
2  app/views/chamados/index.html.erb
@@ -22,7 +22,7 @@
<h1><%=t('titulos.chamados')%></h1>
<% @teams.each do |team| %>
<div class="team_container">
- <h3><%=team.name%></h3>
+ <h3><%=team.name%> [<a href="<%=edit_team_path%>">edit</a>]</h3>
<%if team.projects.blank?%>
<%=t('messages.chamados.nenhum')%>
<%else
View
71 app/views/chamados/normal.html.erb
@@ -1,7 +1,78 @@
<form id="form_chamados" action="<%=gerar_project_chamados_path%>" method="post">
<input type="hidden" name="version" value="<%=@version%>"/>
<textarea style="width:90%;height:500px;" name="content">
+*1 - Motivo: (Informa qual alteração vai ser feita no site)*
+<%=@motivo%>
+
+*2 - Resultado: (Informa o resultado desejado do Deploy)*
+Alterações aplicadas com sucesso
+
+*3 - Data solicitada: (Informa a data/hora desejada para execução).*
+
+*4 - Resp. pelo Acompanhamento: (informar quem vai estar no Local para acompanhar).*
+<%=@project.team.scrum_master%>
+
+*5 - Resp. pela validação: (informar quem vai validar após execução).*
+<%=@project.team.scrum_master%>
+
+*6 - Resp. pelo produto: (informar quem é o responsável).*
+<%=@project.team.product_owner%> (PO), <%=@project.team.scrum_master%> (SM)
+
+*7 - Impacto: (Informa qual o Impacto deste Deploy).*
+Nenhum impacto para Infra
+
+*8 - Afeta apenas este produto?*
+Não
+
+*9 - Afeta outros Produtos? (Qual e quem é o responsável por outros Produtos.).*
+Sim, todos aqueles que usam o Alexandria (Ricardo Sazima e redações)
+
+*10 - Pré-requisitos (Informar o que pode ser feito antes do Deploy, Ex. BKP).*
+<%=@pre_deploy%>
+
+*11 - Procedimento de implantação:*
+ repositório git: <%=@project.repository%>
+ TAG=<%=@version%> cap production deploy
+ <%=@pos_deploy%>
+
+*12 - Qual a changelog? (link para changelog na wikiti).*
+[https://confluence.abril.com.br/display/plataforma/<%=@chamado.page_name @version%>]
+
+*13 - Qual a TAG/Versão?*
<%=@version%>
+
+*14 - Qual a Hash da TAG?*
+<%=@project.sha1 @version%>
+
+*15 - Qual a versão da Gem?*
+Usamos bundler
+
+*16 - Qual a instancia do banco para backup? (Informar qual a instancia do banco)*
+Não há alterações de banco de dados
+
+*17 - Tem Rake? Caso sim, qual o tempo aproximado de execução?*
+Não
+
+*18 - É necessário fazer flush na Akamai? Caso sim, qual(is) Pasta(s)/Arquivo(s)?*
+Não
+
+*19 - Houve validação de Segurança?*
+Não
+
+*20 - Houve validação de QA?*
+Sim
+
+*21 - Qual a janela prevista para o deploy (tempo total de execução)?*
+1 hora
+
+*22 - Plano de retorno (Informar o que deve ser feito para restaurar o ambiente)*
+TAG=<%=@former_version%> cap production deploy
+
+*23 - Existe algum ponto de atenção ou exceção a regra que queira comunicar?*
+Não
+
+*24 - Quem deverá ser informado após Deploy?*
+<%=@project.team.scrum_master%>
</textarea><br/>
<input type="submit" value="OK, Criar chamado"/>
</form>
View
20 app/views/chamados/pilot.html.erb
@@ -1,36 +1,36 @@
<form id="form_chamados" action="<%=gerar_project_chamados_path%>" method="post">
<input type="hidden" name="version" value="<%=@version%>"/>
<textarea style="width:90%;height:500px;" name="content">
-1 – Número do Chamado:
+*1 – Número do Chamado:*
-2 - Você está fazendo deploy de qual sistema/produto?
+*2 - Você está fazendo deploy de qual sistema/produto?*
<%=@project.name%>
-3 - Implementações desta versão:
+*3 - Implementações desta versão:*
<%=@motivo%>
-4 - Janela desejada (data e horário):
+*4 - Janela desejada (data e horário):*
-5 – Responsável técnico ou seu backup com os telefones de contato:
+*5 – Responsável técnico ou seu backup com os telefones de contato:*
<%=@project.team.scrum_master%>
-6 – Possíveis Impactos/Indisponibilidades durante o deploy (desse e de outros produtos):
+*6 – Possíveis Impactos/Indisponibilidades durante o deploy (desse e de outros produtos):*
-7 - Pré-requisitos:
+*7 - Pré-requisitos:*
<%=@pre_deploy%>
-8 - Repositório da código da aplicação:
+*8 - Repositório da código da aplicação:*
<%=@project.repository%>
-9 - Procedimento de implantação (Deploy Guide):
+*9 - Procedimento de implantação (Deploy Guide):*
TAG=<%=@version%> cap production deploy
<%=@pos_deploy%>
-10 – Plano de Retorno:
+*10 – Plano de Retorno:*
TAG=<%=@former_version%> cap production deploy
</textarea><br/>
<input type="submit" value="OK, Criar chamado"/>
View
0  app/views/teams/edit.html.erb
No changes.
View
2  config/routes.rb
@@ -4,6 +4,8 @@
# match 'projects/:project_id/chamados/qa_approved_version' => 'chamados#qa_approved_version'
# match 'projects/:project_id/chamados/production_version' => 'chamados#production_version'
+ resources :teams
+
resources :projects, :only => [:index] do
resources :chamados, :only => [:new, :create] do
collection do
View
11 lib/scrum_board/confluence_client.rb
@@ -2,6 +2,12 @@
module ScrumBoard
class ConfluenceClient
+ def self.encode(text)
+ text = text.gsub('[', '\[').gsub('{', '\{')
+ num_spaces = text.match(/^ */)[0].size
+ text.sub(/^ {#{num_spaces}}/, '&nbsp;' * num_spaces)
+ end
+
def page_source(title, space='plataforma')
title = title.gsub(/\+/, ' ')
@@ -11,7 +17,6 @@ def page_source(title, space='plataforma')
#extras: parent, labels, replace, content2, findReplace, noConvert, encoding
def add_page(title, content, extras=nil)
- debugger
create_or_update('addPage', title, content, extras)
end
@@ -34,6 +39,7 @@ def call_confluence(action, extras=nil)
command += " --#{key}='#{value}'"
end
+ debugger
if action == 'getSource'
path = temp_file_path
@@ -61,7 +67,8 @@ def temp_file_path
def default_extras(given_extras={})
extras = given_extras || {}
- extras[:encoding] = 'ISO-8859-1' unless given_extras.has_key?(:encoding)
+ extras[:encoding] = 'UTF-8' unless given_extras.has_key?(:encoding)
+ extras
end
def create_or_update(action, title, content, extras)
View
2  lib/scrum_board/yml.rb
@@ -10,7 +10,7 @@ def self.read(file)
end
def self.read_from_config(file, env = ::Rails.env)
- yaml_file = File.join("config",file)
+ yaml_file = File.join(Rails.root, "config", file)
configs = env ? read(yaml_file)[::Rails.env] : read(yaml_file)
configs.is_a?(Hash) ? self.symbolize_keys(configs) : configs
end
View
7 spec/controllers/chamados_controller_spec.rb
@@ -37,10 +37,11 @@
@prod_version = 'v4.8.0'
hash_part = {:after => @prod_version, :upto => @qa_version}
- @project_stub.expects(:stepup_diff).with(hash_part, %w[changes features bugfixes]).once
- @project_stub.expects(:stepup_diff).with(hash_part, %w[pre_deploy]).once
- @project_stub.expects(:stepup_diff).with(hash_part, %w[pos_deploy]).once
+ @project_stub.expects(:stepup_diff).with(hash_part, %w[changes features bugfixes]).once.returns('A')
+ @project_stub.expects(:stepup_diff).with(hash_part, %w[pre_deploy]).once.returns('B')
+ @project_stub.expects(:stepup_diff).with(hash_part, %w[pos_deploy]).once.returns('C')
+ ScrumBoard::ConfluenceClient.expects(:encode).times(3)
end
it 'should render "piloto" template if project is pilot' do
View
11 spec/controllers/teams_controller_spec.rb
@@ -0,0 +1,11 @@
+require 'spec_helper'
+
+describe TeamsController do
+ describe "GET 'edit'" do
+ it 'deveria renderizar a view edit' do
+ get 'edit', "id" => "1"
+
+ response.should render_template("edit")
+ end
+ end
+end
View
22 spec/lib/scrum_board/confluence_client_spec.rb
@@ -1,6 +1,28 @@
require_relative '../../spec_helper'
describe ScrumBoard::ConfluenceClient do
+ context 'class' do
+ context 'should respond to' do
+ it 'encode' do
+ ScrumBoard::ConfluenceClient.should respond_to(:encode)
+ end
+ end
+
+ context 'on receiving a call to encode' do
+ it 'should replace [ caracter for \[' do
+ ScrumBoard::ConfluenceClient.encode("Texto [com um exemplo]").should == 'Texto \[com um exemplo]'
+ end
+
+ it 'should replace { caracter for \{' do
+ ScrumBoard::ConfluenceClient.encode("Texto {com um exemplo}").should == 'Texto \{com um exemplo}'
+ end
+
+ it 'should replace leading spaces with &nbsp;' do
+ ScrumBoard::ConfluenceClient.encode(" Texto").should == '&nbsp;&nbsp;&nbsp;Texto'
+ end
+ end
+ end
+
context 'instance' do
before :each do
@client = ScrumBoard::ConfluenceClient.new
View
4 spec/lib/scrum_board/yml_spec.rb
@@ -4,13 +4,13 @@
it 'deveria ler um arquivo de config valido' do
file_path = File.join(Rails.root,"spec/lib/scrum_board/test")
- File.expects(:join).with('config','test').returns(file_path)
+ File.expects(:join).with(Rails.root, 'config', 'test').returns(file_path)
@yml = ::ScrumBoard::Yml.read_from_config('test')
@yml.should == {:pessoa => {:nome => "zezinho", :atributo => { :idade => 12 }}}
end
it "deveria retornar nulo quando o arquivo nao existe" do
- lambda { ::ScrumBoard::Yml.read_from_config('invalid_file') }.should raise_error(Errno::ENOENT, "No such file or directory - config/invalid_file.yml")
+ lambda { ::ScrumBoard::Yml.read_from_config('invalid_file') }.should raise_error(Errno::ENOENT, "No such file or directory - #{Rails.root}/config/invalid_file.yml")
end
end
View
4 spec/models/project_spec.rb
@@ -61,7 +61,7 @@
qa_version = 'v5.0.1'
prod_version = 'v4.0.5'
- @project.expects(:`).with("stepup notes --after=#{prod_version} --upto=#{qa_version}").once.returns("TESTE")
+ @project.expects(:`).with("stepup notes --fetch --after=#{prod_version} --upto=#{qa_version}").once.returns("TESTE")
@project.stepup_diff(:after => prod_version, :upto => qa_version).should == "TESTE"
end
@@ -69,7 +69,7 @@
qa_version = 'v5.0.1'
prod_version = 'v4.0.5'
- @project.expects(:`).with("stepup notes --sections=changes features bugfixes").once.returns("TESTE")
+ @project.expects(:`).with("stepup notes --fetch --sections=changes features bugfixes").once.returns("TESTE")
@project.stepup_diff(nil,['changes','features','bugfixes']).should == "TESTE"
end
end
Please sign in to comment.
Something went wrong with that request. Please try again.