object_id_gem 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,69 @@
1
+ require 'objectid_columns'
2
+
3
+ unless defined?(VALID_OBJECTID_CLASSES)
4
+ VALID_OBJECTID_CLASSES = [ BSON::ObjectId ]
5
+ VALID_OBJECTID_CLASSES << Moped::BSON::ObjectId if defined?(Moped::BSON::ObjectId)
6
+ end
7
+
8
+ describe "Objectid extensions" do
9
+ HEX = "0123456789abcdef"
10
+
11
+ def hex(length)
12
+ out = ""
13
+ length.times { out << HEX[rand(HEX.length)] }
14
+ out
15
+ end
16
+
17
+ def binary(length)
18
+ out = ""
19
+ out.force_encoding(Encoding::BINARY) if out.respond_to?(:encoding)
20
+ length.times { out << rand(256).chr }
21
+ out
22
+ end
23
+
24
+ describe "String extensions" do
25
+ it "should raise an error on invalid cases" do
26
+ expect { "foo".to_bson_id }.to raise_error(ArgumentError)
27
+ expect { hex(23).to_bson_id }.to raise_error(ArgumentError)
28
+ expect { hex(25).to_bson_id }.to raise_error(ArgumentError)
29
+ expect { binary(11).to_bson_id }.to raise_error(ArgumentError)
30
+ expect { binary(13).to_bson_id }.to raise_error(ArgumentError)
31
+
32
+ if "".respond_to?(:encoding)
33
+ wrong_encoding = binary(12)
34
+ wrong_encoding.force_encoding(Encoding::ISO_8859_1)
35
+ expect { wrong_encoding.to_bson_id }.to raise_error(ArgumentError)
36
+ end
37
+ end
38
+ end
39
+
40
+ VALID_OBJECTID_CLASSES.each do |test_class|
41
+ context "using BSON class #{test_class.name}" do
42
+ before :each do
43
+ @tc = test_class
44
+ ObjectidColumns.preferred_bson_class = test_class
45
+ end
46
+
47
+ it "should convert Strings to the class correctly" do
48
+ h = hex(24)
49
+ h.to_bson_id.class.should == @tc
50
+ h.to_bson_id.to_s.should == h
51
+
52
+ b = binary(12)
53
+ b.to_bson_id.class.should == @tc
54
+ b.to_bson_id
55
+ end
56
+
57
+ it "should convert the class to binary correctly" do
58
+ b = binary(12)
59
+ object_id = b.to_bson_id
60
+ object_id.to_binary.should == b
61
+ end
62
+
63
+ it "should just return self for #to_bson_id" do
64
+ oid = @tc.new
65
+ oid.to_bson_id.should be(oid)
66
+ end
67
+ end
68
+ end
69
+ end
metadata ADDED
@@ -0,0 +1,194 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: object_id_gem
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Andrew Geweke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-05-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.14'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.14'
83
+ - !ruby/object:Gem::Dependency
84
+ name: moped
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.5'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: bson
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.9'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.9'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pg
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: composite_primary_keys
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description:
140
+ email:
141
+ - ageweke@swiftype.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".travis.yml"
148
+ - CHANGES.md
149
+ - Gemfile
150
+ - LICENSE.txt
151
+ - README.md
152
+ - Rakefile
153
+ - lib/objectid_columns.rb
154
+ - lib/objectid_columns/active_record/base.rb
155
+ - lib/objectid_columns/active_record/relation.rb
156
+ - lib/objectid_columns/arel/visitors/to_sql.rb
157
+ - lib/objectid_columns/dynamic_methods_module.rb
158
+ - lib/objectid_columns/extensions.rb
159
+ - lib/objectid_columns/has_objectid_columns.rb
160
+ - lib/objectid_columns/objectid_columns_manager.rb
161
+ - lib/objectid_columns/version.rb
162
+ - object_id_gem.gemspec
163
+ - spec/objectid_columns/helpers/database_helper.rb
164
+ - spec/objectid_columns/helpers/system_helpers.rb
165
+ - spec/objectid_columns/system/basic_system_spec.rb
166
+ - spec/objectid_columns/system/extensions_spec.rb
167
+ homepage: https://www.github.com/swiftype/objectid_columns
168
+ licenses:
169
+ - MIT
170
+ metadata: {}
171
+ post_install_message:
172
+ rdoc_options: []
173
+ require_paths:
174
+ - lib
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ requirements: []
186
+ rubygems_version: 3.1.2
187
+ signing_key:
188
+ specification_version: 4
189
+ summary: Transparently store MongoDB ObjectId values in ActiveRecord.
190
+ test_files:
191
+ - spec/objectid_columns/helpers/database_helper.rb
192
+ - spec/objectid_columns/helpers/system_helpers.rb
193
+ - spec/objectid_columns/system/basic_system_spec.rb
194
+ - spec/objectid_columns/system/extensions_spec.rb