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
							 |