vidibus-uuid 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --format nested
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "mongoid", "~> 2.0.0.beta.17"
4
+ gem "uuid", "~> 2.3.1"
5
+
6
+ # Development dependencies
7
+ gem "rspec", "~> 2.0.0.beta.20"
8
+ gem "relevance-rcov"
data/Gemfile.lock ADDED
@@ -0,0 +1,43 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activemodel (3.0.0)
5
+ activesupport (= 3.0.0)
6
+ builder (~> 2.1.2)
7
+ i18n (~> 0.4.1)
8
+ activesupport (3.0.0)
9
+ bson (1.0.4)
10
+ builder (2.1.2)
11
+ diff-lcs (1.1.2)
12
+ i18n (0.4.1)
13
+ macaddr (1.0.0)
14
+ mongo (1.0.7)
15
+ bson (>= 1.0.4)
16
+ mongoid (2.0.0.beta.17)
17
+ activemodel (~> 3.0.0)
18
+ bson (= 1.0.4)
19
+ mongo (= 1.0.7)
20
+ tzinfo (~> 0.3.22)
21
+ will_paginate (~> 3.0.pre)
22
+ relevance-rcov (0.9.2.1)
23
+ rspec (2.0.0.beta.20)
24
+ rspec-core (= 2.0.0.beta.20)
25
+ rspec-expectations (= 2.0.0.beta.20)
26
+ rspec-mocks (= 2.0.0.beta.20)
27
+ rspec-core (2.0.0.beta.20)
28
+ rspec-expectations (2.0.0.beta.20)
29
+ diff-lcs (>= 1.1.2)
30
+ rspec-mocks (2.0.0.beta.20)
31
+ tzinfo (0.3.23)
32
+ uuid (2.3.1)
33
+ macaddr (~> 1.0)
34
+ will_paginate (3.0.pre2)
35
+
36
+ PLATFORMS
37
+ ruby
38
+
39
+ DEPENDENCIES
40
+ mongoid (~> 2.0.0.beta.17)
41
+ relevance-rcov
42
+ rspec (~> 2.0.0.beta.20)
43
+ uuid (~> 2.3.1)
data/README.rdoc CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  This gem is part of the open source SOA framework Vidibus: http://www.vidibus.org
4
4
 
5
- It generates compact UUIDs. Basically, this is an abstraction of http://github.com/assaf/uuid
5
+ It generates and validates compact UUIDs. Basically, this is an abstraction of http://github.com/assaf/uuid
6
6
 
7
7
 
8
8
  == Installation
@@ -18,6 +18,9 @@ Then call bundle install on your console.
18
18
 
19
19
  Vidibus::Uuid.generate
20
20
  # => "b063263064e0012d47b658b035f038ab"
21
+
22
+ Vidibus::Uuid.validate("b063263064e0012d47b658b035f038ab")
23
+ # => true
21
24
 
22
25
 
23
26
  === Usage in Mongoid model
@@ -33,15 +36,15 @@ This will extend your model as follows:
33
36
 
34
37
  class MyModel
35
38
  include Mongoid::Document
36
-
39
+
37
40
  field :uuid
38
41
  index :uuid, :unique => true
39
-
42
+
40
43
  before_validation :generate_uuid
41
44
  validates :uuid, :uniqueness => true, :uuid => true
42
-
45
+
43
46
  private
44
-
47
+
45
48
  def generate_uuid
46
49
  return unless new_record?
47
50
  self.uuid ||= Vidibus::Uuid.generate
data/Rakefile CHANGED
@@ -1,5 +1,8 @@
1
1
  require "rubygems"
2
2
  require "rake"
3
+ require "rake/rdoctask"
4
+ require "rspec"
5
+ require "rspec/core/rake_task"
3
6
 
4
7
  begin
5
8
  require "jeweler"
@@ -10,31 +13,20 @@ begin
10
13
  gem.email = "andre@vidibus.com"
11
14
  gem.homepage = "http://github.com/vidibus/vidibus-uuid"
12
15
  gem.authors = ["Andre Pankratz"]
13
- gem.add_development_dependency "rspec"
14
- gem.add_development_dependency "mongoid", "= 2.0.0.beta.15"
15
- gem.add_dependency "uuid"
16
+ gem.add_dependency "mongoid", "~> 2.0.0.beta.17"
17
+ gem.add_dependency "uuid", "~> 2.3.1"
16
18
  end
17
19
  Jeweler::GemcutterTasks.new
18
20
  rescue LoadError
19
21
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
22
  end
21
23
 
