filterism 1.0.0 → 2.0.0
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 +7 -0
- data/.gitignore +5 -24
- data/.irbrc +2 -0
- data/.rspec +1 -2
- data/Gemfile +2 -2
- data/LICENSE.txt +22 -0
- data/README.md +41 -4
- data/Rakefile +1 -17
- data/exec/autospec +16 -0
- data/exec/htmldiff +16 -0
- data/exec/ldiff +16 -0
- data/exec/rake +16 -0
- data/exec/rspec +16 -0
- data/filterism.gemspec +25 -22
- data/lib/filterism.rb +3 -79
- data/lib/filterism/adapters/active_record_adapter.rb +45 -0
- data/lib/filterism/parsers/params_parser.rb +51 -0
- data/lib/filterism/version.rb +1 -1
- data/spec/adapters/active_record_adapter_spec.rb +84 -0
- data/spec/db/schema.rb +7 -0
- data/spec/factories.rb +8 -0
- data/spec/parsers/params_parser_spec.rb +52 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/support/active_record.rb +24 -0
- metadata +150 -148
- data/spec/filterism_spec.rb +0 -91
- data/spec/finders/activerecord_test_connector.rb +0 -104
- data/spec/fixtures/post.rb +0 -3
- data/spec/fixtures/posts.yml +0 -16
- data/spec/fixtures/schema.rb +0 -17
- data/spec/fixtures/user.rb +0 -2
- data/spec/fixtures/users.yml +0 -30
- data/spec/helper.rb +0 -6
@@ -0,0 +1,51 @@
|
|
1
|
+
module Filterism
|
2
|
+
class ConditionParser
|
3
|
+
attr_accessor :comparators
|
4
|
+
def initialize
|
5
|
+
@comparators = {
|
6
|
+
'equal_to' => '=',
|
7
|
+
'not_equal_to' => '!=',
|
8
|
+
|
9
|
+
'greater_than' => '>',
|
10
|
+
'gt' => '>',
|
11
|
+
'after' => '>',
|
12
|
+
'greater_than_or_equal_to' => '>=',
|
13
|
+
'gtet' => '>=',
|
14
|
+
|
15
|
+
'less_than' => '<',
|
16
|
+
'lt' => '<',
|
17
|
+
'before' => '<',
|
18
|
+
'less_than_or_equal_to' => '<=',
|
19
|
+
'ltet' => '<=',
|
20
|
+
|
21
|
+
'like' => 'LIKE',
|
22
|
+
|
23
|
+
'in' => 'IN'
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def parse(params)
|
28
|
+
conditions = []
|
29
|
+
params.each do |key, value|
|
30
|
+
keysplit = key.to_s.split('_is_')
|
31
|
+
if @comparators.keys.include?(keysplit[1])
|
32
|
+
conditions <<
|
33
|
+
{
|
34
|
+
key: keysplit[0],
|
35
|
+
comparator: @comparators[keysplit[1]],
|
36
|
+
value: value
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
return conditions
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_comparator(comparator)
|
44
|
+
@comparators = @comparators.merge(comparator)
|
45
|
+
end
|
46
|
+
|
47
|
+
def delete_comparator(comparator_key)
|
48
|
+
@comparators.delete(comparator_key)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/filterism/version.rb
CHANGED
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'support/active_record'
|
3
|
+
|
4
|
+
describe Filterism do
|
5
|
+
describe "#filter" do
|
6
|
+
ActiveRecord::Base.include(Filterism)
|
7
|
+
|
8
|
+
class User < ActiveRecord::Base
|
9
|
+
end
|
10
|
+
|
11
|
+
it "filters for equals" do
|
12
|
+
user = User.where("name = 'Phil Spitler'").first
|
13
|
+
expect(User.filter([
|
14
|
+
{key: 'name', comparator: '=', value: 'Phil Spitler'},
|
15
|
+
]).first).
|
16
|
+
to eq(user)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "filters for LIKE" do
|
20
|
+
user = User.where("name LIKE '%Billy%'").first
|
21
|
+
expect(User.filter([
|
22
|
+
{key: 'name', comparator: 'LIKE', value: 'Billy'},
|
23
|
+
]).first).
|
24
|
+
to eq(user)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "filters for IN" do
|
28
|
+
user = User.where("name IN ('Phil Spitler','Joe Stuffypants')")
|
29
|
+
expect(User.filter([
|
30
|
+
{key: 'name', comparator: 'IN', value: 'Phil Spitler,Joe Stuffypants'},
|
31
|
+
]).to_a).
|
32
|
+
to eq(user.to_a)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "filters for booleans" do
|
36
|
+
user = User.where(is_young_at_heart: true)
|
37
|
+
expect(User.filter([
|
38
|
+
{key: 'is_young_at_heart', comparator: '=', value: 'true'},
|
39
|
+
]).to_a).
|
40
|
+
to eq(user.to_a)
|
41
|
+
end
|
42
|
+
|
43
|
+
context "with filterable fields" do
|
44
|
+
it "filters only on filterable fields" do
|
45
|
+
class User < ActiveRecord::Base
|
46
|
+
filterable_fields :age, :is_young_at_heart
|
47
|
+
end
|
48
|
+
|
49
|
+
user = User.all.to_a
|
50
|
+
expect(User.filter([
|
51
|
+
{key: 'name', comparator: '=', value: 'Phil Spitler'},
|
52
|
+
]).to_a).
|
53
|
+
to eq(user)
|
54
|
+
|
55
|
+
user = User.where(is_young_at_heart: true)
|
56
|
+
expect(User.filter([
|
57
|
+
{key: 'is_young_at_heart', comparator: '=', value: "true"}
|
58
|
+
]).to_a).
|
59
|
+
to eq(user)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "with unfilterable fields" do
|
64
|
+
it "filters only on unfilterable fields" do
|
65
|
+
class User < ActiveRecord::Base
|
66
|
+
unfilterable_fields :name
|
67
|
+
end
|
68
|
+
|
69
|
+
user = User.all.to_a
|
70
|
+
expect(User.filter([
|
71
|
+
{key: 'name', comparator: '=', value: 'Phil Spitler'},
|
72
|
+
]).to_a).
|
73
|
+
to eq(user)
|
74
|
+
|
75
|
+
user = User.where(is_young_at_heart: true)
|
76
|
+
expect(User.filter([
|
77
|
+
{key: 'is_young_at_heart', comparator: '=', value: "true"}
|
78
|
+
]).to_a).
|
79
|
+
to eq(user)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
data/spec/db/schema.rb
ADDED
data/spec/factories.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Filterism::ConditionParser do
|
4
|
+
before(:all) do
|
5
|
+
@condition_parser = Filterism::ConditionParser.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#parse" do
|
9
|
+
it "has the parse method" do
|
10
|
+
expect(@condition_parser).to respond_to(:parse)
|
11
|
+
end
|
12
|
+
subject { -> (params) { return @condition_parser.parse(params) }}
|
13
|
+
|
14
|
+
it "returns a hash" do
|
15
|
+
expect(subject.call({ name_is_equal_to: 'David' })).to be_an(Array)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "has the keys 'key, comparator, value'" do
|
19
|
+
expect(subject.call({ name_is_equal_to: 'David' })[0].keys.sort).
|
20
|
+
to eq([:comparator, :key, :value])
|
21
|
+
end
|
22
|
+
|
23
|
+
specify "the returned hashes are derived from the hash which was passed in" do
|
24
|
+
conditions = subject.call({ name_is_equal_to: 'John' }).first
|
25
|
+
expect(conditions[:key]).to eq "name"
|
26
|
+
expect(conditions[:comparator]).to eq "="
|
27
|
+
expect(conditions[:value]).to eq "John"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#add_comparator" do
|
32
|
+
it "has the add_comparator method" do
|
33
|
+
expect(@condition_parser).to respond_to(:add_comparator).with(1).argument
|
34
|
+
end
|
35
|
+
|
36
|
+
it "adds the new comparator to the comparators Hash" do
|
37
|
+
expect(@condition_parser.add_comparator({"equals_to" => "="})).to include("equals_to" => "=")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#delete_comparator" do
|
42
|
+
it "has the delete_comparator method" do
|
43
|
+
expect(@condition_parser).to respond_to(:delete_comparator).with(1).argument
|
44
|
+
end
|
45
|
+
|
46
|
+
it "deletes the comparator from the comparators Hash" do
|
47
|
+
@condition_parser.add_comparator({"equals_to" => "="})
|
48
|
+
expect(@condition_parser.delete_comparator("equals_to")).not_to include("equals_to")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
require 'simplecov'
|
8
|
+
SimpleCov.add_filter '.bundle'
|
9
|
+
SimpleCov.start
|
10
|
+
require 'filterism'
|
11
|
+
require 'factory_girl'
|
12
|
+
|
13
|
+
RSpec.configure do |config|
|
14
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
15
|
+
config.run_all_when_everything_filtered = true
|
16
|
+
config.include FactoryGirl::Syntax::Methods
|
17
|
+
#config.filter_run :focus
|
18
|
+
|
19
|
+
# Run specs in random order to surface order dependencies. If you find an
|
20
|
+
# order dependency and want to debug it, you can fix the order by providing
|
21
|
+
# the seed, which is printed after each run.
|
22
|
+
# --seed 1234
|
23
|
+
config.order = 'random'
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
|
3
|
+
ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
|
4
|
+
|
5
|
+
load "spec/db/schema.rb"
|
6
|
+
|
7
|
+
FactoryGirl.find_definitions
|
8
|
+
|
9
|
+
class User < ActiveRecord::Base
|
10
|
+
end
|
11
|
+
|
12
|
+
FactoryGirl.create(:user)
|
13
|
+
|
14
|
+
FactoryGirl.create(:user, {
|
15
|
+
name: 'Billy Bob',
|
16
|
+
age: 18,
|
17
|
+
is_young_at_heart: true
|
18
|
+
})
|
19
|
+
|
20
|
+
FactoryGirl.create(:user, {
|
21
|
+
name: 'Joe Stuffypants',
|
22
|
+
age: 27,
|
23
|
+
is_young_at_heart: false
|
24
|
+
})
|
metadata
CHANGED
@@ -1,187 +1,189 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: filterism
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 1
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
version: 1.0.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0
|
10
5
|
platform: ruby
|
11
|
-
authors:
|
6
|
+
authors:
|
12
7
|
- Phil Spitler
|
13
8
|
autorequire:
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
requirements:
|
26
|
-
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 6
|
31
|
-
version: "0.6"
|
11
|
+
date: 2014-05-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
32
20
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: rake
|
36
21
|
prerelease: false
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
46
34
|
type: :development
|
47
|
-
|
48
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
49
42
|
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
50
49
|
prerelease: false
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bond
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
60
62
|
type: :development
|
61
|
-
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: simplecov
|
64
63
|
prerelease: false
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
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: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
74
76
|
type: :development
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: yard
|
78
77
|
prerelease: false
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: activerecord
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
88
90
|
type: :development
|
89
|
-
version_requirements: *id005
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: sqlite3
|
92
91
|
prerelease: false
|
93
|
-
|
94
|
-
|
95
|
-
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sqlite3
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
96
101
|
- - ">="
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
- 0
|
100
|
-
version: "0"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
101
104
|
type: :development
|
102
|
-
version_requirements: *id006
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: activerecord
|
105
105
|
prerelease: false
|
106
|
-
|
107
|
-
|
108
|
-
requirements:
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
109
108
|
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: factory_girl
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '4.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '4.0'
|
125
|
+
description: ''
|
126
|
+
email:
|
127
|
+
- pspitler@gmail.com
|
120
128
|
executables: []
|
121
|
-
|
122
129
|
extensions: []
|
123
|
-
|
124
130
|
extra_rdoc_files: []
|
125
|
-
|
126
|
-
|
127
|
-
- .
|
128
|
-
- .
|
129
|
-
- .
|
130
|
-
- .rspec
|
131
|
-
- .yardopts
|
131
|
+
files:
|
132
|
+
- ".autotest"
|
133
|
+
- ".gemtest"
|
134
|
+
- ".gitignore"
|
135
|
+
- ".irbrc"
|
136
|
+
- ".rspec"
|
137
|
+
- ".yardopts"
|
132
138
|
- Gemfile
|
133
139
|
- LICENSE.md
|
140
|
+
- LICENSE.txt
|
134
141
|
- README.md
|
135
142
|
- Rakefile
|
143
|
+
- exec/autospec
|
144
|
+
- exec/htmldiff
|
145
|
+
- exec/ldiff
|
146
|
+
- exec/rake
|
147
|
+
- exec/rspec
|
136
148
|
- filterism.gemspec
|
137
149
|
- lib/filterism.rb
|
150
|
+
- lib/filterism/adapters/active_record_adapter.rb
|
151
|
+
- lib/filterism/parsers/params_parser.rb
|
138
152
|
- lib/filterism/version.rb
|
139
|
-
- spec/
|
140
|
-
- spec/
|
141
|
-
- spec/
|
142
|
-
- spec/
|
143
|
-
- spec/
|
144
|
-
- spec/
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
licenses: []
|
150
|
-
|
153
|
+
- spec/adapters/active_record_adapter_spec.rb
|
154
|
+
- spec/db/schema.rb
|
155
|
+
- spec/factories.rb
|
156
|
+
- spec/parsers/params_parser_spec.rb
|
157
|
+
- spec/spec_helper.rb
|
158
|
+
- spec/support/active_record.rb
|
159
|
+
homepage: http://sproutkey.com
|
160
|
+
licenses:
|
161
|
+
- MIT
|
162
|
+
metadata: {}
|
151
163
|
post_install_message:
|
152
164
|
rdoc_options: []
|
153
|
-
|
154
|
-
require_paths:
|
165
|
+
require_paths:
|
155
166
|
- lib
|
156
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
157
|
-
|
158
|
-
requirements:
|
167
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
159
169
|
- - ">="
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
|
-
none: false
|
166
|
-
requirements:
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
167
174
|
- - ">="
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
|
170
|
-
- 0
|
171
|
-
version: "0"
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
172
177
|
requirements: []
|
173
|
-
|
174
178
|
rubyforge_project:
|
175
|
-
rubygems_version:
|
179
|
+
rubygems_version: 2.2.2
|
176
180
|
signing_key:
|
177
|
-
specification_version:
|
178
|
-
summary:
|
179
|
-
test_files:
|
180
|
-
- spec/
|
181
|
-
- spec/
|
182
|
-
- spec/
|
183
|
-
- spec/
|
184
|
-
- spec/
|
185
|
-
- spec/
|
186
|
-
- spec/fixtures/users.yml
|
187
|
-
- spec/helper.rb
|
181
|
+
specification_version: 4
|
182
|
+
summary: DSL for communicating filter intent via HTTP parameters in the URL
|
183
|
+
test_files:
|
184
|
+
- spec/adapters/active_record_adapter_spec.rb
|
185
|
+
- spec/db/schema.rb
|
186
|
+
- spec/factories.rb
|
187
|
+
- spec/parsers/params_parser_spec.rb
|
188
|
+
- spec/spec_helper.rb
|
189
|
+
- spec/support/active_record.rb
|