summaryrefslogtreecommitdiff
path: root/spec/models/concerns
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2017-06-29 15:37:37 +0200
committerYorick Peterse <yorickpeterse@gmail.com>2017-06-29 15:37:37 +0200
commitaf1f6844c98bfb4adda1c20dc75b808f031a4256 (patch)
tree7042096cf2b58ed08067f8c24b667226cbf32cf3 /spec/models/concerns
parent88c60307bd1f215095834f09a1a5cb18701ac8ad (diff)
downloadgitlab-ce-af1f6844c98bfb4adda1c20dc75b808f031a4256.tar.gz
Added code for defining SHA attributes
These attributes are stored in binary in the database, but exposed as strings. This allows one to query/create data using plain SHA1 hashes as Strings, while storing them more efficiently as binary.
Diffstat (limited to 'spec/models/concerns')
-rw-r--r--spec/models/concerns/sha_attribute_spec.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/spec/models/concerns/sha_attribute_spec.rb b/spec/models/concerns/sha_attribute_spec.rb
new file mode 100644
index 00000000000..9e37c2b20c4
--- /dev/null
+++ b/spec/models/concerns/sha_attribute_spec.rb
@@ -0,0 +1,27 @@
+require 'spec_helper'
+
+describe ShaAttribute do
+ let(:model) { Class.new { include ShaAttribute } }
+
+ before do
+ columns = [
+ double(:column, name: 'name', type: :text),
+ double(:column, name: 'sha1', type: :binary)
+ ]
+
+ allow(model).to receive(:columns).and_return(columns)
+ end
+
+ describe '#sha_attribute' do
+ it 'defines a SHA attribute for a binary column' do
+ expect(model).to receive(:attribute)
+ .with(:sha1, an_instance_of(Gitlab::Database::ShaAttribute))
+
+ model.sha_attribute(:sha1)
+ end
+
+ it 'raises ArgumentError when the column type is not :binary' do
+ expect { model.sha_attribute(:name) }.to raise_error(ArgumentError)
+ end
+ end
+end