fixturama 0.0.2 → 0.0.3
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +13 -0
- data/README.md +16 -3
- data/fixturama.gemspec +1 -1
- data/lib/fixturama/config.rb +39 -0
- data/lib/fixturama.rb +5 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9f04b46184ce1d6f3dcb64b6d39b16f0d33b1fa4f5c0900328361a43c984f521
|
4
|
+
data.tar.gz: 52356f415a1ed49571c0448e563d7b60ad6d800728de9763fc66cd3f39b37b89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eebbc37fc482726aa1cffef2d9d2f26e309a1bc6ca63c11719ecb5d22629eafd93218803a7bb2575a59d508185f0a18722c766e41ab68be1f8f7f9c3d9706ffe
|
7
|
+
data.tar.gz: 6c81e6161a0a772a2a947407400ccf51888cb734f191ad7b60187423d550cb5894ef2a110f1bf808fdaf6e4e754f678400a41947e71a6e42c230b09664d56b62
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
7
7
|
|
8
|
+
## [0.0.3] - [2018-05-04]
|
9
|
+
|
10
|
+
### Added
|
11
|
+
|
12
|
+
- Helper method to configuge start ids (sclinede, nepalez)
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
RSpec.configure do |c|
|
16
|
+
c.before(:suite) { Fixturama.start_ids_from(1_000_000_000) }
|
17
|
+
end
|
18
|
+
```
|
19
|
+
|
8
20
|
## [0.0.2] - [2018-04-27]
|
9
21
|
|
10
22
|
### Added
|
@@ -39,3 +51,4 @@ This is a first public release with features extracted from production app.
|
|
39
51
|
|
40
52
|
[0.0.1]: https://github.com/nepalez/fixturama/releases/tag/v0.0.1
|
41
53
|
[0.0.2]: https://github.com/nepalez/fixturama/compare/v0.0.1...v0.0.2
|
54
|
+
[0.0.3]: https://github.com/nepalez/fixturama/compare/v0.0.2...v0.0.3
|
data/README.md
CHANGED
@@ -14,6 +14,19 @@ Collection of helpers for dealing with fixtures in [RSpec][rspec]
|
|
14
14
|
gem "fixturama"
|
15
15
|
```
|
16
16
|
|
17
|
+
## Configuration
|
18
|
+
|
19
|
+
On Rails add offsets to id sequences of database tables.
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
# spec/rails_helper.rb
|
23
|
+
RSpec.configure do |config|
|
24
|
+
config.before(:suite) { Fixturama.start_ids_from 1_000_000 }
|
25
|
+
end
|
26
|
+
```
|
27
|
+
|
28
|
+
Now when you hardcode ids in fixtures (under 1_000_000), they won't conflict with authomatically created ones.
|
29
|
+
|
17
30
|
## Usage
|
18
31
|
|
19
32
|
```ruby
|
@@ -58,7 +71,7 @@ end
|
|
58
71
|
|
59
72
|
The seed (`seed_fixture`) file should be a YAML/JSON with opinionated parameters, namely:
|
60
73
|
|
61
|
-
- `type` for the name of the [FactoryBot][
|
74
|
+
- `type` for the name of the [FactoryBot][factory-bot] factory
|
62
75
|
- `traits` for the factory traits
|
63
76
|
- `params` for parameters of the factory
|
64
77
|
|
@@ -99,7 +112,7 @@ Every action either `return` some value, or `raise` some exception
|
|
99
112
|
# allow(Notifier)
|
100
113
|
# .to receive_message_chain(:create)
|
101
114
|
# .with(:profileDeleted, 42)
|
102
|
-
# .and_raise
|
115
|
+
# .and_raise ActiveRecord::RecordNotFound
|
103
116
|
#
|
104
117
|
---
|
105
118
|
- class: Notifier
|
@@ -110,7 +123,7 @@ Every action either `return` some value, or `raise` some exception
|
|
110
123
|
- <%= profile_id %>
|
111
124
|
actions:
|
112
125
|
- return: true
|
113
|
-
- raise:
|
126
|
+
- raise: ActiveRecord::RecordNotFound
|
114
127
|
```
|
115
128
|
|
116
129
|
```graphql
|
data/fixturama.gemspec
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Fixturama::Config
|
2
|
+
module_function
|
3
|
+
|
4
|
+
#
|
5
|
+
# @param [#to_i] value
|
6
|
+
# @return [Boolean]
|
7
|
+
#
|
8
|
+
def start_ids_from(value)
|
9
|
+
require "active_record"
|
10
|
+
|
11
|
+
db_name = ActiveRecord::Base.connection_config[:database]
|
12
|
+
sql = format(SEQUENCE_BOOST_SCRIPT, db_name: db_name, min_id: value.to_i)
|
13
|
+
ActiveRecord::Base.connection.execute(sql)
|
14
|
+
|
15
|
+
true
|
16
|
+
rescue LoadError
|
17
|
+
false
|
18
|
+
end
|
19
|
+
|
20
|
+
# @private
|
21
|
+
SEQUENCE_BOOST_SCRIPT = <<~SQL.freeze
|
22
|
+
DO $$
|
23
|
+
DECLARE
|
24
|
+
seq_name TEXT;
|
25
|
+
|
26
|
+
BEGIN
|
27
|
+
FOR seq_name IN (select table_name from information_schema.tables where
|
28
|
+
table_catalog='%<db_name>s' and table_schema='public') LOOP
|
29
|
+
BEGIN
|
30
|
+
EXECUTE ' \
|
31
|
+
SELECT setval('''||seq_name||'_id_seq''::regclass, %<min_id>s); ';
|
32
|
+
EXCEPTION
|
33
|
+
WHEN undefined_table THEN
|
34
|
+
NULL;
|
35
|
+
END;
|
36
|
+
END LOOP;
|
37
|
+
END$$;
|
38
|
+
SQL
|
39
|
+
end
|
data/lib/fixturama.rb
CHANGED
@@ -6,10 +6,15 @@ require "rspec"
|
|
6
6
|
require "yaml"
|
7
7
|
|
8
8
|
module Fixturama
|
9
|
+
require_relative "fixturama/config"
|
9
10
|
require_relative "fixturama/utils"
|
10
11
|
require_relative "fixturama/stubs"
|
11
12
|
require_relative "fixturama/seed"
|
12
13
|
|
14
|
+
def self.start_ids_from(value)
|
15
|
+
Config.start_ids_from(value)
|
16
|
+
end
|
17
|
+
|
13
18
|
def stub_fixture(path, **opts)
|
14
19
|
items = load_fixture(path, **opts)
|
15
20
|
raise "The fixture should contain an array" unless items.is_a?(Array)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fixturama
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozin (nepalez)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04
|
11
|
+
date: 2019-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: factory_bot
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- Rakefile
|
114
114
|
- fixturama.gemspec
|
115
115
|
- lib/fixturama.rb
|
116
|
+
- lib/fixturama/config.rb
|
116
117
|
- lib/fixturama/rspec.rb
|
117
118
|
- lib/fixturama/seed.rb
|
118
119
|
- lib/fixturama/stubs.rb
|
@@ -150,8 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
151
|
- !ruby/object:Gem::Version
|
151
152
|
version: '0'
|
152
153
|
requirements: []
|
153
|
-
|
154
|
-
rubygems_version: 2.6.14
|
154
|
+
rubygems_version: 3.0.3
|
155
155
|
signing_key:
|
156
156
|
specification_version: 4
|
157
157
|
summary: A set of helpers to prettify specs with fixtures
|