i76-has_slug 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,7 +22,8 @@ module HasSlug::SluggableInstanceMethods
22
22
  end
23
23
 
24
24
  def new_slug_needed?
25
- self.new_record? || self.sluggable.to_slug != self.slug
25
+ !self.send("#{self.class.has_slug_options[:slug_column]}_changed?") &&
26
+ (self.new_record? || self.send("#{self.class.has_slug_options[:attribute]}_changed?"))
26
27
  end
27
28
 
28
29
  def to_param
@@ -60,7 +60,24 @@ class HasSlugTest < Test::Unit::TestCase
60
60
  context 'with a slug column' do
61
61
  setup do
62
62
  @new_york = Factory(:city, :name => 'New York')
63
- @san_fransisco = Factory(:city, :name => 'San Fransisco')
63
+ @san_Francisco = Factory(:city, :name => 'San Francisco')
64
+ end
65
+
66
+ context 'and a custom slug' do
67
+ setup do
68
+ @custom = Factory(:city, :name => 'Las Vegas', :slug => 'lv')
69
+ end
70
+
71
+ should 'not update the slug unless sluggable_column changed' do
72
+ @custom.save
73
+ assert_equal 'lv', @custom.slug
74
+ end
75
+
76
+ should 'update the slug if sluggable_column changed' do
77
+ @custom.update_attributes(:name => 'Los Angeles')
78
+
79
+ assert_equal 'los-angeles', @custom.slug
80
+ end
64
81
  end
65
82
 
66
83
  context 'and a scope' do
@@ -71,7 +88,7 @@ class HasSlugTest < Test::Unit::TestCase
71
88
 
72
89
  should 'create the same slug in a different scope' do
73
90
  @da_marco_2 = Factory(:restaurant, :name => 'Da Marco',
74
- :city => @san_fransisco)
91
+ :city => @san_Francisco)
75
92
 
76
93
  assert_equal @da_marco_2.slug, @da_marco.slug
77
94
  end
@@ -79,12 +96,12 @@ class HasSlugTest < Test::Unit::TestCase
79
96
 
80
97
  should 'set the slug' do
81
98
  assert_equal 'new-york', @new_york.slug
82
- assert_equal 'san-fransisco', @san_fransisco.slug
99
+ assert_equal 'san-francisco', @san_Francisco.slug
83
100
  end
84
101
 
85
102
  should 'return the slug on call to #to_param' do
86
103
  assert_equal @new_york.slug, @new_york.to_param
87
- assert_equal @san_fransisco.slug, @san_fransisco.to_param
104
+ assert_equal @san_Francisco.slug, @san_Francisco.to_param
88
105
  end
89
106
 
90
107
  should 'not create duplicate slugs' do
@@ -108,21 +125,21 @@ class HasSlugTest < Test::Unit::TestCase
108
125
  end
109
126
 
110
127
  should 'still find some by id' do
111
- cities = City.find([@new_york.id, @san_fransisco.id])
128
+ cities = City.find([@new_york.id, @san_Francisco.id])
112
129
 
113
130
  assert_equal 2, cities.length
114
131
  assert !cities.any?(&:found_by_slug?)
115
132
  end
116
133
 
117
134
  should 'find some by slug' do
118
- cities = City.find([@new_york.slug, @san_fransisco.slug])
135
+ cities = City.find([@new_york.slug, @san_Francisco.slug])
119
136
 
120
137
  assert_equal 2, cities.length
121
138
  assert cities.all?(&:found_by_slug?)
122
139
  end
123
140
 
124
141
  should 'find some by id or slug' do
125
- cities = City.find([@new_york.id, @san_fransisco.slug])
142
+ cities = City.find([@new_york.id, @san_Francisco.slug])
126
143
 
127
144
  assert_equal 2, cities.length
128
145
  assert !cities[0].found_by_slug?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i76-has_slug
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom-Eric Gerritsen