22
- require "spec/rake/spectask"
23
- Spec::Rake::SpecTask.new(:spec) do |spec|
24
- spec.libs << "lib" << "spec"
25
- spec.spec_files = FileList["spec/**/*_spec.rb"]
26
- end
27
-
28
- Spec::Rake::SpecTask.new(:rcov) do |t|
29
- t.spec_files = FileList['spec/vidibus/**/*_spec.rb']
24
+ Rspec::Core::RakeTask.new(:rcov) do |t|
25
+ t.pattern = "spec/**/*_spec.rb"
30
26
  t.rcov = true
31
- t.rcov_opts = ['--exclude', '^spec,/gems/']
27
+ t.rcov_opts = ["--exclude", "^spec,/gems/"]
32
28
  end
33
29
 
34
- task :spec => :check_dependencies
35
- task :default => :spec
36
-
37
- require "rake/rdoctask"
38
30
  Rake::RDocTask.new do |rdoc|
39
31
  version = File.exist?("VERSION") ? File.read("VERSION") : ""
40
32
  rdoc.rdoc_dir = "rdoc"
@@ -43,4 +35,3 @@ Rake::RDocTask.new do |rdoc|
43
35
  rdoc.rdoc_files.include("lib/**/*.rb")
44
36
  rdoc.options << "--charset=utf-8"
45
37
  end
46
-
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.6
1
+ 0.3.7
data/lib/vidibus-uuid.rb CHANGED
@@ -4,8 +4,8 @@ require "vidibus/uuid/mongoid"
4
4
 
5
5
  if defined?(Rails)
6
6
  module Vidibus::Uuid
7
- class Engine < ::Rails::Engine; end
7
+ class Engine < ::Rails::Engine; end
8
8
  end
9
9
  end
10
10
 
11
- ActiveModel::Validations.send(:include, Vidibus::ValidateUuid)
11
+ ActiveModel::Validations.send(:include, Vidibus::ValidateUuid)
data/lib/vidibus/uuid.rb CHANGED
@@ -2,8 +2,16 @@ require "uuid"
2
2
 
3
3
  module Vidibus
4
4
  module Uuid
5
+
6
+ # Returns a new compact UUID.
5
7
  def self.generate
6
8
  UUID.new.generate(:compact)
7
9
  end
10
+
11
+ # Returns true if given UUID is valid.
12
+ def self.validate(uuid)
13
+ uuid = uuid.to_s
14
+ UUID.validate(uuid) && uuid.length == 32
15
+ end
8
16
  end
9
- end
17
+ end
@@ -2,6 +2,7 @@ module Vidibus
2
2
  module Uuid
3
3
  module Mongoid
4
4
  extend ActiveSupport::Concern
5
+
5
6
  included do
6
7
  field :uuid
7
8
  index :uuid, :unique => true
@@ -9,7 +10,7 @@ module Vidibus
9
10
  validates :uuid, :uniqueness => true, :uuid => true
10
11
  end
11
12
 
12
- # Returns UUID as param for urls.
13
+ # Returns UUID as param for URLs.
13
14
  def to_param
14
15
  uuid
15
16
  end
@@ -22,4 +23,4 @@ module Vidibus
22
23
  end
23
24
  end
24
25
  end
25
- end
26
+ end
@@ -2,12 +2,12 @@ module Vidibus
2
2
  module ValidateUuid
3
3
  class UuidValidator < ActiveModel::EachValidator
4
4
 
5
- # Ensures that every value is of a valid compact UUID format
5
+ # Ensures that every value is of a valid compact UUID format.
6
6
  def validate_each(record, attribute, value)
7
- unless value.to_s.match(/^[a-z0-9]{32}$/)
7
+ unless Vidibus::Uuid.validate(value)
8
8
  record.errors.add(attribute, :invalid_uuid)
9
9
  end
10
10
  end
11
11
  end
12
12
  end
13
- end
13
+ end
data/spec/spec_helper.rb CHANGED
@@ -2,10 +2,8 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
 
4
4
  require "rubygems"
5
- require "active_support/core_ext"
6
- require "spec"
7
5
  require "mongoid"
8
- require "uuid"
6
+ require "rspec"
9
7
  require "vidibus-uuid"
10
8
 
11
9
  Mongoid.configure do |config|
@@ -14,11 +12,10 @@ Mongoid.configure do |config|
14
12
  config.master = Mongo::Connection.new.db(name)
15
13
  end
16
14
 
17
- Spec::Runner.configure do |config|
18
- config.mock_with :rspec
19
- config.before(:each) do
20
- Mongoid.master.collections.select { |c| c.name != 'system.indexes' }.each(&:drop)
15
+ RSpec.configure do |config|
16
+ config.after :suite do
17
+ Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&:drop)
21
18
  end
22
19
  end
23
20
 
