permalink 1.2.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.github/FUNDING.yml +3 -0
  3. data/.gitignore +3 -1
  4. data/.rubocop.yml +13 -0
  5. data/.travis.yml +7 -0
  6. data/Gemfile +3 -1
  7. data/README.md +118 -0
  8. data/Rakefile +14 -4
  9. data/lib/permalink.rb +38 -8
  10. data/lib/permalink/active_record.rb +127 -0
  11. data/lib/permalink/normalizations/contraction.rb +11 -0
  12. data/lib/permalink/normalizations/downcase.rb +11 -0
  13. data/lib/permalink/normalizations/leading_trailing_dashes.rb +11 -0
  14. data/lib/permalink/normalizations/multiple_dashes.rb +11 -0
  15. data/lib/permalink/normalizations/non_alphanumeric.rb +12 -0
  16. data/lib/permalink/normalizations/transliteration.rb +14 -0
  17. data/lib/permalink/version.rb +4 -2
  18. data/permalink.gemspec +15 -13
  19. data/test/permalink/active_record_test.rb +175 -0
  20. data/test/permalink/normalizations_test.rb +48 -0
  21. data/test/permalink/permalink_test.rb +22 -0
  22. data/test/support/post.rb +5 -0
  23. data/test/support/schema.rb +11 -0
  24. data/test/support/user.rb +5 -0
  25. data/test/test_helper.rb +17 -0
  26. metadata +94 -106
  27. data/.rspec +0 -1
  28. data/Gemfile.lock +0 -79
  29. data/README.markdown +0 -79
  30. data/lib/permalink/orm/active_record.rb +0 -26
  31. data/lib/permalink/orm/base.rb +0 -83
  32. data/lib/permalink/orm/mongo_mapper.rb +0 -28
  33. data/lib/permalink/orm/mongoid.rb +0 -24
  34. data/lib/permalink/string_ext.rb +0 -12
  35. data/spec/permalink/active_record_spec.rb +0 -13
  36. data/spec/permalink/mongo_mapper_spec.rb +0 -13
  37. data/spec/permalink/mongoid_spec.rb +0 -13
  38. data/spec/permalink/string_spec.rb +0 -23
  39. data/spec/spec_helper.rb +0 -24
  40. data/spec/support/article.rb +0 -4
  41. data/spec/support/page.rb +0 -5
  42. data/spec/support/post.rb +0 -2
  43. data/spec/support/schema.rb +0 -5
  44. data/spec/support/shared.rb +0 -95
@@ -1,6 +1,6 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "permalink/version"
1
+ # frozen_string_literal: true
2
+
3
+ require "./lib/permalink/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "permalink"
@@ -9,21 +9,23 @@ Gem::Specification.new do |s|
9
9
  s.authors = ["Nando Vieira"]
10
10
  s.email = ["fnando.vieira@gmail.com"]
11
11
  s.homepage = "http://rubygems.org/gems/permalink"
12
- s.summary = "Generate permalink attributes on ActiveRecord"
12
+ s.summary = "Generate permalink attributes on ActiveModel/ActiveRecord"
13
13
  s.description = s.summary
14
+ s.license = "MIT"
15
+ s.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
14
16
 
15
17
  s.files = `git ls-files`.split("\n")
16
18
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.executables = `git ls-files -- bin/*`
20
+ .split("\n")
21
+ .map {|f| File.basename(f) }
18
22
  s.require_paths = ["lib"]
19
23
 
20
- s.add_development_dependency "activerecord"
21
- s.add_development_dependency "sqlite3-ruby"
22
- s.add_development_dependency "test-unit"
23
- s.add_development_dependency "rspec", "~> 2.7"
24
- s.add_development_dependency "mongoid", "~> 2.3"
25
- s.add_development_dependency "mongo_mapper", "~> 0.9"
26
- s.add_development_dependency "bson_ext"
27
- s.add_development_dependency "pry"
24
+ s.add_dependency "activerecord"
25
+ s.add_development_dependency "minitest-utils"
28
26
  s.add_development_dependency "rake"
27
+ s.add_development_dependency "rubocop"
28
+ s.add_development_dependency "rubocop-fnando"
29
+ s.add_development_dependency "simplecov"
30
+ s.add_development_dependency "sqlite3"
29
31
  end
