lib/generators/active_leonardo.rb in active_leonardo-0.2.0 vs lib/generators/active_leonardo.rb in active_leonardo-0.2.1
- old
+ new
@@ -1,384 +1,384 @@
-module ActiveLeonardo
- module Base
- protected
- def authorization_file
- "app/models/ability.rb"
- end
- def authorization?
- File.exists? authorization_file
- end
- def authentication_file auth_class="User"
- "app/models/#{auth_class.downcase}.rb"
- end
- def authentication? auth_class="User"
- return true if File.exists? authentication_file(auth_class)
- File.exists? "config/initializers/devise.rb"
- end
- def activeadmin_file
- "config/initializers/active_admin.rb"
- end
- def activeadmin?
- File.exists? activeadmin_file
- end
- def auth_class
- return unless options[:auth_class]
- options[:auth_class].classify
- end
- #def formtastic?
- # return false unless options.formtastic?
- # File.exists? "config/initializers/formtastic.rb"
- #end
- #def jquery_ui?
- # File.exists? "vendor/assets/javascripts/jquery-ui"
- #end
- #def pagination?
- # File.exists? "config/initializers/kaminari_config.rb"
- #end
- end
-
- module Leosca
-
- protected
-
- def attribute_to_hash(attribute)
- name = case attribute.type
- when :references, :belongs_to then ":#{attribute.name}_id"
- else ":#{attribute.name}"
- end
- value = case attribute.type
- when :boolean then "true"
- when :integer then "#"
- when :float, :decimal then "#.46"
- when :references, :belongs_to then "rand(#{attribute.name}_from..#{attribute.name}_to)"
- when :date then "#{Time.now.strftime("%Y-%m-%d 00:00:00.000")}".inspect
- when :datetime then "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.000")}".inspect
- when :time, :timestamp then "#{Time.now.strftime("%H:%M:%S.000")}".inspect
- else "#{attribute.name.titleize}\#".inspect
- end
- " #{name} => #{value}"
- end
- def attribute_to_range(attribute)
- case attribute.type
- when :references, :belongs_to then "#{attribute.name}_from = #{attribute.name.classify}.first.id; #{attribute.name}_to = #{attribute.name.classify}.last.id#{CRLF}"
- else ""
- end
- end
- def attribute_to_factories(attribute)
- spaces = 34
- space_association = " " * (spaces-11).abs
- space_sequence = " " * (spaces-attribute.name.size-11).abs
- space_other = " " * (spaces-attribute.name.size).abs
- name = case attribute.type
- when :references, :belongs_to then "#{singular_table_name[0..0]}.association#{space_association}"
- when :boolean, :datetime, :time, :timestamp
- then "#{singular_table_name[0..0]}.#{attribute.name}#{space_other}"
- else "#{singular_table_name[0..0]}.sequence(:#{attribute.name})#{space_sequence}"
- end
- value = case attribute.type
- when :boolean then "true"
- when :integer then "{|n| n }"
- when :float, :decimal then "{|n| n }"
- when :references, :belongs_to then ":#{attribute.name}"
- when :date then "{|n| n.month.ago }"
- when :datetime then "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.000")}".inspect
- when :time, :timestamp then "#{Time.now.strftime("%H:%M:%S.000")}".inspect
- else "{|n| \"#{attribute.name.titleize}\#{n}\" }"
- end
- " #{name}#{value}"
- end
- def attribute_to_requests(attribute, object_id=nil)
- object_id ||= "#{singular_table_name}_#{attribute.name}"
- object_id = object_id.gsub('#', "\#{#{singular_table_name}.id}").gsub('name', attribute.name)
- case attribute.type
- when :boolean then "check \"#{object_id}\" if #{singular_table_name}.#{attribute.name}"
- when :references, :belongs_to then "select #{singular_table_name}.#{attribute.name}.name, :from => \"#{object_id}_id\""
- when :datetime, :time, :timestamp
- then ""
- when :date then "fill_in \"#{object_id}\", :with => #{singular_table_name}.#{attribute.name}.strftime('%d-%m-%Y')"
- else "fill_in \"#{object_id}\", :with => #{singular_table_name}.#{attribute.name}"
- end
- end
- #def attribute_to_erb(attribute, object)
- # case attribute.name
- # when "state" then "<span class=\"state generic <%= #{object}.state_name.to_s %>\"><%= t(\"states.generic.\#{#{object}.state_name.to_s}\") %></span><span style=\"display:block;\"></span>"
- # else
- # case attribute.type
- # when :boolean then "<%= #{object}.#{attribute.name} ? style_image_tag(\"ico_v.png\", :class => \"ico_true\") : style_image_tag(\"ico_x.png\", :class => \"ico_false\") %>"
- # when :references, :belongs_to then "<%= link_to(#{object}.#{attribute.name}.try(:name) || \"#\#{#{object}.#{attribute.name}.try(:id)}\", #{object}.#{attribute.name}, :remote => @remote) %>"
- # when :integer then "<%= number_with_delimiter #{object}.#{attribute.name} %>"
- # when :decimal then "<%= number_to_currency #{object}.#{attribute.name} %>"
- # when :float then "<%= number_with_precision #{object}.#{attribute.name} %>"
- # when :date then "<%= #{object}.#{attribute.name}.strftime('%d-%m-%Y') if #{object}.#{attribute.name} %>"
- # when :datetime then "<%= #{object}.#{attribute.name}.strftime('%d-%m-%Y %H:%M:%S') if #{object}.#{attribute.name} %>"
- # when :time, :timestamp then "<%= #{object}.#{attribute.name}.strftime('%H:%M:%S') if #{object}.#{attribute.name} %>"
- # else "<%= #{object}.#{attribute.name} %>"
- # end
- # end
- #end
- def get_attr_to_match(view=:list)
- #attributes.each do |attribute|
- # case attribute.type
- # when :string, :text then
- # return "have_content(#{singular_table_name}.#{attribute.name})",
- # "have_no_content(#{singular_table_name}.#{attribute.name})"
- # end
- #end
- attr = get_attr_to_check(view)
- return "have_content(#{singular_table_name}.#{attr})",
- "have_no_content(#{singular_table_name}.#{attr})" if attr
-
- #If there are not string or text attributes
- case view
- when :list
- return "have_xpath('//table/tbody/tr')", "have_no_xpath('//table/tbody/tr')"
- when :show
- return "have_xpath('//table/tbody/tr')", "have_no_xpath('//table/tbody/tr')"
- end
- end
- def get_attr_to_check(view=:list)
- case view
- when :something
- else
- attributes.each{|a| case a.type when :string, :text then return a.name end}
- attributes.each{|a| case a.type when :references, :belongs_to, :datetime then nil else return a.name end}
- end
- end
- def fill_form_with_values(object_id=nil)
- items = []
- attributes.each{|a|items << " #{attribute_to_requests(a, object_id)}"}
- items
- end
- end
-
- #module Nested
- # protected
- #
- # #Add leonardo namespace to class_path
- # #def class_path
- # # super + base_namespaces
- # #end
- #
- # #product => products_path
- # #product under category => category_products_path(@category)
- # #product under brand/category => brand_category_products_path(@brand, @category)
- # def list_resources_path
- # "#{underscore_resource_path(:parent_singular_resource_plural)}_path(#{formatted_parent_resources("@")})"
- # end
- #
- # #product under category => category_products_path(category)
- # #product under brand/category => brand_category_products_path(@brand, category)
- # #TODO: figure out how to build links for a particular resource in the path
- # def list_resources_path_back
- # return unless nested?
- # "#{underscore_resource_path(:parent_singular_resource_plural)}_path(#{formatted_parent_resources("@").reverse.sub(/@/, "").reverse})"
- # end
- #
- # #product => "product"
- # #product under category => "[@category, product]"
- # #product under brand/category => "[@brand, @category, product]"
- # def destroy_resource_path(prefix_resource="")
- # formatted_resource_path("@", prefix_resource, "[]")
- # end
- #
- # #product => "product"
- # #product under category => "[@category, product]"
- # #product under brand/category => "[@brand, @category, product]"
- # def show_resource_path(prefix_resource="")
- # formatted_resource_path("@", prefix_resource, "[]")
- # end
- #
- # #product => "@product"
- # #product under category => "[@category, @product]"
- # #product under brand/category => "[@brand, @category, @product]"
- # def form_resource_path
- # formatted_resource_path("@", "@", "[]")
- # end
- #
- # #product => new_product_path
- # #product under category => new_category_product_path(@category)
- # #product under brand/category => new_brand_category_product_path(@brand, @category)
- # def new_resource_path
- # "new_#{underscore_resource_path}_path(#{formatted_parent_resources("@")})"
- # end
- #
- # #product => edit_product_path(@product)
- # #product under category => edit_category_product_path(@category, @product)
- # #product under brand/category => edit_brand_category_product_path(@brand, @category, @product)
- # def edit_resource_path(prefix_resource="")
- # "edit_#{underscore_resource_path}_path(#{formatted_resource_path("@", prefix_resource)})"
- # end
- #
- # #product under brand/category => "[brand, category, product]" or "[@brand, @category, @product]" or "@brand, @category, @product" or [product.brand, product.category, product]
- # def formatted_resource_path(prefix_parent="", prefix_resource="", delimiter="", resource=nil)
- # formatted_resource_base resource_path(prefix_parent, prefix_resource, resource), delimiter
- # end
- #
- # #product under brand/category => "[brand, category]" or "[@brand, @category]" or "@brand, @category" or product.brand, product.category
- # def formatted_parent_resources(prefix_parent="", delimiter="", resource=nil)
- # prefix_parent = "#{resource}." if resource
- # formatted_resource_base parent_resources(prefix_parent), delimiter
- # end
- #
- # def formatted_resource_base(resources, delimiter="")
- # str_resources = resources.join(', ')
- # resources.size > 1 ? "#{delimiter[0..0]}#{str_resources}#{delimiter[1..1]}" : str_resources
- # end
- #
- # #product under brand/category => "brand_category_product"
- # def underscore_resource_path(names=:all_singular)
- # case names
- # when :all_singular
- # resource_path.join('_')
- # #when :all_plural
- # #who needs?
- # when :parent_singular_resource_plural
- # resource_path.join('_').pluralize
- # else
- # "#{names.to_s}_not_supported"
- # end
- # end
- #
- # #product under brand/category => ["brand", "category", "product"] or ["@brand", "@category", "@product"]
- # def resource_path(prefix_parent="", prefix_resource="", resource=nil, prefix_namespace="")
- # if resource
- # prefix_parent = "#{resource}."
- # else
- # resource = singular_table_name
- # end
- #
- # prefix_namespace = ":" if prefix_namespace.empty? && prefix_parent.size>0
- #
- # if nested?
- # (base_namespaces(prefix_namespace) + parent_resources(prefix_parent)) << "#{prefix_resource}#{resource}"
- # else
- # base_namespaces(prefix_namespace) << "#{prefix_resource}#{resource}"
- # end
- # end
- #
- # #product under brand/category => "categories"
- # def plural_last_parent
- # plural_parent_resources.last
- # end
- #
- # #product under brand/category => ["brands", "categories"] or ["@brands", "@categories"]
- # def plural_parent_resources(prefix_parent="")
- # base_parent_resources.map{|m| "#{prefix_parent}#{m.pluralize}"}
- # end
- #
- # #product under brand/category => ["brand", "category"] or ["@brand", "@category"]
- # def parent_resources(prefix_parent="")
- # base_parent_resources.map{|m| "#{prefix_parent}#{m}"}
- # end
- #
- # #product under brand/category => "category"
- # def last_parent
- # base_parent_resources.last
- # end
- #
- # #product under brand/category => ["brand", "category"]
- # def base_parent_resources
- # return [] unless options[:under].present?
- # options[:under].split('/').map{|m| m.underscore}
- # end
- #
- # def nested?
- # options[:under].present?
- # end
- #
- # ### NAMESPACE ###
- # def leospaced?
- # options[:leospace].present?
- # end
- #
- # def base_namespaces(prefix="")
- # return [] unless options[:leospace].present?
- # options[:leospace].split('/').map{|m| "#{prefix}#{m.underscore}"}
- # end
- #
- # def last_namespace(prefix="")
- # base_namespaces(prefix).last
- # end
- #
- # def formatted_namespace_path(separator='/')
- # return "" unless leospaced?
- # "#{base_namespaces.join(separator)}#{separator}"
- # end
- #
- # module Test
- # protected
- # #Add parent(s) param(s) to request
- # #get :index for a product under category => get :index, :category_id => product.category_id.to_s
- # def nested_params_http_request(value=nil)
- # return unless nested?
- # ", " << base_parent_resources.map{|m| ":#{m}_id => #{value ? value.to_s.inspect : "#{file_name}.#{m}_id.to_s"}"}.join(', ')
- # end
- #
- # #Create new parent(s) and add it to request
- # #get :index for a product under category => get :index, :category_id => Factory(:category).id.to_s
- # def nested_params_http_request_new_parent
- # return unless nested?
- # ", " << base_parent_resources.map{|m| ":#{m}_id => Factory(:#{m}).id.to_s"}.join(', ')
- # end
- #
- # #product => products_path
- # #product under category => category_products_path(product.category)
- # #product under brand/category => brand_category_products_path(product.brand, product.category)
- # def list_resources_path_test(resource=nil, prefix_parent=nil)
- # unless prefix_parent
- # resource ||= singular_table_name
- # prefix_parent = "#{resource}."
- # end
- # "#{underscore_resource_path(:parent_singular_resource_plural)}_path(#{formatted_parent_resources(prefix_parent, "", resource)})"
- # end
- #
- # #product => "product"
- # #product under category => "[category, product]" or "[product.category, product]"
- # #product under brand/category => "[brand, category, product]" or "[product.brand, product.category, product]"
- # def show_resource_path_test(resource=nil, prefix_parent=nil, prefix_resource="")
- # resource ||= singular_table_name
- # prefix_parent = prefix_parent || "#{resource}."
- # formatted_resource_path(prefix_parent, prefix_resource, "[]", resource)
- # end
- #
- # #product => new_product_path
- # #product under category => new_category_product_path(product.category)
- # #product under brand/category => new_brand_category_product_path(product.brand, product.category)
- # def new_resource_path_test(resource=nil, prefix_parent=nil)
- # resource ||= singular_table_name
- # prefix_parent = prefix_parent || "#{resource}."
- # "new_#{underscore_resource_path}_path(#{formatted_parent_resources(prefix_parent, "",resource)})"
- # end
- # end
- #end
- module Test
- protected
- def get_activespace
- activespace ||= options[:activespace]
- "#{activespace}_" if activespace
- end
-
- #product => activespace_products_path
- def list_resources_path_test(resource=nil)
- resource ||= plural_table_name
- "#{get_activespace}#{resource}_path"
- end
-
- #product => "[:activespace, product]"
- def show_resource_path_test(resource=nil)
- resource ||= singular_table_name
- "[:#{options[:activespace]}, #{resource}]"
- end
-
- #product => new_activespace_product_path
- def new_resource_path_test(resource=nil)
- resource ||= singular_table_name
- "new_#{get_activespace}#{resource}_path"
- end
-
- #product => edit_activespace_product_path
- def edit_resource_path_test(resource=nil)
- resource ||= singular_table_name
- "edit_#{get_activespace}#{resource}_path(#{resource})"
- end
- end
+module ActiveLeonardo
+ module Base
+ protected
+ def authorization_file
+ "app/models/ability.rb"
+ end
+ def authorization?
+ File.exists? authorization_file
+ end
+ def authentication_file auth_class="User"
+ "app/models/#{auth_class.downcase}.rb"
+ end
+ def authentication? auth_class="User"
+ return true if File.exists? authentication_file(auth_class)
+ File.exists? "config/initializers/devise.rb"
+ end
+ def activeadmin_file
+ "config/initializers/active_admin.rb"
+ end
+ def activeadmin?
+ File.exists? activeadmin_file
+ end
+ def auth_class
+ return unless options[:auth_class]
+ options[:auth_class].classify
+ end
+ #def formtastic?
+ # return false unless options.formtastic?
+ # File.exists? "config/initializers/formtastic.rb"
+ #end
+ #def jquery_ui?
+ # File.exists? "vendor/assets/javascripts/jquery-ui"
+ #end
+ #def pagination?
+ # File.exists? "config/initializers/kaminari_config.rb"
+ #end
+ end
+
+ module Leosca
+
+ protected
+
+ def attribute_to_hash(attribute)
+ name = case attribute.type
+ when :references, :belongs_to then ":#{attribute.name}_id"
+ else ":#{attribute.name}"
+ end
+ value = case attribute.type
+ when :boolean then "true"
+ when :integer then "#"
+ when :float, :decimal then "#.46"
+ when :references, :belongs_to then "rand(#{attribute.name}_from..#{attribute.name}_to)"
+ when :date then "#{Time.now.strftime("%Y-%m-%d 00:00:00.000")}".inspect
+ when :datetime then "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.000")}".inspect
+ when :time, :timestamp then "#{Time.now.strftime("%H:%M:%S.000")}".inspect
+ else "#{attribute.name.titleize}\#".inspect
+ end
+ " #{name} => #{value}"
+ end
+ def attribute_to_range(attribute)
+ case attribute.type
+ when :references, :belongs_to then "#{attribute.name}_from = #{attribute.name.classify}.first.id; #{attribute.name}_to = #{attribute.name.classify}.last.id#{CRLF}"
+ else ""
+ end
+ end
+ def attribute_to_factories(attribute)
+ spaces = 34
+ space_association = " " * (spaces-11).abs
+ space_sequence = " " * (spaces-attribute.name.size-11).abs
+ space_other = " " * (spaces-attribute.name.size).abs
+ name = case attribute.type
+ when :references, :belongs_to then "#{singular_table_name[0..0]}.association#{space_association}"
+ when :boolean, :datetime, :time, :timestamp
+ then "#{singular_table_name[0..0]}.#{attribute.name}#{space_other}"
+ else "#{singular_table_name[0..0]}.sequence(:#{attribute.name})#{space_sequence}"
+ end
+ value = case attribute.type
+ when :boolean then "true"
+ when :integer then "{|n| n }"
+ when :float, :decimal then "{|n| n }"
+ when :references, :belongs_to then ":#{attribute.name}"
+ when :date then "{|n| n.month.ago }"
+ when :datetime then "#{Time.now.strftime("%Y-%m-%d %H:%M:%S.000")}".inspect
+ when :time, :timestamp then "#{Time.now.strftime("%H:%M:%S.000")}".inspect
+ else "{|n| \"#{attribute.name.titleize}\#{n}\" }"
+ end
+ " #{name}#{value}"
+ end
+ def attribute_to_requests(attribute, object_id=nil)
+ object_id ||= "#{singular_table_name}_#{attribute.name}"
+ object_id = object_id.gsub('#', "\#{#{singular_table_name}.id}").gsub('name', attribute.name)
+ case attribute.type
+ when :boolean then "check \"#{object_id}\" if #{singular_table_name}.#{attribute.name}"
+ when :references, :belongs_to then "select #{singular_table_name}.#{attribute.name}.name, :from => \"#{object_id}_id\""
+ when :datetime, :time, :timestamp
+ then ""
+ when :date then "fill_in \"#{object_id}\", :with => #{singular_table_name}.#{attribute.name}.strftime('%d-%m-%Y')"
+ else "fill_in \"#{object_id}\", :with => #{singular_table_name}.#{attribute.name}"
+ end
+ end
+ #def attribute_to_erb(attribute, object)
+ # case attribute.name
+ # when "state" then "<span class=\"state generic <%= #{object}.state_name.to_s %>\"><%= t(\"states.generic.\#{#{object}.state_name.to_s}\") %></span><span style=\"display:block;\"></span>"
+ # else
+ # case attribute.type
+ # when :boolean then "<%= #{object}.#{attribute.name} ? style_image_tag(\"ico_v.png\", :class => \"ico_true\") : style_image_tag(\"ico_x.png\", :class => \"ico_false\") %>"
+ # when :references, :belongs_to then "<%= link_to(#{object}.#{attribute.name}.try(:name) || \"#\#{#{object}.#{attribute.name}.try(:id)}\", #{object}.#{attribute.name}, :remote => @remote) %>"
+ # when :integer then "<%= number_with_delimiter #{object}.#{attribute.name} %>"
+ # when :decimal then "<%= number_to_currency #{object}.#{attribute.name} %>"
+ # when :float then "<%= number_with_precision #{object}.#{attribute.name} %>"
+ # when :date then "<%= #{object}.#{attribute.name}.strftime('%d-%m-%Y') if #{object}.#{attribute.name} %>"
+ # when :datetime then "<%= #{object}.#{attribute.name}.strftime('%d-%m-%Y %H:%M:%S') if #{object}.#{attribute.name} %>"
+ # when :time, :timestamp then "<%= #{object}.#{attribute.name}.strftime('%H:%M:%S') if #{object}.#{attribute.name} %>"
+ # else "<%= #{object}.#{attribute.name} %>"
+ # end
+ # end
+ #end
+ def get_attr_to_match(view=:list)
+ #attributes.each do |attribute|
+ # case attribute.type
+ # when :string, :text then
+ # return "have_content(#{singular_table_name}.#{attribute.name})",
+ # "have_no_content(#{singular_table_name}.#{attribute.name})"
+ # end
+ #end
+ attr = get_attr_to_check(view)
+ return "have_content(#{singular_table_name}.#{attr})",
+ "have_no_content(#{singular_table_name}.#{attr})" if attr
+
+ #If there are not string or text attributes
+ case view
+ when :list
+ return "have_xpath('//table/tbody/tr')", "have_no_xpath('//table/tbody/tr')"
+ when :show
+ return "have_xpath('//table/tbody/tr')", "have_no_xpath('//table/tbody/tr')"
+ end
+ end
+ def get_attr_to_check(view=:list)
+ case view
+ when :something
+ else
+ attributes.each{|a| case a.type when :string, :text then return a.name end}
+ attributes.each{|a| case a.type when :references, :belongs_to, :datetime then nil else return a.name end}
+ end
+ end
+ def fill_form_with_values(object_id=nil)
+ items = []
+ attributes.each{|a|items << " #{attribute_to_requests(a, object_id)}"}
+ items
+ end
+ end
+
+ #module Nested
+ # protected
+ #
+ # #Add leonardo namespace to class_path
+ # #def class_path
+ # # super + base_namespaces
+ # #end
+ #
+ # #product => products_path
+ # #product under category => category_products_path(@category)
+ # #product under brand/category => brand_category_products_path(@brand, @category)
+ # def list_resources_path
+ # "#{underscore_resource_path(:parent_singular_resource_plural)}_path(#{formatted_parent_resources("@")})"
+ # end
+ #
+ # #product under category => category_products_path(category)
+ # #product under brand/category => brand_category_products_path(@brand, category)
+ # #TODO: figure out how to build links for a particular resource in the path
+ # def list_resources_path_back
+ # return unless nested?
+ # "#{underscore_resource_path(:parent_singular_resource_plural)}_path(#{formatted_parent_resources("@").reverse.sub(/@/, "").reverse})"
+ # end
+ #
+ # #product => "product"
+ # #product under category => "[@category, product]"
+ # #product under brand/category => "[@brand, @category, product]"
+ # def destroy_resource_path(prefix_resource="")
+ # formatted_resource_path("@", prefix_resource, "[]")
+ # end
+ #
+ # #product => "product"
+ # #product under category => "[@category, product]"
+ # #product under brand/category => "[@brand, @category, product]"
+ # def show_resource_path(prefix_resource="")
+ # formatted_resource_path("@", prefix_resource, "[]")
+ # end
+ #
+ # #product => "@product"
+ # #product under category => "[@category, @product]"
+ # #product under brand/category => "[@brand, @category, @product]"
+ # def form_resource_path
+ # formatted_resource_path("@", "@", "[]")
+ # end
+ #
+ # #product => new_product_path
+ # #product under category => new_category_product_path(@category)
+ # #product under brand/category => new_brand_category_product_path(@brand, @category)
+ # def new_resource_path
+ # "new_#{underscore_resource_path}_path(#{formatted_parent_resources("@")})"
+ # end
+ #
+ # #product => edit_product_path(@product)
+ # #product under category => edit_category_product_path(@category, @product)
+ # #product under brand/category => edit_brand_category_product_path(@brand, @category, @product)
+ # def edit_resource_path(prefix_resource="")
+ # "edit_#{underscore_resource_path}_path(#{formatted_resource_path("@", prefix_resource)})"
+ # end
+ #
+ # #product under brand/category => "[brand, category, product]" or "[@brand, @category, @product]" or "@brand, @category, @product" or [product.brand, product.category, product]
+ # def formatted_resource_path(prefix_parent="", prefix_resource="", delimiter="", resource=nil)
+ # formatted_resource_base resource_path(prefix_parent, prefix_resource, resource), delimiter
+ # end
+ #
+ # #product under brand/category => "[brand, category]" or "[@brand, @category]" or "@brand, @category" or product.brand, product.category
+ # def formatted_parent_resources(prefix_parent="", delimiter="", resource=nil)
+ # prefix_parent = "#{resource}." if resource
+ # formatted_resource_base parent_resources(prefix_parent), delimiter
+ # end
+ #
+ # def formatted_resource_base(resources, delimiter="")
+ # str_resources = resources.join(', ')
+ # resources.size > 1 ? "#{delimiter[0..0]}#{str_resources}#{delimiter[1..1]}" : str_resources
+ # end
+ #
+ # #product under brand/category => "brand_category_product"
+ # def underscore_resource_path(names=:all_singular)
+ # case names
+ # when :all_singular
+ # resource_path.join('_')
+ # #when :all_plural
+ # #who needs?
+ # when :parent_singular_resource_plural
+ # resource_path.join('_').pluralize
+ # else
+ # "#{names.to_s}_not_supported"
+ # end
+ # end
+ #
+ # #product under brand/category => ["brand", "category", "product"] or ["@brand", "@category", "@product"]
+ # def resource_path(prefix_parent="", prefix_resource="", resource=nil, prefix_namespace="")
+ # if resource
+ # prefix_parent = "#{resource}."
+ # else
+ # resource = singular_table_name
+ # end
+ #
+ # prefix_namespace = ":" if prefix_namespace.empty? && prefix_parent.size>0
+ #
+ # if nested?
+ # (base_namespaces(prefix_namespace) + parent_resources(prefix_parent)) << "#{prefix_resource}#{resource}"
+ # else
+ # base_namespaces(prefix_namespace) << "#{prefix_resource}#{resource}"
+ # end
+ # end
+ #
+ # #product under brand/category => "categories"
+ # def plural_last_parent
+ # plural_parent_resources.last
+ # end
+ #
+ # #product under brand/category => ["brands", "categories"] or ["@brands", "@categories"]
+ # def plural_parent_resources(prefix_parent="")
+ # base_parent_resources.map{|m| "#{prefix_parent}#{m.pluralize}"}
+ # end
+ #
+ # #product under brand/category => ["brand", "category"] or ["@brand", "@category"]
+ # def parent_resources(prefix_parent="")
+ # base_parent_resources.map{|m| "#{prefix_parent}#{m}"}
+ # end
+ #
+ # #product under brand/category => "category"
+ # def last_parent
+ # base_parent_resources.last
+ # end
+ #
+ # #product under brand/category => ["brand", "category"]
+ # def base_parent_resources
+ # return [] unless options[:under].present?
+ # options[:under].split('/').map{|m| m.underscore}
+ # end
+ #
+ # def nested?
+ # options[:under].present?
+ # end
+ #
+ # ### NAMESPACE ###
+ # def leospaced?
+ # options[:leospace].present?
+ # end
+ #
+ # def base_namespaces(prefix="")
+ # return [] unless options[:leospace].present?
+ # options[:leospace].split('/').map{|m| "#{prefix}#{m.underscore}"}
+ # end
+ #
+ # def last_namespace(prefix="")
+ # base_namespaces(prefix).last
+ # end
+ #
+ # def formatted_namespace_path(separator='/')
+ # return "" unless leospaced?
+ # "#{base_namespaces.join(separator)}#{separator}"
+ # end
+ #
+ # module Test
+ # protected
+ # #Add parent(s) param(s) to request
+ # #get :index for a product under category => get :index, :category_id => product.category_id.to_s
+ # def nested_params_http_request(value=nil)
+ # return unless nested?
+ # ", " << base_parent_resources.map{|m| ":#{m}_id => #{value ? value.to_s.inspect : "#{file_name}.#{m}_id.to_s"}"}.join(', ')
+ # end
+ #
+ # #Create new parent(s) and add it to request
+ # #get :index for a product under category => get :index, :category_id => Factory(:category).id.to_s
+ # def nested_params_http_request_new_parent
+ # return unless nested?
+ # ", " << base_parent_resources.map{|m| ":#{m}_id => Factory(:#{m}).id.to_s"}.join(', ')
+ # end
+ #
+ # #product => products_path
+ # #product under category => category_products_path(product.category)
+ # #product under brand/category => brand_category_products_path(product.brand, product.category)
+ # def list_resources_path_test(resource=nil, prefix_parent=nil)
+ # unless prefix_parent
+ # resource ||= singular_table_name
+ # prefix_parent = "#{resource}."
+ # end
+ # "#{underscore_resource_path(:parent_singular_resource_plural)}_path(#{formatted_parent_resources(prefix_parent, "", resource)})"
+ # end
+ #
+ # #product => "product"
+ # #product under category => "[category, product]" or "[product.category, product]"
+ # #product under brand/category => "[brand, category, product]" or "[product.brand, product.category, product]"
+ # def show_resource_path_test(resource=nil, prefix_parent=nil, prefix_resource="")
+ # resource ||= singular_table_name
+ # prefix_parent = prefix_parent || "#{resource}."
+ # formatted_resource_path(prefix_parent, prefix_resource, "[]", resource)
+ # end
+ #
+ # #product => new_product_path
+ # #product under category => new_category_product_path(product.category)
+ # #product under brand/category => new_brand_category_product_path(product.brand, product.category)
+ # def new_resource_path_test(resource=nil, prefix_parent=nil)
+ # resource ||= singular_table_name
+ # prefix_parent = prefix_parent || "#{resource}."
+ # "new_#{underscore_resource_path}_path(#{formatted_parent_resources(prefix_parent, "",resource)})"
+ # end
+ # end
+ #end
+ module Test
+ protected
+ def get_activespace
+ activespace ||= options[:activespace]
+ "#{activespace}_" if activespace
+ end
+
+ #product => activespace_products_path
+ def list_resources_path_test(resource=nil)
+ resource ||= plural_table_name
+ "#{get_activespace}#{resource}_path"
+ end
+
+ #product => "[:activespace, product]"
+ def show_resource_path_test(resource=nil)
+ resource ||= singular_table_name
+ "[:#{options[:activespace]}, #{resource}]"
+ end
+
+ #product => new_activespace_product_path
+ def new_resource_path_test(resource=nil)
+ resource ||= singular_table_name
+ "new_#{get_activespace}#{resource}_path"
+ end
+
+ #product => edit_activespace_product_path
+ def edit_resource_path_test(resource=nil)
+ resource ||= singular_table_name
+ "edit_#{get_activespace}#{resource}_path(#{resource})"
+ end
+ end
end
\ No newline at end of file