require 'rake' require 'csv' namespace :test do desc 'Generar los test en base a los archivos del controller y model' task :generator, [:ins] do |task, option| case option[:ins] when 'controller' Rake::Task["test:generator_model"].invoke when 'model' Rake::Task["test:generator_controller"].invoke when 'all' Rake::Task["test:generator_controller"].invoke Rake::Task["test:generator_model"].invoke else p "Input no valido [controller,model,all]" end end task :generator_model do files = Dir.entries(Rails.root.join("app/models")).select {|f| !File.directory? f} files.each do |file| model = File.basename(file,File.extname(file)) sh "rails generate rspec:model #{model}" end end task :generator_controller do files = Dir.entries(Rails.root.join("app/controllers/api")).select {|f| !File.directory? f} files.each do |file| controller = File.basename(file,File.extname(file)).split("_controller")[0] sh "rails generate rspec:controller api::#{controller}" end end task :generator_request do sh "rake routes > lib/tasks/tmp/routes.txt " verbs = ["GET", "POST", "PUT", "PATCH", "DELETE"] data = Hash.new { |h, k| h[k] = Array.new } data2 = [] file = "lib/tasks/tmp/routes.txt" File.open(file, "r") do |f| f.each_line.with_index do |line, index| next if index == 0 l = line.split(" ") l.insert(0, '') if verbs.include?(l[0]) l[2] = l[2].split('(.:format)')[0] paso = l[2].split('/')[2] data[paso].push({ruta: l[2], metodo: l[1]}) data2.push(l[2]+' '+l[1]) end end File.open(file, "w") do |f| data2.each do |l| f.puts(l) end f.close end data.each_with_index do |array,index| key = data.keys[index] next if key == nil sh "rails generate rspec:request #{key}" file = ("spec/requests/tmp/#{key}.rb") File.open(file, "w") do |f| f.write("object = ") f.write(array) f.close end end end desc 'Corre los test del modelo' task :model, [:tasks] do |task, option| if option[:tasks] arr = option[:tasks].split(':') arr.each do |ar| sh "rspec spec/models/#{ar}_spec.rb" end else sh "rspec --pattern spec/models/*_spec.rb" #No se cae con los errores # files = Dir.entries(Rails.root.join("spec/models")).select {|f| !File.directory? f} # files.each do |file| # sh "rspec spec/models/#{file}" # end end end desc 'Corre los test del controllador' task :controller, [:tasks, :skip_e] do |task, option| if option[:tasks] arr = option[:tasks].split(':') arr.each do |ar| sh "rspec spec/controllers/api/#{ar}_controller_spec.rb" end else sh "rspec --pattern spec/controllers/api/*_spec.rb" #No se cae con los errores # files = Dir.entries(Rails.root.join("spec/controllers/api")).select {|f| !File.directory? f} # files.each do |file| # sh "rspec spec/controllers/api/#{file}" # end end end desc 'Corre los test de request' task :request, [:tasks, :skip_e] do |task, option| if option[:tasks] arr = option[:tasks].split(':') arr.each do |ar| sh "rspec spec/requests/api/#{ar}_spec.rb" end else sh "rspec --pattern spec/requests/api/*_spec.rb" end end end