@@ -0,0 +1,175 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class ActiveRecordTest < Minitest::Test
6
+ let(:model) { Post }
7
+
8
+ setup do
9
+ model.delete_all
10
+ model.permalink :title
11
+ end
12
+
13
+ test "responds to options" do
14
+ assert model.respond_to?(:permalink_options)
15
+ end
16
+
17
+ test "uses default options" do
18
+ model.permalink :title
19
+ record = model.create(title: "Some nice post")
20
+ assert_equal "some-nice-post", record.permalink
21
+ end
22
+
23
+ test "uses custom attribute" do
24
+ model.permalink :title, to: :slug
25
+ record = model.create(title: "Some nice post")
26
+ assert_equal "some-nice-post", record.slug
27
+ end
28
+
29
+ test "sets permalink before_save" do
30
+ record = model.new(title: "Some nice post")
31
+ assert_nil record.permalink
32
+ record.valid?
33
+ assert_equal "some-nice-post", record.permalink
34
+ end
35
+
36
+ test "creates unique permalinks" do
37
+ model.permalink :title, unique: true
38
+
39
+ record = model.create(title: "Some nice post")
40
+ assert_equal "some-nice-post", record.permalink
41
+
42
+ record = model.create(title: "Some nice post")
43
+ assert_equal "some-nice-post-2", record.permalink
44
+
45
+ record = model.create(title: "Some nice post")
46
+ assert_equal "some-nice-post-3", record.permalink
47
+ end
48
+
49
+ test "creates unique permalinks with custom separator" do
50
+ model.permalink :title, unique: true, separator: "_"
51
+
52
+ record = model.create(title: "Some nice post")
53
+ assert_equal "some_nice_post", record.permalink
54
+
55
+ record = model.create(title: "Some nice post")
56
+ assert_equal "some_nice_post_2", record.permalink
57
+ end
58
+
59
+ test "creates unique permalinks based on scope" do
60
+ model.permalink :title, unique: true, scope: :user_id
61
+
62
+ user = User.create!
63
+ another_user = User.create!
64
+
65
+ # Create posts for user
66
+ record = model.create(title: "Some nice post", user: user)
67
+ assert_equal "some-nice-post", record.permalink
68
+
69
+ record = model.create(title: "Some nice post", user: user)
70
+ assert_equal "some-nice-post-2", record.permalink
71
+
72
+ # Create posts for another user
73
+ record = model.create(title: "Some nice post", user: another_user)
74
+ assert_equal "some-nice-post", record.permalink
75
+
76
+ record = model.create(title: "Some nice post", user: another_user)
77
+ assert_equal "some-nice-post-2", record.permalink
78
+ end
79
+
80
+ test "returns param for unique permalink" do
81
+ model.permalink :title, to_param: :permalink, unique: true
82
+
83
+ record = model.create(title: "Ruby")
84
+ assert_equal "ruby", record.to_param
85
+
86
+ record = model.create(title: "Ruby")
87
+ assert_equal "ruby-2", record.to_param
88
+ end
89
+
90
+ test "overrides to_param with custom fields" do
91
+ model.permalink :title, to: :slug, to_param: [:slug, :id, "page"]
92
+
93
+ record = model.create(title: "Some nice post")
94
+ assert_equal "some-nice-post-#{record.id}-page", record.to_param
95
+ end
96
+
97
+ test "ignores blank attributes from to_param" do
98
+ model.permalink :title, to_param: [:id, " ", nil, "\t", :permalink]
99
+
100
+ record = model.create(title: "Some nice post")
101
+ assert_equal "#{record.id}-some-nice-post", record.to_param
102
+ end
103
+
104
+ test "sets permalink if permalink is blank" do
105
+ record = model.create(title: "Some nice post", permalink: " ")
106
+ assert_equal "some-nice-post", record.permalink
107
+ end
108
+
109
+ test "keeps defined permalink" do
110
+ record = model.create(title: "Some nice post", permalink: "awesome-post")
111
+ assert_equal "awesome-post", record.permalink
112
+ end
113
+
114
+ test "creates unique permalinks for number-ended titles" do
115
+ model.permalink :title, unique: true
116
+
117
+ record = model.create(title: "Rails 3")
118
+ assert_equal "rails-3", record.permalink
119
+
120
+ record = model.create(title: "Rails 3")
121
+ assert_equal "rails-3-2", record.permalink
122
+ end
123
+
124
+ test "forces permalink" do
125
+ model.permalink :title, force: true
126
+
127
+ record = model.create(title: "Some nice post")
128
+ record.update title: "Awesome post"
129
+
130
+ assert_equal "awesome-post", record.permalink
131
+ end
132
+
133
+ test "forces permalink and keep unique" do
134
+ model.permalink :title, force: true, unique: true
135
+
136
+ record = model.create(title: "Some nice post")
137
+
138
+ record.update title: "Awesome post"
139
+ assert_equal "awesome-post", record.permalink
140
+
141
+ record = model.create(title: "Awesome post")
142
+ assert_equal "awesome-post-2", record.permalink
143
+ end
144
+
145
+ test "keeps same permalink when another field changes" do
146
+ model.permalink :title, force: true, unique: true
147
+
148
+ record = model.create(title: "Some nice post")
149
+ record.update description: "some description"
150
+
151
+ assert_equal "some-nice-post", record.permalink
152
+ end
153
+
154
+ test "overrides to_param method" do
155
+ model.permalink :title
156
+
157
+ record = model.create(title: "Some nice post")
158
+ assert_equal "#{record.id}-some-nice-post", record.to_param
159
+ end
160
+
161
+ test "uses custom separator" do
162
+ model.permalink :title, separator: "_"
163
+ record = model.create(title: "Some nice post")
164
+
165
+ assert_equal "#{record.id}_some_nice_post", record.to_param
166
+ end
167
+
168
+ test "uses custom normalization" do
169
+ model.permalink :title,
170
+ normalizations: [->(input, _options) { input.to_s.reverse }]
171
+ record = model.create(title: "Some nice post")
172
+
173
+ assert_equal "Some nice post".reverse, record.permalink
174
+ end
175
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class NormalizationsTest < Minitest::Test
6
+ test "applies contraction replacement" do
7
+ assert_equal "its", Permalink::Normalizations::Contraction.call("it's")
8
+ assert_equal "aint", Permalink::Normalizations::Contraction.call("ain’t")
9
+ end
10
+
11
+ test "applies transliteration" do
12
+ assert_equal "aeiou",
13
+ Permalink::Normalizations::Transliteration.call("áéíóú")
14
+ end
15
+
16
+ test "applies downcasing" do
17
+ assert_equal "test", Permalink::Normalizations::Downcase.call("TEST")
18
+ end
19
+
20
+ test "applies lead/trailing dashes replacement" do
21
+ permalink = Permalink::Normalizations::LeadingTrailingDashes.call("-test-")
22
+ assert_equal "test", permalink
23
+ end
24
+
25
+ test "applies multiple dashes replacement" do
26
+ permalink =
27
+ Permalink::Normalizations::MultipleDashes.call("nice----permalink")
28
+ assert_equal "nice-permalink", permalink
29
+ end
30
+
31
+ test "applies multiple dashes replacement with custom separator" do
32
+ permalink = Permalink::Normalizations::MultipleDashes
33
+ .call("nice----permalink", separator: "_")
34
+ assert_equal "nice_permalink", permalink
35
+ end
36
+
37
+ test "applies non-alphanumeric replacement" do
38
+ permalink =
39
+ Permalink::Normalizations::NonAlphanumeric.call("nice-permalink!")
40
+ assert_equal "nice-permalink-", permalink
41
+ end
42
+
43
+ test "applies non-alphanumeric replacement with custom separator" do
44
+ permalink = Permalink::Normalizations::NonAlphanumeric
45
+ .call("nice-permalink!", separator: "_")
46
+ assert_equal "nice_permalink_", permalink
47
+ end
48
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "test_helper"
4
+
5
+ class PermalinkTest < Minitest::Test
6
+ {
7
+ "This IS a Tripped out title!!.!1 (well/ not really)" => "this-is-a-tripped-out-title-1-well-not-really", # rubocop:disable Layout/LineLength
8
+ '////// meph1sto r0x ! \\\\\\' => "meph1sto-r0x",
9
+ "āčēģīķļņū" => "acegiklnu",
10
+ "中文測試 chinese text" => "chinese-text",
11
+ 'some-)()()-ExtRa!/// .data==?> to \/\/test' => "some-extra-data-to-test",
12
+ "http://simplesideias.com.br/tags/" => "http-simplesideias-com-br-tags",
13
+ "Don't Repeat Yourself (DRY)" => "dont-repeat-yourself-dry",
14
+ "Text\nwith\nline\n\n\tbreaks" => "text-with-line-breaks",
15
+ "can't do it" => "cant-do-it",
16
+ "i'm a dog" => "im-a-dog"
17
+ }.each do |from, to|
18
+ test "creates permalink for #{from}" do
19
+ assert_equal to, Permalink.generate(from)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Post < ActiveRecord::Base
4
+ belongs_to :user
5
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ ActiveRecord::Schema.define(version: 0) do
4
+ create_table :posts do |t|
5
+ t.string :title, :permalink, :description, :slug
6
+ t.belongs_to :user
7
+ end
8
+
9
+ create_table :users do |t|
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class User < ActiveRecord::Base
4
+ has_many :posts
5
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "simplecov"
4
+ SimpleCov.start
5
+
6
+ require "bundler/setup"
7
+ require "permalink"
8
+
9
+ require "minitest/utils"
10
+ require "minitest/autorun"
11
+
12
+ ActiveRecord::Base
13
+ .establish_connection(adapter: "sqlite3", database: ":memory:")
14
+
15
+ load("support/schema.rb")
16
+ require "support/user"
17
+ require "support/post"
metadata CHANGED
@@ -1,184 +1,172 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: permalink
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
5
- prerelease:
4
+ version: 2.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nando Vieira
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2011-10-21 00:00:00.000000000 Z
11
+ date: 2020-09-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
- requirement: &70099538008620 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
- type: :development
20
+ type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70099538008620
25
- - !ruby/object:Gem::Dependency
26
- name: sqlite3-ruby
27
- requirement: &70099537997320 !ruby/object:Gem::Requirement
28
- none: false
22
+ version_requirements: !ruby/object:Gem::Requirement
29
23
  requirements:
