added filter criteria models

This commit is contained in:
Edin Dazdarevic
2015-02-07 14:48:02 +01:00
parent 0bb6bb5a49
commit ead0e87e31
25 changed files with 240 additions and 6 deletions

View File

@@ -0,0 +1,5 @@
class FilterCriteriaController < ApplicationController
active_scaffold :"filter_criteria" do |conf|
#conf.columns = [:title, :field_name, :type]
end
end

View File

@@ -0,0 +1,4 @@
class FilterCriteriaValuesController < ApplicationController
active_scaffold :"filter_criteria_value" do |conf|
end
end

View File

@@ -0,0 +1,2 @@
module FilterCriteriaHelper
end

View File

@@ -0,0 +1,2 @@
module FilterCriteriaValuesHelper
end

View File

@@ -1,4 +1,5 @@
class Category < ActiveRecord::Base
has_many :sub_categories
has_many :filter_criterias, as: :owner
belongs_to :section
end

View File

@@ -0,0 +1,9 @@
class FilterCriteria < ActiveRecord::Base
has_many :filter_criteria_values
belongs_to :owner, polymorphic: true
validates_presence_of :title
self.inheritance_column = :_type_disabled
def owner_type=(class_name)
super(class_name.constantize.base_class.to_s)
end
end

View File

@@ -0,0 +1,3 @@
class FilterCriteriaValue < ActiveRecord::Base
belongs_to :filter_criteria
end

View File

@@ -1,3 +1,4 @@
class Section < ActiveRecord::Base
has_many :categories
has_many :filter_criterias, as: :owner
end

View File

@@ -1,5 +1,5 @@
class SubCategory < ActiveRecord::Base
belongs_to :category
has_many :items
has_many :filter_criterias, as: :owner
end

View File

@@ -1,5 +1,7 @@
Rails.application.routes.draw do
resources :filter_criteria_values do as_routes end
resources :filter_criteria do as_routes end
resources :item_in_carts do as_routes end
resources :carts do as_routes end
resources :multi_media_descriptions do as_routes end

View File

@@ -0,0 +1,49 @@
require 'test_helper'
class FilterCriteriaControllerTest < ActionController::TestCase
setup do
@filter_criterium = filter_criteria(:one)
end
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:filter_criteria)
end
test "should get new" do
get :new
assert_response :success
end
test "should create filter_criterium" do
assert_difference('FilterCriterium.count') do
post :create, filter_criterium: { field_name: @filter_criterium.field_name, owner_id: @filter_criterium.owner_id, owner_type: @filter_criterium.owner_type, title: @filter_criterium.title, type: @filter_criterium.type }
end
assert_redirected_to filter_criterium_path(assigns(:filter_criterium))
end
test "should show filter_criterium" do
get :show, id: @filter_criterium
assert_response :success
end
test "should get edit" do
get :edit, id: @filter_criterium
assert_response :success
end
test "should update filter_criterium" do
patch :update, id: @filter_criterium, filter_criterium: { field_name: @filter_criterium.field_name, owner_id: @filter_criterium.owner_id, owner_type: @filter_criterium.owner_type, title: @filter_criterium.title, type: @filter_criterium.type }
assert_redirected_to filter_criterium_path(assigns(:filter_criterium))
end
test "should destroy filter_criterium" do
assert_difference('FilterCriterium.count', -1) do
delete :destroy, id: @filter_criterium
end
assert_redirected_to filter_criteria_path
end
end

View File

@@ -0,0 +1,49 @@
require 'test_helper'
class FilterCriteriaValuesControllerTest < ActionController::TestCase
setup do
@filter_criteria_value = filter_criteria_values(:one)
end
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:filter_criteria_values)
end
test "should get new" do
get :new
assert_response :success
end
test "should create filter_criteria_value" do
assert_difference('FilterCriteriaValue.count') do
post :create, filter_criteria_value: { filter_criteria_id: @filter_criteria_value.filter_criteria_id, filter_text: @filter_criteria_value.filter_text, filter_value: @filter_criteria_value.filter_value }
end
assert_redirected_to filter_criteria_value_path(assigns(:filter_criteria_value))
end
test "should show filter_criteria_value" do
get :show, id: @filter_criteria_value
assert_response :success
end
test "should get edit" do
get :edit, id: @filter_criteria_value
assert_response :success
end
test "should update filter_criteria_value" do
patch :update, id: @filter_criteria_value, filter_criteria_value: { filter_criteria_id: @filter_criteria_value.filter_criteria_id, filter_text: @filter_criteria_value.filter_text, filter_value: @filter_criteria_value.filter_value }
assert_redirected_to filter_criteria_value_path(assigns(:filter_criteria_value))
end
test "should destroy filter_criteria_value" do
assert_difference('FilterCriteriaValue.count', -1) do
delete :destroy, id: @filter_criteria_value
end
assert_redirected_to filter_criteria_values_path
end
end

