From ead0e87e310686d8c6bddd5ec2ea01d7a172bc5f Mon Sep 17 00:00:00 2001 From: Edin Dazdarevic Date: Sat, 7 Feb 2015 14:48:02 +0100 Subject: [PATCH] added filter criteria models --- .../controllers/filter_criteria_controller.rb | 5 ++ .../filter_criteria_values_controller.rb | 4 ++ .../app/helpers/filter_criteria_helper.rb | 2 + .../helpers/filter_criteria_values_helper.rb | 2 + back-office/app/models/category.rb | 1 + back-office/app/models/filter_criteria.rb | 9 ++++ .../app/models/filter_criteria_value.rb | 3 ++ back-office/app/models/section.rb | 1 + back-office/app/models/sub_category.rb | 2 +- back-office/config/routes.rb | 2 + .../filter_criteria_controller_test.rb | 49 +++++++++++++++++++ .../filter_criteria_values_controller_test.rb | 49 +++++++++++++++++++ back-office/test/fixtures/filter_criteria.yml | 15 ++++++ .../test/fixtures/filter_criteria_values.yml | 11 +++++ .../test/models/filter_criteria_value_test.rb | 7 +++ .../test/models/filter_criterium_test.rb | 7 +++ front-api/controllers/filter_criteria.rb | 20 ++++++++ .../20150207115622_create_filter_criteria.rb | 11 +++++ ...207120207_create_filter_criteria_values.rb | 9 ++++ front-api/db/schema.rb | 22 +++++++-- front-api/models/category.rb | 1 + front-api/models/filter_criteria.rb | 9 ++++ front-api/models/filter_criteria_value.rb | 3 ++ front-api/models/section.rb | 1 + front-api/models/sub_category.rb | 1 + 25 files changed, 240 insertions(+), 6 deletions(-) create mode 100644 back-office/app/controllers/filter_criteria_controller.rb create mode 100644 back-office/app/controllers/filter_criteria_values_controller.rb create mode 100644 back-office/app/helpers/filter_criteria_helper.rb create mode 100644 back-office/app/helpers/filter_criteria_values_helper.rb create mode 100644 back-office/app/models/filter_criteria.rb create mode 100644 back-office/app/models/filter_criteria_value.rb create mode 100644 back-office/test/controllers/filter_criteria_controller_test.rb create mode 100644 back-office/test/controllers/filter_criteria_values_controller_test.rb create mode 100644 back-office/test/fixtures/filter_criteria.yml create mode 100644 back-office/test/fixtures/filter_criteria_values.yml create mode 100644 back-office/test/models/filter_criteria_value_test.rb create mode 100644 back-office/test/models/filter_criterium_test.rb create mode 100644 front-api/controllers/filter_criteria.rb create mode 100644 front-api/db/migrate/20150207115622_create_filter_criteria.rb create mode 100644 front-api/db/migrate/20150207120207_create_filter_criteria_values.rb create mode 100644 front-api/models/filter_criteria.rb create mode 100644 front-api/models/filter_criteria_value.rb diff --git a/back-office/app/controllers/filter_criteria_controller.rb b/back-office/app/controllers/filter_criteria_controller.rb new file mode 100644 index 0000000..2c8fd66 --- /dev/null +++ b/back-office/app/controllers/filter_criteria_controller.rb @@ -0,0 +1,5 @@ +class FilterCriteriaController < ApplicationController + active_scaffold :"filter_criteria" do |conf| + #conf.columns = [:title, :field_name, :type] + end +end diff --git a/back-office/app/controllers/filter_criteria_values_controller.rb b/back-office/app/controllers/filter_criteria_values_controller.rb new file mode 100644 index 0000000..7db6c47 --- /dev/null +++ b/back-office/app/controllers/filter_criteria_values_controller.rb @@ -0,0 +1,4 @@ +class FilterCriteriaValuesController < ApplicationController + active_scaffold :"filter_criteria_value" do |conf| + end +end diff --git a/back-office/app/helpers/filter_criteria_helper.rb b/back-office/app/helpers/filter_criteria_helper.rb new file mode 100644 index 0000000..a640822 --- /dev/null +++ b/back-office/app/helpers/filter_criteria_helper.rb @@ -0,0 +1,2 @@ +module FilterCriteriaHelper +end \ No newline at end of file diff --git a/back-office/app/helpers/filter_criteria_values_helper.rb b/back-office/app/helpers/filter_criteria_values_helper.rb new file mode 100644 index 0000000..109663b --- /dev/null +++ b/back-office/app/helpers/filter_criteria_values_helper.rb @@ -0,0 +1,2 @@ +module FilterCriteriaValuesHelper +end \ No newline at end of file diff --git a/back-office/app/models/category.rb b/back-office/app/models/category.rb index df3f6f4..7776a29 100644 --- a/back-office/app/models/category.rb +++ b/back-office/app/models/category.rb @@ -1,4 +1,5 @@ class Category < ActiveRecord::Base has_many :sub_categories + has_many :filter_criterias, as: :owner belongs_to :section end diff --git a/back-office/app/models/filter_criteria.rb b/back-office/app/models/filter_criteria.rb new file mode 100644 index 0000000..493ac63 --- /dev/null +++ b/back-office/app/models/filter_criteria.rb @@ -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 diff --git a/back-office/app/models/filter_criteria_value.rb b/back-office/app/models/filter_criteria_value.rb new file mode 100644 index 0000000..21e12eb --- /dev/null +++ b/back-office/app/models/filter_criteria_value.rb @@ -0,0 +1,3 @@ +class FilterCriteriaValue < ActiveRecord::Base + belongs_to :filter_criteria +end diff --git a/back-office/app/models/section.rb b/back-office/app/models/section.rb index d255568..a7e20fb 100644 --- a/back-office/app/models/section.rb +++ b/back-office/app/models/section.rb @@ -1,3 +1,4 @@ class Section < ActiveRecord::Base has_many :categories + has_many :filter_criterias, as: :owner end diff --git a/back-office/app/models/sub_category.rb b/back-office/app/models/sub_category.rb index 4d75b06..a1479c3 100644 --- a/back-office/app/models/sub_category.rb +++ b/back-office/app/models/sub_category.rb @@ -1,5 +1,5 @@ class SubCategory < ActiveRecord::Base belongs_to :category has_many :items - + has_many :filter_criterias, as: :owner end diff --git a/back-office/config/routes.rb b/back-office/config/routes.rb index f8f4082..07400b6 100644 --- a/back-office/config/routes.rb +++ b/back-office/config/routes.rb @@ -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 diff --git a/back-office/test/controllers/filter_criteria_controller_test.rb b/back-office/test/controllers/filter_criteria_controller_test.rb new file mode 100644 index 0000000..dbbb3e8 --- /dev/null +++ b/back-office/test/controllers/filter_criteria_controller_test.rb @@ -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 diff --git a/back-office/test/controllers/filter_criteria_values_controller_test.rb b/back-office/test/controllers/filter_criteria_values_controller_test.rb new file mode 100644 index 0000000..1484459 --- /dev/null +++ b/back-office/test/controllers/filter_criteria_values_controller_test.rb @@ -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 diff --git a/back-office/test/fixtures/filter_criteria.yml b/back-office/test/fixtures/filter_criteria.yml new file mode 100644 index 0000000..3b3c4d8 --- /dev/null +++ b/back-office/test/fixtures/filter_criteria.yml @@ -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 diff --git a/back-office/test/fixtures/filter_criteria_values.yml b/back-office/test/fixtures/filter_criteria_values.yml new file mode 100644 index 0000000..bd97020 --- /dev/null +++ b/back-office/test/fixtures/filter_criteria_values.yml @@ -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 diff --git a/back-office/test/models/filter_criteria_value_test.rb b/back-office/test/models/filter_criteria_value_test.rb new file mode 100644 index 0000000..2d94b7f --- /dev/null +++ b/back-office/test/models/filter_criteria_value_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class FilterCriteriaValueTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/back-office/test/models/filter_criterium_test.rb b/back-office/test/models/filter_criterium_test.rb new file mode 100644 index 0000000..f609a26 --- /dev/null +++ b/back-office/test/models/filter_criterium_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class FilterCriteriumTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/front-api/controllers/filter_criteria.rb b/front-api/controllers/filter_criteria.rb new file mode 100644 index 0000000..8c08288 --- /dev/null +++ b/front-api/controllers/filter_criteria.rb @@ -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 diff --git a/front-api/db/migrate/20150207115622_create_filter_criteria.rb b/front-api/db/migrate/20150207115622_create_filter_criteria.rb new file mode 100644 index 0000000..fd0b0da --- /dev/null +++ b/front-api/db/migrate/20150207115622_create_filter_criteria.rb @@ -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 diff --git a/front-api/db/migrate/20150207120207_create_filter_criteria_values.rb b/front-api/db/migrate/20150207120207_create_filter_criteria_values.rb new file mode 100644 index 0000000..a7df129 --- /dev/null +++ b/front-api/db/migrate/20150207120207_create_filter_criteria_values.rb @@ -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 diff --git a/front-api/db/schema.rb b/front-api/db/schema.rb index 6637eda..ee35fb4 100644 --- a/front-api/db/schema.rb +++ b/front-api/db/schema.rb @@ -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| diff --git a/front-api/models/category.rb b/front-api/models/category.rb index df3f6f4..7776a29 100644 --- a/front-api/models/category.rb +++ b/front-api/models/category.rb @@ -1,4 +1,5 @@ class Category < ActiveRecord::Base has_many :sub_categories + has_many :filter_criterias, as: :owner belongs_to :section end diff --git a/front-api/models/filter_criteria.rb b/front-api/models/filter_criteria.rb new file mode 100644 index 0000000..9529a5d --- /dev/null +++ b/front-api/models/filter_criteria.rb @@ -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 diff --git a/front-api/models/filter_criteria_value.rb b/front-api/models/filter_criteria_value.rb new file mode 100644 index 0000000..21e12eb --- /dev/null +++ b/front-api/models/filter_criteria_value.rb @@ -0,0 +1,3 @@ +class FilterCriteriaValue < ActiveRecord::Base + belongs_to :filter_criteria +end diff --git a/front-api/models/section.rb b/front-api/models/section.rb index d255568..a7e20fb 100644 --- a/front-api/models/section.rb +++ b/front-api/models/section.rb @@ -1,3 +1,4 @@ class Section < ActiveRecord::Base has_many :categories + has_many :filter_criterias, as: :owner end diff --git a/front-api/models/sub_category.rb b/front-api/models/sub_category.rb index 9bab403..9d779fe 100644 --- a/front-api/models/sub_category.rb +++ b/front-api/models/sub_category.rb @@ -1,5 +1,6 @@ class SubCategory < ActiveRecord::Base belongs_to :category + has_many :filter_criterias, as: :owner end