30
- - - ! '>='
24
+ - - ">="
31
25
  - !ruby/object:Gem::Version
32
26
  version: '0'
33
- type: :development
34
- prerelease: false
35
- version_requirements: *70099537997320
36
27
  - !ruby/object:Gem::Dependency
37
- name: test-unit
38
- requirement: &70099538001440 !ruby/object:Gem::Requirement
39
- none: false
28
+ name: minitest-utils
29
+ requirement: !ruby/object:Gem::Requirement
40
30
  requirements:
41
- - - ! '>='
31
+ - - ">="
42
32
  - !ruby/object:Gem::Version
43
33
  version: '0'
44
34
  type: :development
45
35
  prerelease: false
46
- version_requirements: *70099538001440
47
- - !ruby/object:Gem::Dependency
48
- name: rspec
49
- requirement: &70099537985380 !ruby/object:Gem::Requirement
50
- none: false
36
+ version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - ~>
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: '2.7'
55
- type: :development
56
- prerelease: false
57
- version_requirements: *70099537985380
40
+ version: '0'
58
41
  - !ruby/object:Gem::Dependency
59
- name: mongoid
60
- requirement: &70099537969500 !ruby/object:Gem::Requirement
61
- none: false
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
62
44
  requirements:
63
- - - ~>
45
+ - - ">="
64
46
  - !ruby/object:Gem::Version
