has_public_id 1.1.0 → 1.1.5

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.
@@ -1,7 +1,53 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class UserTest < ActiveSupport::TestCase
4
- # test "the truth" do
5
- # assert true
6
- # end
4
+ fixtures :users
5
+ self.use_transactional_fixtures = true
6
+
7
+ test "identifier_initializes" do
8
+ assert User.new.ident.present?, "should have an id when initialized"
9
+ assert_equal User.new.ident.first(5), 'user-', "should have a 3 letter prefix from the class name"
10
+ end
11
+
12
+ test "identifier_doesnt_change" do
13
+ u = User.new
14
+ identifier = u.ident
15
+ u.save!
16
+ u.reload
17
+ assert_equal identifier, u.ident, "doesn't match after create"
18
+ u.save!
19
+ u.reload
20
+ assert_equal identifier, u.ident, "doesn't match after update"
21
+ end
22
+
23
+ test "to_param_matches_identifier" do
24
+ u = User.new
25
+ assert_equal u.ident, u.to_param, "should match to_param"
26
+ end
27
+
28
+ test "new_public_id" do
29
+ pid = User.new_public_id
30
+ assert pid.starts_with?('user-'), 'has the right prefix'
31
+ assert_equal 4 + 1 + 12, pid.length, 'has the right length'
32
+ end
33
+
34
+ test "find_by_public_id" do
35
+ u = User.create(name: 'joey')
36
+ assert_equal u, User.find_by_public_id(u.to_param), "Can't be looked up by #{u.to_param}"
37
+ assert_nil User.find_by_public_id('bad_key'), 'returns nil if not found'
38
+ end
39
+
40
+ test "find_by_public_id!" do
41
+ u = User.create(name: 'joey')
42
+ assert_equal u, User.find_by_public_id!(u.to_param), "Can't be looked up by #{u.to_param}"
43
+ assert_raises(ActiveRecord::RecordNotFound){ User.find_by_public_id!('bad_key') }
44
+ end
45
+
46
+ test "initialize_public_ids!" do
47
+ # From fixtures...
48
+ assert_equal 3, User.where(ident: nil).count
49
+ User.initialize_public_ids!
50
+ assert_equal User.where(ident: nil).count, 0
51
+ end
52
+
7
53
  end
@@ -1,39 +1,51 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class HasPublicIdTest < ActiveSupport::TestCase
4
- fixtures :all
5
- self.use_transactional_fixtures = true
4
+ test "Mixin" do
5
+ assert ActiveRecord::Base.respond_to?(:has_public_id), "should respond to the method we define"
6
+ end
7
+
8
+ end
6
9
 
7
- test "ActiveRecord::Base responds to publicalhas_public_idly_identified_by" do
8
- assert User.respond_to?(:has_public_id), "should respond to the method we define"
10
+ class HasPublicId::UtilTest < ActiveSupport::TestCase
11
+ test "char_set.length" do
12
+ assert_equal 62, HasPublicId::Util.char_set.length
9
13
  end
10
14
 
11
- test "New users get an ID initialized" do
12
- assert User.new.ident.present?, "should have an id when initialized"
13
- assert_equal User.new.ident.first(4), 'use-', "should have a 3 letter prefix from the class name"
14
- end
15
- test "Ident should == to_param" do
16
- u = User.new
17
- assert_equal u.ident, u.to_param, "should match to_param"
18
- end
19
- test "Doesn't change on save, update" do
20
- u = User.new
21
- identifier = u.ident
22
- u.save!
23
- u.reload
24
- assert_equal identifier, u.ident, "doesn't match after create"
25
- u.save!
26
- u.reload
27
- assert_equal identifier, u.ident, "doesn't match after update"
28
- end
29
- test "Can be looked up by the ident" do
30
- u = User.create(name: 'joey')
31
- assert_equal u, User.find_by_public_id(u.to_param), "Can't be looked up by #{u.to_param}"
32
- end
33
- test "Initialize all the public id's" do
34
- # From fixtures...
35
- assert_equal 3, User.where(ident: nil).count
36
- User.initialize_public_ids!
37
- assert_equal User.where(ident: nil).count, 0
15
+ test "generate_random_suffix" do
16
+ keys = {}
17
+ 1000.times do |i|
18
+ # 62 ^ 10 possibiliities
19
+ suffix = HasPublicId::Util.generate_random_suffix(10)
20
+ assert_nil keys[suffix], "#{suffix} is a duplicate!"
21
+ keys[suffix] = i
22
+ end
23
+ end
24
+ test "generate_random_suffix(length)" do
25
+ assert_equal 10, HasPublicId::Util.generate_random_suffix(10).length
26
+ assert_equal 15, HasPublicId::Util.generate_random_suffix(15).length
27
+ end
28
+ test "new_public_id(with_prefix)" do
29
+ key = HasPublicId::Util.new_public_id(User, length: 10, prefix: 'user')
30
+ assert_equal('user-', key.first(5), "prefix option")
31
+ end
32
+ test "new_public_id(with_false_prefix)" do
33
+ key = HasPublicId::Util.new_public_id(User, length: 10, prefix: false)
34
+ assert key.match(/^[a-zA-Z0-9]{10}$/), "#{key} doesn't match 10 random alphanumerics"
35
+ assert_equal(10, key.length, "prefix: false")
36
+ end
37
+ test "new_public_id(with_nil_prefix)" do
38
+ key = HasPublicId::Util.new_public_id(User, length: 10, prefix: nil)
39
+ assert key.match(/^[a-zA-Z0-9]{10}$/), "#{key} doesn't match 10 random alphanumerics"
40
+ assert_equal(10, key.length, "prefix: nil")
41
+ end
42
+ test "new_public_id(with_blank_prefix)" do
43
+ key = HasPublicId::Util.new_public_id(User, length: 10, prefix: '')
44
+ assert key.match(/^[a-zA-Z0-9]{10}$/), "#{key} doesn't match 10 random alphanumerics"
45
+ assert_equal(10, key.length, "prefix: ''")
46
+ end
47
+ test "new_public_id(with_join_with)" do
48
+ key = HasPublicId::Util.new_public_id(User, length: 10, join_with: '_')
49
+ assert_equal('use_', key.first(4))
38
50
  end
39
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_public_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-09 00:00:00.000000000 Z
12
+ date: 2014-01-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails