uuid_it 0.1.1 → 0.1.2

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 ADDED
@@ -0,0 +1,2 @@
1
+ # 0.1.2 (2011-08-25)
2
+ * fixed a bug where uuid_it created multiple Uuids when an unsaved Uuidable already had created one
data/lib/uuid_it.rb CHANGED
@@ -24,11 +24,10 @@ module ActiveRecord
24
24
  end
25
25
 
26
26
  def assign_uuid
27
- return if Uuid.find_by_uuidable_type_and_uuidable_id(self.class.name, self.id)
28
- uuid = Uuid.new(:uuidable => self)
29
- uuid.uuid = UUID.create.to_s
30
- uuid.save
31
- self.reload
27
+ return if self.uuid_object.present?
28
+
29
+ self.build_uuid_object(:uuid => UUID.create.to_s)
30
+ self.save unless self.new_record?
32
31
  end
33
32
  end
34
33
  end
data/test/uuid_it_test.rb CHANGED
@@ -47,4 +47,20 @@ class UuidItTest < ActiveSupport::TestCase
47
47
  assert_equal car, Car.find_by_uuid(car.uuid)
48
48
  assert_nil Car.find_by_uuid(scooter.uuid)
49
49
  end
50
+
51
+ test "should only create one uuid object when a new object with a uuid is saved" do
52
+ assert_difference "Uuid.count", 1 do
53
+ c = Car.new
54
+ assert c.uuid
55
+ c.save!
56
+ end
57
+ end
58
+
59
+ test "should not leak Uuid objects on unsaved uuidables" do
60
+ assert_difference "Uuid.count", 0 do
61
+ 1..3.times do
62
+ Car.new.uuid
63
+ end
64
+ end
65
+ end
50
66
  end
@@ -0,0 +1,67 @@
1
+ require 'test_helper'
2
+
3
+ class Car < ActiveRecord::Base
4
+ uuid_it
5
+ end
6
+
7
+ class Bike < ActiveRecord::Base
8
+ end
9
+
10
+ class Scooter < ActiveRecord::Base
11
+ uuid_it
12
+ end
13
+
14
+ class UuidItTest < ActiveSupport::TestCase
15
+ test "should assing Uuids to new objects" do
16
+ c = Car.create
17
+ assert c.uuid_object
18
+ assert c.uuid.present?
19
+
20
+ c2 = Car.create
21
+ assert_not_equal c.uuid, c2.uuid
22
+ end
23
+
24
+ test "should assing Uuid to already existing objects on first access" do
25
+ b1 = nil
26
+ assert_difference "Uuid.count", 0 do
27
+ b1 = Bike.create
28
+ end
29
+ Bike.class_eval do
30
+ uuid_it
31
+ end
32
+ assert_nil b1.uuid_object
33
+ b1.uuid
34
+ assert b1.uuid_object
35
+ assert b1.uuid.present?
36
+
37
+ b2 = Bike.create
38
+ assert b2.uuid_object
39
+ assert b2.uuid.present?
40
+ end
41
+
42
+ test "find_by_uuid" do
43
+ car = Car.create
44
+ scooter = Scooter.create
45
+
46
+ assert_nil Car.find_by_uuid("bla")
47
+ assert_equal car, Car.find_by_uuid(car.uuid)
48
+ assert_nil Car.find_by_uuid(scooter.uuid)
49
+ end
50
+
51
+ test "should only create one uuid object when a new object with a uuid is saved" do
52
+ assert_difference "Uuid.count", 1 do
53
+ c = Car.new
54
+ assert c.uuid
55
+ c.uuid
56
+ c.save!
57
+ end
58
+ end
59
+
60
+ test "should not leak Uuid objects on unsaved uuidables" do
61
+ assert_difference "Uuid.count", 0 do
62
+ 1..3.times do
63
+ Car.new.uuid
64
+ end
65
+ end
66
+ end
67
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uuid_it
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 31
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 1
8
- - 1
9
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
10
11
  platform: ruby
11
12
  authors:
12
13
  - "Andr\xC3\xA9 Duffeck"
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-07-04 00:00:00 +02:00
18
+ date: 2011-08-25 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -28,18 +29,20 @@ extensions: []
28
29
  extra_rdoc_files: []
29
30
 
30
31
  files:
31
- - lib/uuid_it/uuid.rb
32
+ - lib/uuid_it.rb
32
33
  - lib/ruby-uuid/uuid.rb
33
34
  - lib/generators/uuid_it_generator.rb
34
- - lib/uuid_it.rb
35
+ - lib/uuid_it/uuid.rb
35
36
  - lib/tasks/uuid_it_tasks.rake
37
+ - Changelog.md
36
38
  - README.md
37
39
  - Rakefile
38
40
  - rails/init.rb
39
41
  - generators/uuid_it/templates/create_uuids.rb
40
42
  - generators/uuid_it/uuid_it_generator.rb
41
- - test/test_helper.rb
43
+ - test/uuid_it_test.rb~
42
44
  - test/uuid_it_test.rb
45
+ - test/test_helper.rb
43
46
  has_rdoc: true
44
47
  homepage: http://github.com/aduffeck/uuid_it
45
48
  licenses: []
@@ -50,23 +53,27 @@ rdoc_options: []
50
53
  require_paths:
51
54
  - lib
52
55
  required_ruby_version: !ruby/object:Gem::Requirement
56
+ none: false
53
57
  requirements:
54
58
  - - ">="
55
59
  - !ruby/object:Gem::Version
60
+ hash: 3
56
61
  segments:
57
62
  - 0
58
63
  version: "0"
59
64
  required_rubygems_version: !ruby/object:Gem::Requirement
65
+ none: false
60
66
  requirements:
61
67
  - - ">="
62
68
  - !ruby/object:Gem::Version
69
+ hash: 3
63
70
  segments:
64
71
  - 0
65
72
  version: "0"
66
73
  requirements: []
67
74
 
68
75
  rubyforge_project:
69
- rubygems_version: 1.3.6
76
+ rubygems_version: 1.5.2
70
77
  signing_key:
71
78
  specification_version: 3
72
79
  summary: A Rails plugin for easily assigning UUIDs to your models..