65
- version: '2.3'
47
+ version: '0'
66
48
  type: :development
67
49
  prerelease: false
68
- version_requirements: *70099537969500
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
- name: mongo_mapper
71
- requirement: &70099537975840 !ruby/object:Gem::Requirement
72
- none: false
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
73
58
  requirements:
74
- - - ~>
59
+ - - ">="
75
60
  - !ruby/object:Gem::Version
76
- version: '0.9'
61
+ version: '0'
77
62
  type: :development
78
63
  prerelease: false
79
- version_requirements: *70099537975840
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
80
69
  - !ruby/object:Gem::Dependency
81
- name: bson_ext
82
- requirement: &70099537055460 !ruby/object:Gem::Requirement
83
- none: false
70
+ name: rubocop-fnando
71
+ requirement: !ruby/object:Gem::Requirement
84
72
  requirements:
85
- - - ! '>='
73
+ - - ">="
86
74
  - !ruby/object:Gem::Version
87
75
  version: '0'
88
76
  type: :development
89
77
  prerelease: false
90
- version_requirements: *70099537055460
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
91
83
  - !ruby/object:Gem::Dependency
92
- name: pry
93
- requirement: &70099537034980 !ruby/object:Gem::Requirement
94
- none: false
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
95
86
  requirements:
96
- - - ! '>='
87
+ - - ">="
97
88
  - !ruby/object:Gem::Version
98
89
  version: '0'
99
90
  type: :development
100
91
  prerelease: false
101
- version_requirements: *70099537034980
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
102
97
  - !ruby/object:Gem::Dependency
103
- name: rake
104
- requirement: &70099537034280 !ruby/object:Gem::Requirement
105
- none: false
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
106
100
  requirements:
107
- - - ! '>='
101
+ - - ">="
108
102
  - !ruby/object:Gem::Version
