constructor-pages 0.2.1
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.
- data/app/assets/images/constructor_pages/arrow_down.png +0 -0
- data/app/assets/images/constructor_pages/arrow_up.png +0 -0
- data/app/assets/images/constructor_pages/information.png +0 -0
- data/app/assets/images/constructor_pages/page_white_edit.png +0 -0
- data/app/assets/images/constructor_pages/photos.png +0 -0
- data/app/controllers/constructor_pages/fields_controller.rb +60 -0
- data/app/controllers/constructor_pages/pages_controller.rb +207 -0
- data/app/controllers/constructor_pages/templates_controller.rb +71 -0
- data/app/helpers/constructor_pages/fields_helper.rb +18 -0
- data/app/helpers/constructor_pages/pages_helper.rb +15 -0
- data/app/helpers/constructor_pages/templates_helper.rb +11 -0
- data/app/models/constructor_pages/field.rb +60 -0
- data/app/models/constructor_pages/page.rb +117 -0
- data/app/models/constructor_pages/template.rb +30 -0
- data/app/models/constructor_pages/types/boolean_type.rb +12 -0
- data/app/models/constructor_pages/types/date_type.rb +16 -0
- data/app/models/constructor_pages/types/float_type.rb +12 -0
- data/app/models/constructor_pages/types/html_type.rb +12 -0
- data/app/models/constructor_pages/types/image_type.rb +18 -0
- data/app/models/constructor_pages/types/integer_type.rb +12 -0
- data/app/models/constructor_pages/types/string_type.rb +12 -0
- data/app/models/constructor_pages/types/text_type.rb +12 -0
- data/app/views/constructor_pages/fields/_form.haml +28 -0
- data/app/views/constructor_pages/fields/edit.haml +6 -0
- data/app/views/constructor_pages/fields/new.haml +6 -0
- data/app/views/constructor_pages/fields/types/_boolean.haml +1 -0
- data/app/views/constructor_pages/fields/types/_date.haml +1 -0
- data/app/views/constructor_pages/fields/types/_float.haml +1 -0
- data/app/views/constructor_pages/fields/types/_html.haml +1 -0
- data/app/views/constructor_pages/fields/types/_image.haml +4 -0
- data/app/views/constructor_pages/fields/types/_integer.haml +1 -0
- data/app/views/constructor_pages/fields/types/_string.haml +1 -0
- data/app/views/constructor_pages/fields/types/_text.haml +1 -0
- data/app/views/constructor_pages/pages/_breadcrumbs.haml +7 -0
- data/app/views/constructor_pages/pages/_form.haml +98 -0
- data/app/views/constructor_pages/pages/_menu.haml +8 -0
- data/app/views/constructor_pages/pages/_submenu.haml +6 -0
- data/app/views/constructor_pages/pages/edit.haml +6 -0
- data/app/views/constructor_pages/pages/error_404.haml +23 -0
- data/app/views/constructor_pages/pages/index.haml +50 -0
- data/app/views/constructor_pages/pages/new.haml +6 -0
- data/app/views/constructor_pages/pages/show.haml +5 -0
- data/app/views/constructor_pages/pages/sitemap.haml +12 -0
- data/app/views/constructor_pages/templates/_form.haml +48 -0
- data/app/views/constructor_pages/templates/edit.haml +6 -0
- data/app/views/constructor_pages/templates/index.haml +38 -0
- data/app/views/constructor_pages/templates/new.haml +6 -0
- data/config/initializers/dragonfly.rb +9 -0
- data/config/locales/ru.yml +39 -0
- data/config/routes.rb +34 -0
- data/constructor-pages.gemspec +21 -0
- data/db/migrate/10_create_html_types.rb +15 -0
- data/db/migrate/11_create_image_types.rb +16 -0
- data/db/migrate/12_add_default_template.rb +13 -0
- data/db/migrate/1_create_pages.rb +27 -0
- data/db/migrate/2_create_templates.rb +18 -0
- data/db/migrate/3_create_fields.rb +17 -0
- data/db/migrate/4_create_string_types.rb +15 -0
- data/db/migrate/5_create_float_types.rb +15 -0
- data/db/migrate/6_create_boolean_types.rb +15 -0
- data/db/migrate/7_create_integer_types.rb +15 -0
- data/db/migrate/8_create_text_types.rb +15 -0
- data/db/migrate/9_create_date_types.rb +15 -0
- data/lib/constructor-pages.rb +7 -0
- data/lib/constructor_pages/engine.rb +6 -0
- data/public/hello.txt +1 -0
- data/spec/factories.rb +7 -0
- data/spec/models/page_model_spec.rb +113 -0
- metadata +210 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateFields < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table ConstructorPages::Field.table_name do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :code_name
|
6
|
+
t.string :type_value
|
7
|
+
t.integer :position
|
8
|
+
t.references :template
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.down
|
15
|
+
drop_table ConstructorPages::Field.table_name
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateStringTypes < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table ConstructorPages::Types::StringType.table_name do |t|
|
4
|
+
t.string :value, :default => ""
|
5
|
+
t.references :field
|
6
|
+
t.references :page
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table ConstructorPages::Types::StringType.table_name
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateFloatTypes < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table ConstructorPages::Types::FloatType.table_name do |t|
|
4
|
+
t.float :value, :default => 0.0
|
5
|
+
t.references :field
|
6
|
+
t.references :page
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table ConstructorPages::Types::FloatType.table_name
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateBooleanTypes < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table ConstructorPages::Types::BooleanType.table_name do |t|
|
4
|
+
t.boolean :value, :default => false
|
5
|
+
t.references :field
|
6
|
+
t.references :page
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table ConstructorPages::Types::BooleanType.table_name
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateIntegerTypes < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table ConstructorPages::Types::IntegerType.table_name do |t|
|
4
|
+
t.integer :value, :default => 0
|
5
|
+
t.references :field
|
6
|
+
t.references :page
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table ConstructorPages::Types::IntegerType.table_name
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateTextTypes < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table ConstructorPages::Types::TextType.table_name do |t|
|
4
|
+
t.text :value, :default => ""
|
5
|
+
t.references :field
|
6
|
+
t.references :page
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table ConstructorPages::Types::TextType.table_name
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateDateTypes < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table ConstructorPages::Types::DateType.table_name do |t|
|
4
|
+
t.date :value, :default => Time.now
|
5
|
+
t.references :field
|
6
|
+
t.references :page
|
7
|
+
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table ConstructorPages::Types::DateType.table_name
|
14
|
+
end
|
15
|
+
end
|
data/public/hello.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
hello world
|
data/spec/factories.rb
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require './../spec/spec_helper'
|
4
|
+
|
5
|
+
describe Page do
|
6
|
+
describe "Title and Url" do
|
7
|
+
before :each do
|
8
|
+
Factory(:page, :title => "Hello", :url => '/hello')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be unique" do
|
12
|
+
page = Factory.build(:page, :title => "Hello", :url => '/hello')
|
13
|
+
page.should_not be_valid
|
14
|
+
page.url = '/hello@#$%^&'
|
15
|
+
page.should_not be_valid
|
16
|
+
page.should have(1).error_on(:base)
|
17
|
+
|
18
|
+
page.url = "/world"
|
19
|
+
page.should be_valid
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should be unique even before save" do
|
23
|
+
page = Factory.build(:page, :title => "Hello", :url => "")
|
24
|
+
|
25
|
+
page.should_not be_valid
|
26
|
+
page.should have(1).error_on(:base)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "Title" do
|
31
|
+
it "should not be empty" do
|
32
|
+
page = Factory.build(:page, :title => ' ')
|
33
|
+
page.should_not be_valid
|
34
|
+
page.should have(1).error_on(:title)
|
35
|
+
page.errors[:title].should == ['не может быть пустым']
|
36
|
+
|
37
|
+
page.title = "Title"
|
38
|
+
page.should be_valid
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "In nav, in menu, in map" do
|
43
|
+
it "should be true by default" do
|
44
|
+
page = Page.new
|
45
|
+
page.in_nav.should be_true
|
46
|
+
page.in_menu.should be_true
|
47
|
+
page.in_map.should be_true
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should change when given in new method" do
|
51
|
+
page = Page.new(:in_nav => false, :in_menu => false, :in_map => false)
|
52
|
+
page.in_nav.should be_false
|
53
|
+
page.in_menu.should be_false
|
54
|
+
page.in_map.should be_false
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "Parent" do
|
59
|
+
it "should not be same as self" do
|
60
|
+
page = Factory(:page)
|
61
|
+
page.parent_id = page.id
|
62
|
+
|
63
|
+
page.save
|
64
|
+
page.should have(1).errors
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "Url" do
|
69
|
+
context "Fix mistakes if remote" do
|
70
|
+
it "should fix http// and http:/" do
|
71
|
+
page = Factory(:page, :url => 'http:/myurl.com/')
|
72
|
+
page.url.should == 'http://myurl.com/'
|
73
|
+
|
74
|
+
page = Factory(:page, :url => 'http//myurl.com/')
|
75
|
+
page.url.should == 'http://myurl.com/'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context "If empty or nil" do
|
80
|
+
it "should be generated from title" do
|
81
|
+
page = Factory(:page, :title => " //Hello!@#$\%^&*() my WORLD /// привет// ", :url => ' ')
|
82
|
+
page.url.should == "\/hello-my-world\/privet"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should add parent url before if parent selected" do
|
86
|
+
page_parent = Factory(:page, :id => 1, :url => '/hello')
|
87
|
+
page = Factory(:page, :parent_id => page_parent, :title => 'World', :url => ' ')
|
88
|
+
page.url.should == '/hello/world'
|
89
|
+
|
90
|
+
# if parent not selected
|
91
|
+
page.parent_id = nil
|
92
|
+
page.url = ' '
|
93
|
+
page.save
|
94
|
+
page.url.should == '/world'
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should be empty when page not valid" do
|
98
|
+
Factory(:page, :title => "Hello", :url => "/hello")
|
99
|
+
page = Factory.build(:page, :title => "Hello", :url => "")
|
100
|
+
|
101
|
+
page.should_not be_valid
|
102
|
+
page.url.should == ""
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
context "Finish cleanup" do
|
107
|
+
it "should cleanup url: remove spaces, fix backslashes, unknown chars etc." do
|
108
|
+
page = Factory(:page, :url => " //Hello!@#$\%^&*() my WORLD /// привет// ")
|
109
|
+
page.url.should == "\/hello-my-world\/privet"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
metadata
ADDED
@@ -0,0 +1,210 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: constructor-pages
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ivan Zotov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-05-21 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: dragonfly
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rack-cache
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: awesome_nested_set
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: haml-rails
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: russian
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.6.0
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.6.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: RedCloth
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description:
|
111
|
+
email:
|
112
|
+
executables: []
|
113
|
+
extensions: []
|
114
|
+
extra_rdoc_files: []
|
115
|
+
files:
|
116
|
+
- app/assets/images/constructor_pages/arrow_down.png
|
117
|
+
- app/assets/images/constructor_pages/arrow_up.png
|
118
|
+
- app/assets/images/constructor_pages/information.png
|
119
|
+
- app/assets/images/constructor_pages/page_white_edit.png
|
120
|
+
- app/assets/images/constructor_pages/photos.png
|
121
|
+
- app/controllers/constructor_pages/fields_controller.rb
|
122
|
+
- app/controllers/constructor_pages/pages_controller.rb
|
123
|
+
- app/controllers/constructor_pages/templates_controller.rb
|
124
|
+
- app/helpers/constructor_pages/fields_helper.rb
|
125
|
+
- app/helpers/constructor_pages/pages_helper.rb
|
126
|
+
- app/helpers/constructor_pages/templates_helper.rb
|
127
|
+
- app/models/constructor_pages/field.rb
|
128
|
+
- app/models/constructor_pages/page.rb
|
129
|
+
- app/models/constructor_pages/template.rb
|
130
|
+
- app/models/constructor_pages/types/boolean_type.rb
|
131
|
+
- app/models/constructor_pages/types/date_type.rb
|
132
|
+
- app/models/constructor_pages/types/float_type.rb
|
133
|
+
- app/models/constructor_pages/types/html_type.rb
|
134
|
+
- app/models/constructor_pages/types/image_type.rb
|
135
|
+
- app/models/constructor_pages/types/integer_type.rb
|
136
|
+
- app/models/constructor_pages/types/string_type.rb
|
137
|
+
- app/models/constructor_pages/types/text_type.rb
|
138
|
+
- app/views/constructor_pages/fields/_form.haml
|
139
|
+
- app/views/constructor_pages/fields/edit.haml
|
140
|
+
- app/views/constructor_pages/fields/new.haml
|
141
|
+
- app/views/constructor_pages/fields/types/_boolean.haml
|
142
|
+
- app/views/constructor_pages/fields/types/_date.haml
|
143
|
+
- app/views/constructor_pages/fields/types/_float.haml
|
144
|
+
- app/views/constructor_pages/fields/types/_html.haml
|
145
|
+
- app/views/constructor_pages/fields/types/_image.haml
|
146
|
+
- app/views/constructor_pages/fields/types/_integer.haml
|
147
|
+
- app/views/constructor_pages/fields/types/_string.haml
|
148
|
+
- app/views/constructor_pages/fields/types/_text.haml
|
149
|
+
- app/views/constructor_pages/pages/_breadcrumbs.haml
|
150
|
+
- app/views/constructor_pages/pages/_form.haml
|
151
|
+
- app/views/constructor_pages/pages/_menu.haml
|
152
|
+
- app/views/constructor_pages/pages/_submenu.haml
|
153
|
+
- app/views/constructor_pages/pages/edit.haml
|
154
|
+
- app/views/constructor_pages/pages/error_404.haml
|
155
|
+
- app/views/constructor_pages/pages/index.haml
|
156
|
+
- app/views/constructor_pages/pages/new.haml
|
157
|
+
- app/views/constructor_pages/pages/show.haml
|
158
|
+
- app/views/constructor_pages/pages/sitemap.haml
|
159
|
+
- app/views/constructor_pages/templates/_form.haml
|
160
|
+
- app/views/constructor_pages/templates/edit.haml
|
161
|
+
- app/views/constructor_pages/templates/index.haml
|
162
|
+
- app/views/constructor_pages/templates/new.haml
|
163
|
+
- config/initializers/dragonfly.rb
|
164
|
+
- config/locales/ru.yml
|
165
|
+
- config/routes.rb
|
166
|
+
- constructor-pages.gemspec
|
167
|
+
- db/migrate/10_create_html_types.rb
|
168
|
+
- db/migrate/11_create_image_types.rb
|
169
|
+
- db/migrate/12_add_default_template.rb
|
170
|
+
- db/migrate/1_create_pages.rb
|
171
|
+
- db/migrate/2_create_templates.rb
|
172
|
+
- db/migrate/3_create_fields.rb
|
173
|
+
- db/migrate/4_create_string_types.rb
|
174
|
+
- db/migrate/5_create_float_types.rb
|
175
|
+
- db/migrate/6_create_boolean_types.rb
|
176
|
+
- db/migrate/7_create_integer_types.rb
|
177
|
+
- db/migrate/8_create_text_types.rb
|
178
|
+
- db/migrate/9_create_date_types.rb
|
179
|
+
- lib/constructor-pages.rb
|
180
|
+
- lib/constructor_pages/engine.rb
|
181
|
+
- public/hello.txt
|
182
|
+
- spec/factories.rb
|
183
|
+
- spec/models/page_model_spec.rb
|
184
|
+
homepage:
|
185
|
+
licenses: []
|
186
|
+
post_install_message:
|
187
|
+
rdoc_options: []
|
188
|
+
require_paths:
|
189
|
+
- lib
|
190
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
191
|
+
none: false
|
192
|
+
requirements:
|
193
|
+
- - ! '>='
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
196
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
|
+
none: false
|
198
|
+
requirements:
|
199
|
+
- - ! '>='
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
requirements: []
|
203
|
+
rubyforge_project:
|
204
|
+
rubygems_version: 1.8.25
|
205
|
+
signing_key:
|
206
|
+
specification_version: 3
|
207
|
+
summary: Pages for ConstructorCms
|
208
|
+
test_files:
|
209
|
+
- spec/factories.rb
|
210
|
+
- spec/models/page_model_spec.rb
|