78 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| #encoding: UTF-8
 | |
| require 'spec_helper'
 | |
| 
 | |
| describe AttributeFieldsHelper do
 | |
|   describe "#attribute_field" do
 | |
|     context "In the HTML,there should always be 'value' tag in it's name"
 | |
| 
 | |
|     before(:all) do
 | |
|       @user = User.where(email:'chris@rulingcom.com').first
 | |
|     end #end before
 | |
|     # binding.pry
 | |
|     LIST[:markups].each do |markup|
 | |
|         it "should have 'value' when it's #{markup[0]} (no locale)" do
 | |
|           title = "標題"
 | |
|           pre_set_markup_value = case markup[0]
 | |
|           when "select","checkbox","radio_button"
 | |
|             '{"1"=>{"en"=>"Male", "zh_tw"=>"男性"}, "2"=>{"en"=>"Female", "zh_tw"=>"女性"}, "3"=>{"en"=>"Not public", "zh_tw"=>"不公開"}}'
 | |
|           else
 | |
|             nil
 | |
|           end
 | |
| 
 | |
|           attribute_field=AttributeField.find_or_create_by(key:'Test',markup: markup[0],markup_value: pre_set_markup_value,:title=>title)
 | |
| 
 | |
|           html = attribute_field.block_helper(@user,1)
 | |
| 
 | |
|           nodes = Nokogiri::HTML.fragment(html).search('*[@func="input_unit"]')
 | |
| 
 | |
|           nodes.each do |input|
 | |
|             attri = input.attributes["name"] 
 | |
|             attri = input.children().first.attributes["name"] if (markup[0] == 'checkbox'  ||  markup[0] == 'radio_button' )
 | |
|             attri.to_s.should match /user\[.*attribute_values\]\[\d*\]\[value\].*/
 | |
|             # user[attribute_values][1][id]
 | |
|             # user[attribute_values][1][value][en]
 | |
|           end #end of input loop
 | |
|         end # end of it
 | |
|     end #end markups
 | |
| 
 | |
|         LIST[:markups].each do |markup|
 | |
|           if markup[1]["muti_lang_input_supprt"]
 | |
|             [true,false].each do |locale_sat|
 | |
|               title = locale_sat ? {"en"=>"Title", "zh_tw"=>"標題"} : "標題" 
 | |
|               it "should have 'value' when it's #{markup[0]} for locale => #{locale_sat}" do
 | |
|                 pre_set_markup_value = case markup[0]
 | |
|                 when "select","checkbox","radio_button"
 | |
|                   '{"1"=>{"en"=>"Male", "zh_tw"=>"男性"}, "2"=>{"en"=>"Female", "zh_tw"=>"女性"}, "3"=>{"en"=>"Not public", "zh_tw"=>"不公開"}}'
 | |
|                 else
 | |
|                   nil
 | |
|                 end
 | |
|                 if (markup[0] == "text_field" || markup[0] == "text_area") && (locale_sat == false)
 | |
|                   # binding.pry 
 | |
|                 end
 | |
|                 attribute_field=AttributeField.find_or_create_by(key:'Test',markup: markup[0],markup_value: pre_set_markup_value,:title=>title,:locale => locale_sat)
 | |
|                 
 | |
|                 html = attribute_field.block_helper(@user,1)
 | |
|                 
 | |
|                 # p html
 | |
|                 nodes = Nokogiri::HTML.fragment(html).search('*[@func="input_unit"]')
 | |
|                 nodes.each do |input|
 | |
|                   input.attributes["name"].to_s.should match /user\[.*attribute_values\]\[\d*\]\[value\].*/
 | |
|                   # user[attribute_values][1][id]
 | |
|                   # user[attribute_values][1][value][en]
 | |
|                 end #end of input loop
 | |
|                 nodes = Nokogiri::HTML.fragment(html).search('*[@func="field_label"]')
 | |
| 
 | |
|                 nodes.each do |input|
 | |
|                   # p input.to_s
 | |
|                   # binding.pry if 
 | |
| 
 | |
|                   input.children.text.should match "標題"
 | |
|                 end # end of field_label loop
 | |
|               end # end of it
 | |
|             end # end of T/F
 | |
|           end# end of if support
 | |
|     end #end markups
 | |
| 
 | |
| 
 | |
|   end
 | |
| end |