109
103
  version: '0'
110
104
  type: :development
111
105
  prerelease: false
112
- version_requirements: *70099537034280
113
- description: Generate permalink attributes on ActiveRecord
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Generate permalink attributes on ActiveModel/ActiveRecord
114
112
  email:
115
113
  - fnando.vieira@gmail.com
116
114
  executables: []
117
115
  extensions: []
118
116
  extra_rdoc_files: []
119
117
  files:
120
- - .gitignore
121
- - .rspec
118
+ - ".github/FUNDING.yml"
119
+ - ".gitignore"
120
+ - ".rubocop.yml"
121
+ - ".travis.yml"
122
122
  - Gemfile
123
- - Gemfile.lock
124
- - README.markdown
123
+ - README.md
125
124
  - Rakefile
126
125
  - lib/permalink.rb
127
- - lib/permalink/orm/active_record.rb
128
- - lib/permalink/orm/base.rb
129
- - lib/permalink/orm/mongo_mapper.rb
130
- - lib/permalink/orm/mongoid.rb
131
- - lib/permalink/string_ext.rb
126
+ - lib/permalink/active_record.rb
127
+ - lib/permalink/normalizations/contraction.rb
128
+ - lib/permalink/normalizations/downcase.rb
129
+ - lib/permalink/normalizations/leading_trailing_dashes.rb
130
+ - lib/permalink/normalizations/multiple_dashes.rb
131
+ - lib/permalink/normalizations/non_alphanumeric.rb
132
+ - lib/permalink/normalizations/transliteration.rb
132
133
  - lib/permalink/version.rb
133
134
  - permalink.gemspec
134
- - spec/permalink/active_record_spec.rb
135
- - spec/permalink/mongo_mapper_spec.rb
136
- - spec/permalink/mongoid_spec.rb
137
- - spec/permalink/string_spec.rb
138
- - spec/spec_helper.rb
139
- - spec/support/article.rb
140
- - spec/support/page.rb
141
- - spec/support/post.rb
142
- - spec/support/schema.rb
143
- - spec/support/shared.rb
135
+ - test/permalink/active_record_test.rb
136
+ - test/permalink/normalizations_test.rb
137
+ - test/permalink/permalink_test.rb
138
+ - test/support/post.rb
139
+ - test/support/schema.rb
140
+ - test/support/user.rb
141
+ - test/test_helper.rb
144
142
  homepage: http://rubygems.org/gems/permalink
145
- licenses: []
146
- post_install_message:
143
+ licenses:
144
+ - MIT
145
+ metadata: {}
146
+ post_install_message:
147
147
  rdoc_options: []
148
148
  require_paths:
149
149
  - lib
150
150
  required_ruby_version: !ruby/object:Gem::Requirement
151
- none: false
152
151
  requirements:
153
- - - ! '>='
152
+ - - ">="
154
153
  - !ruby/object:Gem::Version
155
- version: '0'
156
- segments:
157
- - 0
158
- hash: 232250411774848879
154
+ version: 2.5.0
159
155
  required_rubygems_version: !ruby/object:Gem::Requirement
160
- none: false
161
156
  requirements:
162
- - - ! '>='
157
+ - - ">="
163
158
  - !ruby/object:Gem::Version
164
159
  version: '0'
165
- segments:
166
- - 0
167
- hash: 232250411774848879
168
160
  requirements: []
169
- rubyforge_project:
170
- rubygems_version: 1.8.10
171
- signing_key:
172
- specification_version: 3
173
- summary: Generate permalink attributes on ActiveRecord
161
+ rubygems_version: 3.1.2
162
+ signing_key:
163
+ specification_version: 4
164
+ summary: Generate permalink attributes on ActiveModel/ActiveRecord
174
165
  test_files:
175
- - spec/permalink/active_record_spec.rb
176
- - spec/permalink/mongo_mapper_spec.rb
177
- - spec/permalink/mongoid_spec.rb
178
- - spec/permalink/string_spec.rb
179
- - spec/spec_helper.rb
180
- - spec/support/article.rb
181
- - spec/support/page.rb
182
- - spec/support/post.rb
183
- - spec/support/schema.rb
184
- - spec/support/shared.rb
166
+ - test/permalink/active_record_test.rb
167
+ - test/permalink/normalizations_test.rb
168
+ - test/permalink/permalink_test.rb
169
+ - test/support/post.rb
170
+ - test/support/schema.rb
171
+ - test/support/user.rb
172
+ - test/test_helper.rb