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 |