24
- I18n.load_path += Dir[File.join('config', 'locales', '**', '*.{rb,yml}')]
21
+ I18n.load_path += Dir[File.join('config', 'locales', '**', '*.{rb,yml}')]
@@ -16,7 +16,7 @@ describe "Vidibus::Uuid::Mongoid" do
16
16
  let(:model) { Model.create }
17
17
  let(:new_model) { Model.new }
18
18
  let(:uuid) { Vidibus::Uuid.generate }
19
-
19
+
20
20
  it "should add an uuid field to model" do
21
21
  model.should respond_to(:uuid)
22
22
  end
@@ -1,8 +1,49 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "Vidibus::Uuid" do
4
+ describe ".generate" do
5
+
6
+ end
4
7
  it "should return a compact UUID" do
5
8
  uuid = Vidibus::Uuid.generate
6
9
  uuid.length.should eql(32)
7
10
  end
11
+
12
+ describe ".validate" do
13
+ it "should validate a valid compact UUID" do
14
+ Vidibus::Uuid.validate("ddeb4500668e012d47bb58b035f038ab").should be_true
15
+ end
16
+
17
+ it "should validate a valid compact UUID that is given as symbol" do
18
+ Vidibus::Uuid.validate(:ddeb4500668e012d47bb58b035f038ab).should be_true
19
+ end
20
+
21
+ it "should not validate an UUID that is not compact" do
22
+ Vidibus::Uuid.validate("87a96db0-9a91-012d-59e4-58b035f038ab").should be_false
23
+ end
24
+
25
+ it "should not validate a string that looks like an UUID, but is too short" do
26
+ Vidibus::Uuid.validate("dbeb4500668e0f839aefg928930efcca").should be_false
27
+ end
28
+
29
+ it "should not validate a random symbol" do
30
+ Vidibus::Uuid.validate(:something).should be_false
31
+ end
32
+
33
+ it "should not validate a random string with 32 characters" do
34
+ Vidibus::Uuid.validate("somerandomstringwith32characters").should be_false
35
+ end
36
+
37
+ it "should not validate a string containing non-hex characters" do
38
+ Vidibus::Uuid.validate("xdeb4500668e012d47bb58b035f038ab").should be_false
39
+ end
40
+
41
+ it "should not validate nil" do
42
+ Vidibus::Uuid.validate(nil).should be_false
43
+ end
44
+
45
+ it "should not validate an empty string" do
46
+ Vidibus::Uuid.validate("").should be_false
47
+ end
48
+ end
8
49
  end
@@ -9,7 +9,7 @@ end
9
9
 
10
10
  describe "Vidibus::ValidateUuid::UuidValidator" do
11
11
  let(:model) { ModelWithValidations.new }
12
-
12
+
13
13
  it "should be available as uuid validator for attribute required_uuid" do
14
14
  ModelWithValidations.validators_on(:required_uuid).first.should be_a_kind_of(Vidibus::ValidateUuid::UuidValidator)
15
15
  end
@@ -18,18 +18,18 @@ describe "Vidibus::ValidateUuid::UuidValidator" do
18
18
  ModelWithValidations.validators_on(:optional_uuid).first.should be_a_kind_of(Vidibus::ValidateUuid::UuidValidator)
19
19
  end
20
20
 
21
- it "should validate ddeb4500668e012d47bb58b035f038ab" do
21
+ it "should validate valid UUIDs" do
22
22
  model.required_uuid = "ddeb4500668e012d47bb58b035f038ab"
23
23
  model.should be_valid
24
24
  end
25
25
 
26
- it "should add an error for ddeb4500668e0" do
26
+ it "should add an error for invalid UUIDs" do
27
27
  model.required_uuid = "ddeb4500668e0"
28
28
  model.should be_invalid
29
29
  model.errors[:required_uuid].should have(1).error
30
30
  model.errors[:required_uuid].first.should eql("is not a valid UUID")
31
31
  end
32
-
32
+
33
33
  it "should add an error on required_uuid, if empty" do
34
34
  model.required_uuid = ''
35
35
  model.should be_invalid
data/vidibus-uuid.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{vidibus-uuid}
8
- s.version = "0.3.6"
8
+ s.version = "0.3.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andre Pankratz"]
12
- s.date = %q{2010-08-11}
12
+ s.date = %q{2010-09-08}
13
13
  s.description = %q{Provides UUID generation for Mongoid models. It includes a validator for UUIDs.}
14
14
  s.email = %q{andre@vidibus.com}
