Commit 8b432927283aafca165f5b7f38c7c4eff952eefb

Authored by Luciano Prestes
1 parent 8511e492

Tests for software language helper

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
lib/software_language_helper.rb
1 1 module SoftwareLanguageHelper
2 2  
  3 + def self.valid_language? language
  4 + return false if SoftwareHelper.all_table_is_empty?(language)
  5 +
  6 + programming_language_id_list = ProgrammingLanguage.select(:id).collect {|dd| dd.id }
  7 +
  8 + return false unless programming_language_id_list.include?(language[:programming_language_id].to_i)
  9 +
  10 + true
  11 + end
  12 +
3 13 def self.list_language new_languages
4 14 return [] if new_languages.nil? or new_languages.length == 0
5 15 list_languages = []
6 16  
7 17 new_languages.each do |new_language|
8   - unless SoftwareHelper.all_table_is_empty? new_language, ["programming_language_id"]
  18 + if valid_language? new_language
9 19 language = SoftwareLanguage.new
10 20 language.programming_language = ProgrammingLanguage.find(new_language[:programming_language_id])
11 21 language.version = new_language[:version]
... ... @@ -17,7 +27,7 @@ module SoftwareLanguageHelper
17 27 list_languages
18 28 end
19 29  
20   - def self.valid_list_language? list_languages
  30 + def self.valid_list_language? list_languages
21 31 return false if list_languages.nil? or list_languages.length == 0
22 32  
23 33 list_languages.each do |language|
... ...
test/unit/software_language_helper_test.rb 0 → 100644
... ... @@ -0,0 +1,76 @@
  1 +require File.dirname(__FILE__) + '/../../../../test/test_helper'
  2 +
  3 +class SoftwareLanguageHelperTest < ActiveSupport::TestCase
  4 +
  5 + include SoftwareLanguageHelper
  6 +
  7 + def setup
  8 + pl1 = ProgrammingLanguage.create(:name => "Python")
  9 + pl2 = ProgrammingLanguage.create(:name => "Java")
  10 +
  11 + @software_language_objects = [
  12 + {:programming_language_id => pl1.id.to_s ,:version => "2.0", :operating_system => "debian"},
  13 + {:programming_language_id => pl2.id.to_s ,:version => "2.1", :operating_system => "debian"},
  14 + {:programming_language_id => pl1.id.to_s ,:version => "2.2", :operating_system => "debian"}]
  15 + @software_language_objects
  16 + end
  17 +
  18 + def teardown
  19 + @software_language_objects = nil
  20 + ProgrammingLanguage.destroy_all
  21 + end
  22 +
  23 + should "return an empty list" do
  24 + empty_list = []
  25 + assert_equal [], SoftwareLanguageHelper.list_language(empty_list)
  26 + end
  27 +
  28 + should "return a list with current software language objects" do
  29 + list_compare = []
  30 + assert_equal list_compare.class, SoftwareLanguageHelper.list_language(@software_language_objects).class
  31 + end
  32 +
  33 + should "have same information from the list passed as parameter" do
  34 + list_compare = SoftwareLanguageHelper.list_language(@software_language_objects)
  35 + assert_equal @software_language_objects.first[:programming_language_id].to_i, list_compare.first.programming_language_id
  36 + end
  37 +
  38 + should "return a list with the same size of the parameter" do
  39 + list_compare = SoftwareLanguageHelper.list_language(@software_language_objects)
  40 + assert_equal @software_language_objects.count, list_compare.count
  41 + end
  42 +
  43 + should "return false if list_language are empty or null" do
  44 + list_compare = []
  45 + assert_equal false,SoftwareLanguageHelper.valid_list_language?(list_compare)
  46 + end
  47 +
  48 + should "return a html text with operating system equals to linux" do
  49 + softwares_languages = []
  50 +
  51 + programming_language = ProgrammingLanguage.new
  52 + programming_language.name = "teste"
  53 +
  54 + software_language = SoftwareLanguage.new
  55 + software_language.version = 2
  56 + software_language.operating_system = "linux"
  57 + software_language.programming_language = programming_language
  58 +
  59 + softwares_languages << software_language
  60 +
  61 + assert_not_nil SoftwareLanguageHelper.language_as_tables(softwares_languages).first.call.index("linux")
  62 + end
  63 +
  64 + should "remove invalid tables from the list" do
  65 + @software_language_objects.push({
  66 + :programming_language_id => "I'm not a valid id",
  67 + :version => "2.0",
  68 + :operating_system => "debian"
  69 + })
  70 +
  71 + software_language_objects_length = @software_language_objects.count
  72 + list_compare = SoftwareLanguageHelper.list_language(@software_language_objects)
  73 +
  74 + assert_equal software_language_objects_length-1, list_compare.count
  75 + end
  76 +end
... ...