push_type_core 0.3.3 → 0.4.0.beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/concerns/push_type/application_controller_methods.rb +15 -50
- data/app/controllers/concerns/push_type/filterable.rb +69 -0
- data/app/controllers/front_end_controller.rb +1 -33
- data/app/controllers/nodes_front_end_controller.rb +21 -0
- data/app/controllers/taxonomies_front_end_controller.rb +25 -0
- data/app/models/concerns/push_type/nestable.rb +1 -1
- data/app/models/concerns/push_type/publishable.rb +3 -3
- data/app/models/concerns/push_type/templatable.rb +1 -1
- data/app/models/concerns/push_type/unexposable.rb +22 -4
- data/app/models/push_type/taxonomy.rb +39 -0
- data/db/migrate/20141117170533_create_push_type_users.rb +1 -1
- data/db/migrate/20141117204630_create_push_type_nodes.rb +1 -1
- data/db/migrate/20141117210644_create_push_type_node_hierarchies.rb +2 -2
- data/db/migrate/20141127151930_create_push_type_assets.rb +1 -1
- data/db/migrate/20150310115933_create_push_type_taxonomies.rb +18 -0
- data/db/migrate/20150310123230_create_push_type_taxonomy_hierarchies.rb +16 -0
- data/lib/generators/push_type/install/templates/push_type.rb +2 -0
- data/lib/generators/push_type/node/node_generator.rb +1 -1
- data/lib/generators/push_type/taxonomy/USAGE +8 -0
- data/lib/generators/push_type/taxonomy/taxonomy_generator.rb +13 -0
- data/lib/generators/push_type/taxonomy/templates/taxonomy.html.erb +3 -0
- data/lib/generators/push_type/taxonomy/templates/taxonomy.rb +6 -0
- data/lib/push_type/config.rb +3 -0
- data/lib/push_type/core.rb +11 -11
- data/lib/push_type/rails/routes.rb +7 -1
- data/lib/push_type/tag_list_query.rb +1 -1
- data/lib/push_type/testing/common_rake.rb +2 -0
- data/lib/push_type/testing/factories.rb +10 -0
- data/lib/push_type/testing/setup.rb +3 -0
- data/lib/push_type/version.rb +1 -1
- data/test/controllers/{front_end_controller_test.rb → nodes_front_end_controller_test.rb} +8 -7
- data/test/controllers/taxonomies_front_end_controller_test.rb +58 -0
- data/test/dummy/app/models/category.rb +6 -0
- data/test/dummy/app/views/taxonomies/category.html.erb +3 -0
- data/test/dummy/config/initializers/push_type.rb +3 -1
- data/test/dummy/config/secrets.yml +2 -2
- data/test/dummy/db/migrate/{20150310192149_create_push_type_users.push_type.rb → 20150406131539_create_push_type_users.push_type.rb} +1 -1
- data/test/dummy/db/migrate/{20150310192150_create_push_type_nodes.push_type.rb → 20150406131540_create_push_type_nodes.push_type.rb} +1 -1
- data/test/dummy/db/migrate/{20150310192151_create_push_type_node_hierarchies.push_type.rb → 20150406131541_create_push_type_node_hierarchies.push_type.rb} +2 -2
- data/test/dummy/db/migrate/{20150310192152_create_push_type_assets.push_type.rb → 20150406131542_create_push_type_assets.push_type.rb} +1 -1
- data/test/dummy/db/migrate/20150406131543_create_push_type_taxonomies.push_type.rb +19 -0
- data/test/dummy/db/migrate/20150406131544_create_push_type_taxonomy_hierarchies.push_type.rb +17 -0
- data/test/dummy/db/schema.rb +29 -9
- data/test/dummy/log/test.log +2963 -2021
- data/test/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/generators/app/presenters/page_presenter.rb +12 -0
- data/test/lib/generators/push_type/taxonomy_generator_test.rb +17 -0
- data/test/lib/push_type/core_test.rb +64 -39
- data/test/models/concerns/push_type/templatable_test.rb +3 -3
- data/test/models/concerns/push_type/unexposable_test.rb +30 -10
- data/test/models/push_type/taxonomy_test.rb +35 -0
- metadata +41 -19
- data/test/dummy/tmp/generators/config/initializers/push_type.rb +0 -36
- data/test/dummy/tmp/generators/config/routes.rb +0 -59
- /data/lib/generators/push_type/node/templates/{template.html.erb → node.html.erb} +0 -0
@@ -1,13 +1,13 @@
|
|
1
1
|
require "test_helper"
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
3
|
+
describe NodesFrontEndController do
|
4
|
+
|
5
5
|
before { @routes = Rails.application.routes }
|
6
|
-
|
7
|
-
describe 'GET #
|
6
|
+
|
7
|
+
describe 'GET #show' do
|
8
8
|
let(:page) { Page.create attributes }
|
9
9
|
let(:permalink) { page.permalink }
|
10
|
-
let(:action!) { get :
|
10
|
+
let(:action!) { get :show, permalink: permalink }
|
11
11
|
|
12
12
|
describe 'when node does not exist' do
|
13
13
|
let(:permalink) { 'does/not/exist' }
|
@@ -32,6 +32,7 @@ describe FrontEndController do
|
|
32
32
|
before_node_load { @foo = {} }
|
33
33
|
before_node_action { @foo[:node_action] = true }
|
34
34
|
before_node_action(only: :page) { @foo[:page_action] = true }
|
35
|
+
before_node_action(only: :foo) { @foo[:foo_action] = true }
|
35
36
|
before_node_action(except: :page) { @foo[:except_page_action] = true }
|
36
37
|
before_node_action(except: :foo) { @foo[:except_foo_action] = true }
|
37
38
|
before_node_action :test_1, :test_2
|
@@ -44,7 +45,7 @@ describe FrontEndController do
|
|
44
45
|
end
|
45
46
|
end
|
46
47
|
let(:page) { FactoryGirl.create :published_node, type: 'Page' }
|
47
|
-
before { get :
|
48
|
+
before { get :show, permalink: page.permalink }
|
48
49
|
it { assigns[:foo].must_be_instance_of Hash }
|
49
50
|
it { assigns[:foo][:node_action].must_equal true }
|
50
51
|
it { assigns[:foo][:page_action].must_equal true }
|
@@ -55,4 +56,4 @@ describe FrontEndController do
|
|
55
56
|
it { assigns[:foo][:test_2].must_equal true }
|
56
57
|
end
|
57
58
|
|
58
|
-
end
|
59
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe TaxonomiesFrontEndController do
|
4
|
+
|
5
|
+
before { @routes = Rails.application.routes }
|
6
|
+
|
7
|
+
describe 'GET #show' do
|
8
|
+
let(:category) { Category.create FactoryGirl.attributes_for(:taxonomy) }
|
9
|
+
let(:taxonomy) { category.base_slug }
|
10
|
+
let(:permalink) { category.slug }
|
11
|
+
let(:action!) { get :show, taxonomy: taxonomy, permalink: permalink }
|
12
|
+
|
13
|
+
describe 'when taxonomy class does not exist' do
|
14
|
+
let(:taxonomy) { 'noop' }
|
15
|
+
it { proc { action! }.must_raise ActiveRecord::RecordNotFound }
|
16
|
+
end
|
17
|
+
describe 'when taxonomy term does not exist' do
|
18
|
+
let(:permalink) { 'does/not/exist' }
|
19
|
+
it { proc { action! }.must_raise ActiveRecord::RecordNotFound }
|
20
|
+
end
|
21
|
+
describe 'when taxonomy term does exist' do
|
22
|
+
before { action! }
|
23
|
+
it { response.must_render_template 'taxonomies/category' }
|
24
|
+
it { assigns[:taxonomy].must_equal category }
|
25
|
+
it { assigns[:category].must_equal category }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'taxonomy filters' do
|
30
|
+
ApplicationController.module_eval do
|
31
|
+
before_taxonomy_load { @foo = {} }
|
32
|
+
before_taxonomy_action { @foo[:taxonomy_action] = true }
|
33
|
+
before_taxonomy_action(only: :category) { @foo[:category_action] = true }
|
34
|
+
before_taxonomy_action(only: :foo) { @foo[:foo_action] = true }
|
35
|
+
before_taxonomy_action(except: :category) { @foo[:except_category_action] = true }
|
36
|
+
before_taxonomy_action(except: :foo) { @foo[:except_foo_action] = true }
|
37
|
+
before_taxonomy_action :test_1, :test_2
|
38
|
+
private
|
39
|
+
def test_1
|
40
|
+
@foo[:test_1] = true
|
41
|
+
end
|
42
|
+
def test_2
|
43
|
+
@foo[:test_2] = true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
let(:category) { Category.create FactoryGirl.attributes_for(:taxonomy) }
|
47
|
+
before { get :show, taxonomy: category.base_slug, permalink: category.slug }
|
48
|
+
it { assigns[:foo].must_be_instance_of Hash }
|
49
|
+
it { assigns[:foo][:taxonomy_action].must_equal true }
|
50
|
+
it { assigns[:foo][:category_action].must_equal true }
|
51
|
+
it { assigns[:foo][:foo_action].wont_be :present? }
|
52
|
+
it { assigns[:foo][:except_category_action].wont_be :present? }
|
53
|
+
it { assigns[:foo][:except_foo_action].must_equal true }
|
54
|
+
it { assigns[:foo][:test_1].must_equal true }
|
55
|
+
it { assigns[:foo][:test_2].must_equal true }
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -6,6 +6,8 @@ PushType.setup do |config|
|
|
6
6
|
|
7
7
|
config.home_slug = 'home'
|
8
8
|
|
9
|
+
config.unexposed_taxonomies = []
|
10
|
+
|
9
11
|
config.media_styles = {
|
10
12
|
large: '1024x1024>',
|
11
13
|
medium: '512x512>',
|
@@ -31,6 +33,6 @@ PushType.setup do |config|
|
|
31
33
|
# secret_access_key: ENV['SECRET_ACCESS_KEY_ID']
|
32
34
|
# }
|
33
35
|
|
34
|
-
# config.dragonfly_secret = '
|
36
|
+
# config.dragonfly_secret = '4680f3462c2db9165bc66a98f999e9379131ac94ac6a079cb840bd2bc4c24218'
|
35
37
|
|
36
38
|
end
|
@@ -11,10 +11,10 @@
|
|
11
11
|
# if you're sharing your code publicly.
|
12
12
|
|
13
13
|
development:
|
14
|
-
secret_key_base:
|
14
|
+
secret_key_base: 21a067d3f6f8a04cad3168303419df414458f19da8d16f9e19def525d16297f7260af003a97addf582b14901fdaea40da9c442969da6aefba4a8f5b2f077974b
|
15
15
|
|
16
16
|
test:
|
17
|
-
secret_key_base:
|
17
|
+
secret_key_base: 37d037b11e63b6ed1d1f3a818744fc86260a0b9f024f700356fa4358184aeb68e60505b3caa817252d24e05baf7fe3a853f059f0ac8cc4c29d5a02dd3c8dc600
|
18
18
|
|
19
19
|
# Do not keep production secrets in the repository,
|
20
20
|
# instead read values from the environment.
|
@@ -9,9 +9,9 @@ class CreatePushTypeNodeHierarchies < ActiveRecord::Migration
|
|
9
9
|
|
10
10
|
add_index :push_type_node_hierarchies, [:ancestor_id, :descendant_id, :generations],
|
11
11
|
unique: true,
|
12
|
-
name: "
|
12
|
+
name: "node_anc_desc_idx"
|
13
13
|
|
14
14
|
add_index :push_type_node_hierarchies, [:descendant_id],
|
15
|
-
name: "
|
15
|
+
name: "node_desc_idx"
|
16
16
|
end
|
17
17
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# This migration comes from push_type (originally 20150310115933)
|
2
|
+
class CreatePushTypeTaxonomies < ActiveRecord::Migration
|
3
|
+
def change
|
4
|
+
enable_extension 'uuid-ossp' unless extension_enabled?('uuid-ossp')
|
5
|
+
create_table :push_type_taxonomies, id: :uuid, default: 'uuid_generate_v4()' do |t|
|
6
|
+
t.string :type
|
7
|
+
t.string :title
|
8
|
+
t.string :slug
|
9
|
+
|
10
|
+
t.uuid :parent_id
|
11
|
+
t.integer :sort_order
|
12
|
+
|
13
|
+
t.timestamps null: false
|
14
|
+
end
|
15
|
+
|
16
|
+
# Also add a tags array to Assets
|
17
|
+
add_column :push_type_assets, :tags, :string, array: true
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# This migration comes from push_type (originally 20150310123230)
|
2
|
+
class CreatePushTypeTaxonomyHierarchies < ActiveRecord::Migration
|
3
|
+
def change
|
4
|
+
create_table :push_type_taxonomy_hierarchies, id: false do |t|
|
5
|
+
t.uuid :ancestor_id, null: false
|
6
|
+
t.uuid :descendant_id, null: false
|
7
|
+
t.integer :generations, null: false
|
8
|
+
end
|
9
|
+
|
10
|
+
add_index :push_type_taxonomy_hierarchies, [:ancestor_id, :descendant_id, :generations],
|
11
|
+
unique: true,
|
12
|
+
name: "taxonomy_anc_desc_idx"
|
13
|
+
|
14
|
+
add_index :push_type_taxonomy_hierarchies, [:descendant_id],
|
15
|
+
name: "taxonomy_desc_idx"
|
16
|
+
end
|
17
|
+
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20150406131544) do
|
15
15
|
|
16
16
|
# These are extensions that must be enabled in order to support this database
|
17
17
|
enable_extension "plpgsql"
|
@@ -25,9 +25,10 @@ ActiveRecord::Schema.define(version: 20150310192152) do
|
|
25
25
|
t.string "mime_type"
|
26
26
|
t.string "description"
|
27
27
|
t.uuid "uploader_id"
|
28
|
-
t.datetime "created_at"
|
29
|
-
t.datetime "updated_at"
|
28
|
+
t.datetime "created_at", null: false
|
29
|
+
t.datetime "updated_at", null: false
|
30
30
|
t.datetime "deleted_at"
|
31
|
+
t.string "tags", array: true
|
31
32
|
end
|
32
33
|
|
33
34
|
create_table "push_type_node_hierarchies", id: false, force: :cascade do |t|
|
@@ -36,8 +37,8 @@ ActiveRecord::Schema.define(version: 20150310192152) do
|
|
36
37
|
t.integer "generations", null: false
|
37
38
|
end
|
38
39
|
|
39
|
-
add_index "push_type_node_hierarchies", ["ancestor_id", "descendant_id", "generations"], name: "
|
40
|
-
add_index "push_type_node_hierarchies", ["descendant_id"], name: "
|
40
|
+
add_index "push_type_node_hierarchies", ["ancestor_id", "descendant_id", "generations"], name: "node_anc_desc_idx", unique: true, using: :btree
|
41
|
+
add_index "push_type_node_hierarchies", ["descendant_id"], name: "node_desc_idx", using: :btree
|
41
42
|
|
42
43
|
create_table "push_type_nodes", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
|
43
44
|
t.string "type"
|
@@ -51,17 +52,36 @@ ActiveRecord::Schema.define(version: 20150310192152) do
|
|
51
52
|
t.datetime "published_to"
|
52
53
|
t.uuid "creator_id"
|
53
54
|
t.uuid "updater_id"
|
54
|
-
t.datetime "created_at"
|
55
|
-
t.datetime "updated_at"
|
55
|
+
t.datetime "created_at", null: false
|
56
|
+
t.datetime "updated_at", null: false
|
56
57
|
t.datetime "deleted_at"
|
57
58
|
end
|
58
59
|
|
60
|
+
create_table "push_type_taxonomies", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
|
61
|
+
t.string "type"
|
62
|
+
t.string "title"
|
63
|
+
t.string "slug"
|
64
|
+
t.uuid "parent_id"
|
65
|
+
t.integer "sort_order"
|
66
|
+
t.datetime "created_at", null: false
|
67
|
+
t.datetime "updated_at", null: false
|
68
|
+
end
|
69
|
+
|
70
|
+
create_table "push_type_taxonomy_hierarchies", id: false, force: :cascade do |t|
|
71
|
+
t.uuid "ancestor_id", null: false
|
72
|
+
t.uuid "descendant_id", null: false
|
73
|
+
t.integer "generations", null: false
|
74
|
+
end
|
75
|
+
|
76
|
+
add_index "push_type_taxonomy_hierarchies", ["ancestor_id", "descendant_id", "generations"], name: "taxonomy_anc_desc_idx", unique: true, using: :btree
|
77
|
+
add_index "push_type_taxonomy_hierarchies", ["descendant_id"], name: "taxonomy_desc_idx", using: :btree
|
78
|
+
|
59
79
|
create_table "push_type_users", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
|
60
80
|
t.string "name"
|
61
81
|
t.string "email"
|
62
82
|
t.jsonb "field_store"
|
63
|
-
t.datetime "created_at"
|
64
|
-
t.datetime "updated_at"
|
83
|
+
t.datetime "created_at", null: false
|
84
|
+
t.datetime "updated_at", null: false
|
65
85
|
end
|
66
86
|
|
67
87
|
end
|