15
15
  s.extra_rdoc_files = [
@@ -19,6 +19,9 @@ Gem::Specification.new do |s|
19
19
  s.files = [
20
20
  ".document",
21
21
  ".gitignore",
22
+ ".rspec",
23
+ "Gemfile",
24
+ "Gemfile.lock",
22
25
  "LICENSE",
23
26
  "README.rdoc",
24
27
  "Rakefile",
@@ -28,7 +31,6 @@ Gem::Specification.new do |s|
28
31
  "lib/vidibus/uuid.rb",
29
32
  "lib/vidibus/uuid/mongoid.rb",
30
33
  "lib/vidibus/validate_uuid.rb",
31
- "spec/spec.opts",
32
34
  "spec/spec_helper.rb",
33
35
  "spec/vidibus/uuid/mongoid_spec.rb",
34
36
  "spec/vidibus/uuid_spec.rb",
@@ -52,18 +54,15 @@ Gem::Specification.new do |s|
52
54
  s.specification_version = 3
53
55
 
54
56
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
- s.add_development_dependency(%q<rspec>, [">= 0"])
56
- s.add_development_dependency(%q<mongoid>, ["= 2.0.0.beta.15"])
57
- s.add_runtime_dependency(%q<uuid>, [">= 0"])
57
+ s.add_runtime_dependency(%q<mongoid>, ["~> 2.0.0.beta.17"])
58
+ s.add_runtime_dependency(%q<uuid>, ["~> 2.3.1"])
58
59
  else
59
- s.add_dependency(%q<rspec>, [">= 0"])
60
- s.add_dependency(%q<mongoid>, ["= 2.0.0.beta.15"])
61
- s.add_dependency(%q<uuid>, [">= 0"])
60
+ s.add_dependency(%q<mongoid>, ["~> 2.0.0.beta.17"])
61
+ s.add_dependency(%q<uuid>, ["~> 2.3.1"])
62
62
  end
63
63
  else
64
- s.add_dependency(%q<rspec>, [">= 0"])
65
- s.add_dependency(%q<mongoid>, ["= 2.0.0.beta.15"])
66
- s.add_dependency(%q<uuid>, [">= 0"])
64
+ s.add_dependency(%q<mongoid>, ["~> 2.0.0.beta.17"])
65
+ s.add_dependency(%q<uuid>, ["~> 2.3.1"])
67
66
  end
68
67
  end
69
68
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vidibus-uuid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 6
10
- version: 0.3.6
9
+ - 7
10
+ version: 0.3.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andre Pankratz
@@ -15,55 +15,43 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-11 00:00:00 +02:00
18
+ date: 2010-09-08 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: rspec
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- type: :development
34
- version_requirements: *id001
35
21
  - !ruby/object:Gem::Dependency
36
22
  name: mongoid
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
39
25
  none: false
40
26
  requirements:
41
- - - "="
27
+ - - ~>
42
28
  - !ruby/object:Gem::Version
43
- hash: 62196477
29
+ hash: 62196417
44
30
  segments:
45
31
  - 2
46
32
  - 0
47
33
  - 0
48
34
  - beta
49
- - 15
50
- version: 2.0.0.beta.15
51
- type: :development
52
- version_requirements: *id002
35
+ - 17
36
+ version: 2.0.0.beta.17
37
+ type: :runtime
38
+ version_requirements: *id001
53
39
  - !ruby/object:Gem::Dependency
54
40
  name: uuid
55
41
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
42
+ requirement: &id002 !ruby/object:Gem::Requirement
57
43
  none: false
58
44
  requirements:
59
- - - ">="
45
+ - - ~>
60
46
  - !ruby/object:Gem::Version
61
- hash: 3
47
+ hash: 1
62
48
  segments:
63
- - 0
64
- version: "0"
49
+ - 2
50
+ - 3
51
+ - 1
52
+ version: 2.3.1
65
53
  type: :runtime
66
- version_requirements: *id003
54
+ version_requirements: *id002
67
55
  description: Provides UUID generation for Mongoid models. It includes a validator for UUIDs.
68
56
  email: andre@vidibus.com
69
57
  executables: []
@@ -76,6 +64,9 @@ extra_rdoc_files:
76
64
  files:
77
65
  - .document
78
66
  - .gitignore
67
+ - .rspec
68
+ - Gemfile
69
+ - Gemfile.lock
79
70
  - LICENSE
80
71
  - README.rdoc
81
72
  - Rakefile
@@ -85,7 +76,6 @@ files:
85
76
  - lib/vidibus/uuid.rb
86
77
  - lib/vidibus/uuid/mongoid.rb
87
78
  - lib/vidibus/validate_uuid.rb
88
- - spec/spec.opts
89
79
  - spec/spec_helper.rb
90
80
  - spec/vidibus/uuid/mongoid_spec.rb
91
81
  - spec/vidibus/uuid_spec.rb
data/spec/spec.opts DELETED
@@ -1,2 +0,0 @@
1
- --colour
2
- --format nested