View File

@@ -0,0 +1,15 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
title: MyString
field_name: MyString
type: 1
owner_type: MyString
owner_id: 1
two:
title: MyString
field_name: MyString
type: 1
owner_type: MyString
owner_id: 1

View File

@@ -0,0 +1,11 @@
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
filter_text: MyString
filter_value: MyString
filter_criteria_id: 1
two:
filter_text: MyString
filter_value: MyString
filter_criteria_id: 1

View File

@@ -0,0 +1,7 @@
require 'test_helper'
class FilterCriteriaValueTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

View File

@@ -0,0 +1,7 @@
require 'test_helper'
class FilterCriteriumTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

View File

@@ -0,0 +1,20 @@
get '/filter/section/:id' do |id_s|
# get filter criteria for a section with id
FilterCriteria.where(:owner_type => "Section").where(:owner_id => id_s.to_i).to_json(
:include => [:filter_criteria_values]
)
end
get '/filter/category/:id' do |id_s|
# get filter criteria for a category with id
FilterCriteria.where(:owner_type => "Category").where(:owner_id => id_s.to_i).to_json(
:include => [:filter_criteria_values]
)
end
get '/filter/subcategory/:id' do |id_s|
# get filter criteria for a subcategory with id
FilterCriteria.where(:owner_type => "Subcategory").where(:owner_id => id_s.to_i).to_json(
:include => [:filter_criteria_values]
)
end

View File

@@ -0,0 +1,11 @@
class CreateFilterCriteria < ActiveRecord::Migration
def change
create_table :filter_criteria do |t|
t.string :title
t.string :field_name
t.integer :type # list, checkbox list
t.string :owner_type # section, cat, subcat
t.integer :owner_id
end
end
end

View File

@@ -0,0 +1,9 @@
class CreateFilterCriteriaValues < ActiveRecord::Migration
def change
create_table :filter_criteria_values do |t|
t.string :filter_text
t.string :filter_value
t.integer :filter_criteria_id
end
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150206041455) do
ActiveRecord::Schema.define(version: 20150207120207) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -30,6 +30,20 @@ ActiveRecord::Schema.define(version: 20150206041455) do
t.string "image_url"
end
create_table "filter_criteria", force: :cascade do |t|
t.string "title"
t.string "field_name"
t.integer "type"
t.integer "owner_type"
t.integer "owner_id"
end
create_table "filter_criteria_values", force: :cascade do |t|
t.string "filter_text"
t.string "filter_value"
t.integer "filter_criteria_id"
end
create_table "item_in_carts", force: :cascade do |t|
t.integer "cart_id"
t.integer "item_id"
@@ -72,10 +86,8 @@ ActiveRecord::Schema.define(version: 20150206041455) do
end
create_table "sub_categories", force: :cascade do |t|
t.string "name"
t.integer "category_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name"
t.integer "category_id"
end
create_table "units", force: :cascade do |t|

View File

@@ -1,4 +1,5 @@
class Category < ActiveRecord::Base
has_many :sub_categories
has_many :filter_criterias, as: :owner
belongs_to :section
end

View File

@@ -0,0 +1,9 @@
class FilterCriteria < ActiveRecord::Base
has_many :filter_criteria_values
belongs_to :owner, polymorphic: true
self.inheritance_column = :_type_disabled
def owner_type=(class_name)
super(class_name.constantize.base_class.to_s)
end
end

View File

@@ -0,0 +1,3 @@
class FilterCriteriaValue < ActiveRecord::Base
belongs_to :filter_criteria
end

View File

@@ -1,3 +1,4 @@
class Section < ActiveRecord::Base
has_many :categories
has_many :filter_criterias, as: :owner
end

View File

@@ -1,5 +1,6 @@
class SubCategory < ActiveRecord::Base
belongs_to :category
has_many :filter_criterias, as: :owner
end