isa-friendly_id_datamapper 3.2.0.beta1
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/ChangeLog.md +8 -0
- data/MIT-LICENSE +19 -0
- data/README.md +63 -0
- data/Rakefile +29 -0
- data/lib/friendly_id/datamapper_adapter/configuration.rb +67 -0
- data/lib/friendly_id/datamapper_adapter/simple_model.rb +83 -0
- data/lib/friendly_id/datamapper_adapter/slug.rb +72 -0
- data/lib/friendly_id/datamapper_adapter/slugged_model.rb +186 -0
- data/lib/friendly_id/datamapper_adapter/tasks.rb +69 -0
- data/lib/friendly_id/datamapper_adapter/version.rb +11 -0
- data/lib/friendly_id_datamapper.rb +34 -0
- data/test/basic_slugged_model_test.rb +16 -0
- data/test/cached_slug_test.rb +74 -0
- data/test/core.rb +72 -0
- data/test/custom_normalizer_test.rb +20 -0
- data/test/custom_table_name_test.rb +22 -0
- data/test/scoped_model_test.rb +120 -0
- data/test/simple_test.rb +76 -0
- data/test/slug_test.rb +35 -0
- data/test/slugged.rb +24 -0
- data/test/slugged_status_test.rb +27 -0
- data/test/sti_test.rb +22 -0
- data/test/support/models.rb +185 -0
- data/test/tasks_test.rb +84 -0
- data/test/test_helper.rb +37 -0
- metadata +158 -0
data/test/tasks_test.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
require File.expand_path('../test_helper', __FILE__)
|
2
|
+
require 'friendly_id/datamapper_adapter/tasks'
|
3
|
+
|
4
|
+
class TasksTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def teardown
|
7
|
+
ENV["MODEL"] = nil
|
8
|
+
[City, District, Post, Slug].each do |clazz|
|
9
|
+
clazz.all.destroy!
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
test "should make slugs" do
|
14
|
+
City.create :name => "Nairobi"
|
15
|
+
City.create :name => "Buenos Aires"
|
16
|
+
Slug.all.destroy!
|
17
|
+
ENV["MODEL"] = "City"
|
18
|
+
FriendlyId::TaskRunner.new.make_slugs
|
19
|
+
assert_equal 2, Slug.count
|
20
|
+
end
|
21
|
+
|
22
|
+
test "should admit lower case, plural model names" do
|
23
|
+
ENV["MODEL"] = "cities"
|
24
|
+
assert_equal City, FriendlyId::TaskRunner.new.klass
|
25
|
+
end
|
26
|
+
|
27
|
+
test "make_slugs should raise error if no model given" do
|
28
|
+
assert_raise(RuntimeError) { FriendlyId::TaskRunner.new.make_slugs }
|
29
|
+
end
|
30
|
+
|
31
|
+
test "make_slugs should raise error if class doesn't use FriendlyId" do
|
32
|
+
ENV["MODEL"] = "String"
|
33
|
+
assert_raise(RuntimeError) { FriendlyId::TaskRunner.new.make_slugs }
|
34
|
+
end
|
35
|
+
|
36
|
+
test"delete_slugs delete only slugs for the specified model" do
|
37
|
+
Post.create :name => "Slugs Considered Harmful"
|
38
|
+
City.create :name => "Buenos Aires"
|
39
|
+
ENV["MODEL"] = "city"
|
40
|
+
FriendlyId::TaskRunner.new.delete_slugs
|
41
|
+
assert_equal 1, Slug.count
|
42
|
+
end
|
43
|
+
|
44
|
+
test "delete_slugs should set the cached_slug column to NULL" do
|
45
|
+
ENV["MODEL"] = "district"
|
46
|
+
District.create :name => "Garment"
|
47
|
+
FriendlyId::TaskRunner.new.delete_slugs
|
48
|
+
assert_nil District.first.cached_slug
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
test "delete_old_slugs should delete slugs older than 45 days by default" do
|
53
|
+
set_up_old_slugs
|
54
|
+
FriendlyId::TaskRunner.new.delete_old_slugs
|
55
|
+
assert_equal 2, Slug.count
|
56
|
+
end
|
57
|
+
|
58
|
+
test "delete_old_slugs should respect the days argument" do
|
59
|
+
set_up_old_slugs
|
60
|
+
ENV["DAYS"] = "100"
|
61
|
+
FriendlyId::TaskRunner.new.delete_old_slugs
|
62
|
+
assert_equal 3, Slug.count
|
63
|
+
end
|
64
|
+
|
65
|
+
test "delete_old_slugs should respect the class argument" do
|
66
|
+
set_up_old_slugs
|
67
|
+
ENV["MODEL"] = "post"
|
68
|
+
FriendlyId::TaskRunner.new.delete_old_slugs
|
69
|
+
assert_equal 3, Slug.count
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def set_up_old_slugs
|
75
|
+
Post.create :name => "Slugs Considered Harmful"
|
76
|
+
city = City.create :name => "Buenos Aires"
|
77
|
+
City.repository(:default).adapter.execute "UPDATE slugs SET created_at = '%s' WHERE id = %d" % [
|
78
|
+
45.days.ago.strftime("%Y-%m-%d"), city.slug.id
|
79
|
+
]
|
80
|
+
city.update :name => "Ciudad de Buenos Aires"
|
81
|
+
assert_equal 3, Slug.count
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Use Bundler (preferred)
|
2
|
+
begin
|
3
|
+
require File.expand_path('../../.bundle/environment', __FILE__)
|
4
|
+
rescue LoadError
|
5
|
+
require 'rubygems'
|
6
|
+
require 'bundler'
|
7
|
+
Bundler.setup
|
8
|
+
end
|
9
|
+
|
10
|
+
require "friendly_id"
|
11
|
+
require "friendly_id/test"
|
12
|
+
require "logger"
|
13
|
+
require "test/unit"
|
14
|
+
require "mocha"
|
15
|
+
|
16
|
+
require 'forwardable'
|
17
|
+
|
18
|
+
require 'dm-core'
|
19
|
+
require 'dm-validations'
|
20
|
+
require 'dm-migrations'
|
21
|
+
# NOTE: dm-active_model is not a runtime requirement, as we implement
|
22
|
+
# #to_param for models. It is a testing requirement to ensure that our
|
23
|
+
# #to_param implementation overrides the default dm-active_model impl.
|
24
|
+
require 'dm-active_model'
|
25
|
+
|
26
|
+
DataMapper::Logger.new('dm.log', :debug)
|
27
|
+
DataMapper.setup(:default, 'sqlite3::memory:')
|
28
|
+
|
29
|
+
$LOAD_PATH << './lib'
|
30
|
+
|
31
|
+
require 'friendly_id_datamapper'
|
32
|
+
require File.expand_path('../core', __FILE__)
|
33
|
+
require File.expand_path('../slugged', __FILE__)
|
34
|
+
|
35
|
+
require File.expand_path('../support/models', __FILE__)
|
36
|
+
DataMapper.finalize
|
37
|
+
DataMapper.auto_migrate!
|
metadata
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: isa-friendly_id_datamapper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: true
|
5
|
+
segments:
|
6
|
+
- 3
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
- beta1
|
10
|
+
version: 3.2.0.beta1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Norman Clarke
|
14
|
+
- Alex Coles
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2011-06-12 00:00:00 +08:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: friendly_id
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 2
|
33
|
+
version: "3.2"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: dm-core
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
segments:
|
45
|
+
- 1
|
46
|
+
- 1
|
47
|
+
version: "1.1"
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: dm-validations
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
segments:
|
59
|
+
- 1
|
60
|
+
- 1
|
61
|
+
version: "1.1"
|
62
|
+
type: :runtime
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: dm-transactions
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ~>
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 1
|
74
|
+
- 1
|
75
|
+
version: "1.1"
|
76
|
+
type: :runtime
|
77
|
+
version_requirements: *id004
|
78
|
+
description: An adapter for using DataMapper::Resource with FriendlyId.
|
79
|
+
email:
|
80
|
+
- norman@njclarke.com
|
81
|
+
- alex@alexbcoles.com
|
82
|
+
executables: []
|
83
|
+
|
84
|
+
extensions: []
|
85
|
+
|
86
|
+
extra_rdoc_files: []
|
87
|
+
|
88
|
+
files:
|
89
|
+
- lib/friendly_id/datamapper_adapter/simple_model.rb
|
90
|
+
- lib/friendly_id/datamapper_adapter/tasks.rb
|
91
|
+
- lib/friendly_id/datamapper_adapter/version.rb
|
92
|
+
- lib/friendly_id/datamapper_adapter/slugged_model.rb
|
93
|
+
- lib/friendly_id/datamapper_adapter/configuration.rb
|
94
|
+
- lib/friendly_id/datamapper_adapter/slug.rb
|
95
|
+
- lib/friendly_id_datamapper.rb
|
96
|
+
- README.md
|
97
|
+
- ChangeLog.md
|
98
|
+
- MIT-LICENSE
|
99
|
+
- Rakefile
|
100
|
+
- test/core.rb
|
101
|
+
- test/scoped_model_test.rb
|
102
|
+
- test/test_helper.rb
|
103
|
+
- test/slug_test.rb
|
104
|
+
- test/custom_table_name_test.rb
|
105
|
+
- test/sti_test.rb
|
106
|
+
- test/support/models.rb
|
107
|
+
- test/simple_test.rb
|
108
|
+
- test/custom_normalizer_test.rb
|
109
|
+
- test/tasks_test.rb
|
110
|
+
- test/slugged.rb
|
111
|
+
- test/basic_slugged_model_test.rb
|
112
|
+
- test/slugged_status_test.rb
|
113
|
+
- test/cached_slug_test.rb
|
114
|
+
has_rdoc: true
|
115
|
+
homepage: http://github.com/myabc/friendly_id_datamapper
|
116
|
+
licenses: []
|
117
|
+
|
118
|
+
post_install_message:
|
119
|
+
rdoc_options: []
|
120
|
+
|
121
|
+
require_paths:
|
122
|
+
- lib
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
125
|
+
requirements:
|
126
|
+
- - ">="
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
segments:
|
129
|
+
- 0
|
130
|
+
version: "0"
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
133
|
+
requirements:
|
134
|
+
- - ">"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
segments:
|
137
|
+
- 1
|
138
|
+
- 3
|
139
|
+
- 1
|
140
|
+
version: 1.3.1
|
141
|
+
requirements: []
|
142
|
+
|
143
|
+
rubyforge_project: "[none]"
|
144
|
+
rubygems_version: 1.3.7
|
145
|
+
signing_key:
|
146
|
+
specification_version: 3
|
147
|
+
summary: A DataMapper adapter for FriendlyId
|
148
|
+
test_files:
|
149
|
+
- test/scoped_model_test.rb
|
150
|
+
- test/slug_test.rb
|
151
|
+
- test/custom_table_name_test.rb
|
152
|
+
- test/sti_test.rb
|
153
|
+
- test/simple_test.rb
|
154
|
+
- test/custom_normalizer_test.rb
|
155
|
+
- test/tasks_test.rb
|
156
|
+
- test/basic_slugged_model_test.rb
|
157
|
+
- test/slugged_status_test.rb
|
158
|
+
- test/cached_slug_test.rb
|