better_record 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/better_record.rb +1 -1
- data/lib/better_record/rspec/extensions.rb +10 -0
- data/lib/better_record/rspec/extensions/boolean_column.rb +54 -0
- data/lib/better_record/rspec/extensions/has_valid_factory.rb +22 -0
- data/lib/better_record/rspec/extensions/optional_column.rb +19 -0
- data/lib/better_record/rspec/extensions/required_column.rb +37 -0
- data/lib/better_record/version.rb +1 -1
- data/lib/generators/better_record/eject_rspec_extensions/USAGE +12 -0
- data/lib/generators/better_record/eject_rspec_extensions/eject_rspec_extensions_generator.rb +8 -0
- metadata +8 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b34680cbdfc9ffc808911351efc1e7694a8ba71d7b3cfb8420cfed2af6cbc2ef
|
4
|
+
data.tar.gz: f0940956cf68e9043664be86359be4c0fe60a0c01165ab0e8c430547a2ee1957
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 826c96881eeb3caaa6cc37bf72adfc9dbba9a78a30854a63954295c57717e41bf96e7013de9f5c5d6700d4f61c6fd50a22eeb117d3752e60d9bdace03dce4d41
|
7
|
+
data.tar.gz: a1a368f27c284f95b99639cd839d17fde9b2e6d9331f4101262658b08b29a77c7d42cab718fd4671ae86f5ac5d3d37e24acd113ed7846912b65f9cedda4af0ba
|
data/lib/better_record.rb
CHANGED
@@ -17,7 +17,7 @@ module BetterRecord
|
|
17
17
|
self.app_domain_name = (ENV.fetch('APP_DOMAIN_NAME') { 'non_existant_domain.com' }).to_s
|
18
18
|
end
|
19
19
|
|
20
|
-
Dir.glob("#{File.expand_path(__dir__)}/better_record
|
20
|
+
Dir.glob("#{File.expand_path(__dir__)}/better_record/*.rb").each do |d|
|
21
21
|
require d unless (d =~ /fake/)
|
22
22
|
end
|
23
23
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module BetterRecord
|
2
|
+
module Rspec
|
3
|
+
module Extensions
|
4
|
+
def boolean_column(factory_name, column_name, default_val = false)
|
5
|
+
describe column_name.to_s do
|
6
|
+
let(:record) { build(factory_name) }
|
7
|
+
|
8
|
+
it "cannot be nil in the database" do
|
9
|
+
stubbed = record.dup
|
10
|
+
allow(stubbed).to receive(:set_booleans)
|
11
|
+
|
12
|
+
stubbed.__send__"#{column_name}=", nil
|
13
|
+
expect(stubbed.valid?).to be false
|
14
|
+
expect(stubbed.errors[column_name]).to include("must be true or false")
|
15
|
+
expect { stubbed.save(validate: false) }.to raise_error(ActiveRecord::NotNullViolation)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "defaults to '#{default_val}'" do
|
19
|
+
empty_record = record.class.new
|
20
|
+
expect(empty_record.__send__ column_name).to be default_val
|
21
|
+
end
|
22
|
+
|
23
|
+
it "will parse to boolean on save" do
|
24
|
+
record.__send__"#{column_name}=", nil
|
25
|
+
record.save
|
26
|
+
expect(record.__send__ column_name).to be false
|
27
|
+
|
28
|
+
record.__send__"#{column_name}=", 0
|
29
|
+
record.save
|
30
|
+
expect(record.__send__ column_name).to be false
|
31
|
+
|
32
|
+
record.__send__"#{column_name}=", 'false'
|
33
|
+
record.save
|
34
|
+
expect(record.__send__ column_name).to be false
|
35
|
+
|
36
|
+
record.__send__"#{column_name}=", 1
|
37
|
+
record.save
|
38
|
+
expect(record.__send__ column_name).to be true
|
39
|
+
|
40
|
+
record.__send__"#{column_name}=", 'asdf'
|
41
|
+
record.save
|
42
|
+
expect(record.__send__ column_name).to be true
|
43
|
+
|
44
|
+
record.__send__"#{column_name}=", 'true'
|
45
|
+
record.save
|
46
|
+
expect(record.__send__ column_name).to be true
|
47
|
+
|
48
|
+
record.destroy
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module BetterRecord
|
2
|
+
module Rspec
|
3
|
+
module Extensions
|
4
|
+
def has_valid_factory(factory_name, count = 10)
|
5
|
+
it "has a valid factory" do
|
6
|
+
records = []
|
7
|
+
count = (count.to_i == 0) ? 1 : count.to_i
|
8
|
+
count.times do
|
9
|
+
test_factory = build(factory_name)
|
10
|
+
unless test_factory.valid?
|
11
|
+
puts test_factory.errors.full_messages
|
12
|
+
end
|
13
|
+
expect(test_factory.valid?).to be true
|
14
|
+
expect(test_factory.save).to be true
|
15
|
+
records << test_factory
|
16
|
+
end
|
17
|
+
records.each {|f| f.destroy}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module BetterRecord
|
2
|
+
module Rspec
|
3
|
+
module Extensions
|
4
|
+
def optional_column(factory_name, column_name, &blk)
|
5
|
+
describe column_name.to_s do
|
6
|
+
let(:record) { build(factory_name) }
|
7
|
+
|
8
|
+
it "is optional" do
|
9
|
+
record.__send__"#{column_name}=", nil
|
10
|
+
expect(record.valid?).to be true
|
11
|
+
expect(record.errors[column_name]).to be_empty
|
12
|
+
end
|
13
|
+
|
14
|
+
instance_eval(&blk) if block_given?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module BetterRecord
|
2
|
+
module Rspec
|
3
|
+
module Extensions
|
4
|
+
def required_column(factory_name, column_name, unique = false, &blk)
|
5
|
+
describe column_name.to_s do
|
6
|
+
let(:record) { build(factory_name) }
|
7
|
+
|
8
|
+
it "is required" do
|
9
|
+
record.__send__"#{column_name}=", nil
|
10
|
+
expect(record.valid?).to be false
|
11
|
+
expect(record.errors[column_name]).to include("can't be blank")
|
12
|
+
expect { record.save(validate: false) }.to raise_error(ActiveRecord::NotNullViolation)
|
13
|
+
end
|
14
|
+
|
15
|
+
if unique
|
16
|
+
it "must be unique" do
|
17
|
+
expect(record.valid?).to be true
|
18
|
+
expect(record.save).to be true
|
19
|
+
|
20
|
+
dupped = record.dup
|
21
|
+
expect(dupped.valid?).to be false
|
22
|
+
expect(dupped.errors[column_name]).to include("has already been taken")
|
23
|
+
expect(dupped.save).to be false
|
24
|
+
|
25
|
+
record.destroy
|
26
|
+
expect(dupped.valid?).to be true
|
27
|
+
expect(dupped.save).to be true
|
28
|
+
dupped.destroy
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
instance_eval(&blk) if block_given?
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Description:
|
2
|
+
Eject BetterRecord::Rspec::Extensions into local spec dir
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate better_record:eject_rspec_extensions
|
6
|
+
|
7
|
+
This will create:
|
8
|
+
spec/extensions.rb
|
9
|
+
spec/extensions/boolean_column.rb
|
10
|
+
spec/extensions/has_valid_factory.rb
|
11
|
+
spec/extensions/optional_column.rb
|
12
|
+
spec/extensions/required_column.rb
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class BetterRecord::EjectRspecExtensionsGenerator < Rails::Generators::Base
|
2
|
+
source_root File.expand_path('templates', __dir__)
|
3
|
+
|
4
|
+
def copy_templates
|
5
|
+
template "#{BetterRecord::Engine.root}/lib/better_record/rspec/extensions.rb", 'spec/extensions.rb'
|
6
|
+
directory "#{BetterRecord::Engine.root}/lib/better_record/rspec/extensions", 'spec/extensions'
|
7
|
+
end
|
8
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: better_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sampson Crowley
|
@@ -196,7 +196,14 @@ files:
|
|
196
196
|
- lib/better_record/railtie.rb
|
197
197
|
- lib/better_record/reflection.rb
|
198
198
|
- lib/better_record/relation.rb
|
199
|
+
- lib/better_record/rspec/extensions.rb
|
200
|
+
- lib/better_record/rspec/extensions/boolean_column.rb
|
201
|
+
- lib/better_record/rspec/extensions/has_valid_factory.rb
|
202
|
+
- lib/better_record/rspec/extensions/optional_column.rb
|
203
|
+
- lib/better_record/rspec/extensions/required_column.rb
|
199
204
|
- lib/better_record/version.rb
|
205
|
+
- lib/generators/better_record/eject_rspec_extensions/USAGE
|
206
|
+
- lib/generators/better_record/eject_rspec_extensions/eject_rspec_extensions_generator.rb
|
200
207
|
- lib/generators/better_record/setup/USAGE
|
201
208
|
- lib/generators/better_record/setup/setup_generator.rb
|
202
209
|
- lib/generators/better_record/setup/templates/gitattributes
|