sift 1.1.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,85 @@
1
+ require_relative "../../spec_helper"
2
+
3
+ require "sift/validate/decision"
4
+
5
+ module Sift
6
+ module Validate
7
+ describe Decision do
8
+ describe "#valid_user?" do
9
+ it "will return true" do
10
+ validator = Decision.new(
11
+ user_id: "hello world",
12
+ source: :hello_world,
13
+ analyst: "asdfsadf@heyo.com"
14
+ )
15
+
16
+ expect(validator.valid_user?).to be(true)
17
+ end
18
+
19
+ it "with invalid user_id, will return false" do
20
+ validator = Decision.new(order_id: "asfasdf")
21
+ expect(validator.valid_user?).to be(false), "nil user is valid"
22
+
23
+ validator = Decision.new(order_id: "asfasdf", user_id: {})
24
+ expect(validator.valid_user?).to be(false), "user hash is valid"
25
+
26
+ validator = Decision.new(order_id: "asfasdf", user_id: /werwer/)
27
+ expect(validator.valid_user?).to be(false), "regex user is valid"
28
+ end
29
+ end
30
+
31
+ describe "#valid_order?" do
32
+ it "will return true with valid configs" do
33
+ validator = Decision.new(
34
+ order_id: "order_foo_bar_12354",
35
+ user_id: "hello world",
36
+ source: :hello_world,
37
+ analyst: "asdfsadf@heyo.com"
38
+ )
39
+
40
+ expect(validator.valid_order?).to be(true)
41
+ end
42
+
43
+ context "with invalid params:" do
44
+ it "user_id, will return false" do
45
+ validator = Decision.new(order_id: "asfasdf")
46
+ expect(validator.valid_order?).to be(false), "nil user is valid"
47
+
48
+ validator = Decision.new(order_id: "asfasdf", user_id: {})
49
+ expect(validator.valid_order?).to be(false), "user hash is valid"
50
+
51
+ validator = Decision.new(order_id: "asfasdf", user_id: /werwer/)
52
+ expect(validator.valid_order?).to be(false), "regex user is valid"
53
+ end
54
+
55
+ it "order_id, will return false" do
56
+ validator = Decision.new(user_id: 1235)
57
+ expect(validator.valid_order?).to be(false)
58
+
59
+ validator = Decision.new(user_id: 1235, order_id: {})
60
+ expect(validator.valid_order?).to be(false)
61
+
62
+ validator = Decision.new(user_id: 1235, order_id: /23424/)
63
+ expect(validator.valid_order?).to be(false)
64
+ end
65
+ end
66
+ end
67
+
68
+ describe "#error_messages" do
69
+ it "will return an array of error messages" do
70
+ validator = Decision.new
71
+
72
+ error_message =
73
+ "#{Primitive::ERROR_MESSAGES[:non_empty_string]}, got NilClass"
74
+
75
+ validator.valid_order?
76
+
77
+ expect(validator.error_messages).to contain_exactly(
78
+ "order_id #{error_message}",
79
+ "user_id #{error_message}"
80
+ )
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,73 @@
1
+ require_relative "../../spec_helper"
2
+
3
+ require "sift/validate/primitive"
4
+
5
+ module Sift
6
+ module Validate
7
+ describe Primitive do
8
+ describe ".non_empty_string" do
9
+ it "will return nil for valid values" do
10
+ expect(Primitive.non_empty_string("foobar")).to be_nil
11
+ end
12
+
13
+ it "will return an error message" do
14
+ [nil, 1, /asdfasdf/].each do |value|
15
+ error_message = "#{Primitive::ERROR_MESSAGES[:non_empty_string]}" \
16
+ ", got #{value.class}"
17
+
18
+ expect(Primitive.non_empty_string(value)).to eq(error_message)
19
+ end
20
+
21
+ expect(Primitive.non_empty_string("")).to(
22
+ eq(Primitive.send(:empty_string_message, :non_empty_string))
23
+ )
24
+ end
25
+ end
26
+
27
+ describe ".is_numeric" do
28
+ it "will return nil for numeric values" do
29
+ [1, 29.01, 29 ** 1992848499198, -2].each do |value|
30
+ expect(Primitive.numeric(value)).to(
31
+ be_nil,
32
+ "#{value} is a non numeric value"
33
+ )
34
+ end
35
+ end
36
+
37
+ it "will return an error message for non numeric values" do
38
+ ["foobar", nil, :hello_world, {}].each do |value|
39
+ expect(Primitive.numeric(value)).to(
40
+ be(Primitive::ERROR_MESSAGES[:numeric]),
41
+ "#{value} is a numeric value"
42
+ )
43
+ end
44
+ end
45
+ end
46
+
47
+ describe ".is_string_or_number?" do
48
+ it "will return nil for numeric or strings" do
49
+ [1234, "asdfasdf", "1234_asdfsdf"].each do |value|
50
+ expect(Primitive.string_or_number(value)).to(
51
+ be_nil,
52
+ "#{value} is a non numeric value"
53
+ )
54
+ end
55
+ end
56
+
57
+ it "will return an error message for any other type" do
58
+ [{}, [], :hello_world, nil].each do |value|
59
+ error_message = "#{Primitive::ERROR_MESSAGES[:string_or_number]}," \
60
+ " got #{value.class}"
61
+
62
+ expect(Primitive.string_or_number(value)).to eq(error_message)
63
+ end
64
+
65
+ error_message = "#{Primitive::ERROR_MESSAGES[:string_or_number]}, " \
66
+ "got an empty string"
67
+ expect(Primitive.string_or_number("")).to eq(error_message)
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
73
+
metadata CHANGED
@@ -1,161 +1,190 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sift
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
5
- prerelease:
4
+ version: 4.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Fred Sadaghiani
8
+ - Yoav Schatzberg
9
+ - Jacob Burnim
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-11-09 00:00:00.000000000 Z
13
+ date: 2019-05-15 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: rspec
16
17
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
18
  requirements:
19
- - - ~>
19
+ - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: 2.14.1
21
+ version: '3.5'
22
22
  type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
25
  requirements:
27
- - - ~>
26
+ - - "~>"
28
27
  - !ruby/object:Gem::Version
29
- version: 2.14.1
28
+ version: '3.5'
30
29
  - !ruby/object:Gem::Dependency
31
- name: fakeweb
30
+ name: rspec_junit_formatter
32
31
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
32
  requirements:
35
- - - ~>
33
+ - - ">="
36
34
  - !ruby/object:Gem::Version
37
- version: 1.3.0
35
+ version: '0'
38
36
  type: :development
39
37
  prerelease: false
40
38
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
39
  requirements:
43
- - - ~>
40
+ - - ">="
44
41
  - !ruby/object:Gem::Version
45
- version: 1.3.0
42
+ version: '0'
46
43
  - !ruby/object:Gem::Dependency
47
- name: httparty
44
+ name: pry
48
45
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
46
  requirements:
51
- - - ! '>='
47
+ - - ">="
52
48
  - !ruby/object:Gem::Version
53
- version: 0.12.0
54
- type: :runtime
49
+ version: '0'
50
+ type: :development
55
51
  prerelease: false
56
52
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
53
  requirements:
59
- - - ! '>='
54
+ - - ">="
60
55
  - !ruby/object:Gem::Version
61
- version: 0.12.0
56
+ version: '0'
62
57
  - !ruby/object:Gem::Dependency
63
- name: multi_json
58
+ name: webmock
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 1.16.0
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '2'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.16.0
74
+ - - "<"
75
+ - !ruby/object:Gem::Version
76
+ version: '2'
77
+ - !ruby/object:Gem::Dependency
78
+ name: httparty
64
79
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
80
  requirements:
67
- - - ! '>='
81
+ - - ">="
68
82
  - !ruby/object:Gem::Version
69
- version: 1.8.2
83
+ version: 0.11.0
70
84
  type: :runtime
71
85
  prerelease: false
72
86
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
87
  requirements:
75
- - - ! '>='
88
+ - - ">="
76
89
  - !ruby/object:Gem::Version
77
- version: 1.8.2
90
+ version: 0.11.0
78
91
  - !ruby/object:Gem::Dependency
79
- name: rspec
92
+ name: multi_json
80
93
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
94
  requirements:
83
- - - ! '>='
95
+ - - ">="
84
96
  - !ruby/object:Gem::Version
85
- version: '2.0'
86
- type: :development
97
+ version: '1.0'
98
+ type: :runtime
87
99
  prerelease: false
88
100
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
101
  requirements:
91
- - - ! '>='
102
+ - - ">="
92
103
  - !ruby/object:Gem::Version
93
- version: '2.0'
104
+ version: '1.0'
94
105
  - !ruby/object:Gem::Dependency
95
106
  name: rake
96
107
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
108
  requirements:
99
- - - ! '>='
109
+ - - ">="
100
110
  - !ruby/object:Gem::Version
101
111
  version: '0'
102
112
  type: :development
103
113
  prerelease: false
104
114
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
115
  requirements:
107
- - - ! '>='
116
+ - - ">="
108
117
  - !ruby/object:Gem::Version
109
118
  version: '0'
110
119
  description: Sift Science Ruby API. Please see http://siftscience.com for more details.
111
120
  email:
112
- - freds@siftscience.com
121
+ - support@siftscience.com
113
122
  executables: []
114
123
  extensions: []
115
124
  extra_rdoc_files: []
116
125
  files:
117
- - .gitignore
126
+ - ".circleci/config.yml"
127
+ - ".gitignore"
118
128
  - Gemfile
119
129
  - HISTORY
120
- - README.rdoc
130
+ - LICENSE
131
+ - README.md
121
132
  - Rakefile
122
133
  - examples/simple.rb
123
134
  - lib/sift.rb
124
135
  - lib/sift/client.rb
136
+ - lib/sift/client/decision.rb
137
+ - lib/sift/client/decision/apply_to.rb
138
+ - lib/sift/error.rb
139
+ - lib/sift/router.rb
140
+ - lib/sift/utils/hash_getter.rb
141
+ - lib/sift/validate/decision.rb
142
+ - lib/sift/validate/primitive.rb
125
143
  - lib/sift/version.rb
126
144
  - sift.gemspec
145
+ - spec/fixtures/fake_responses.rb
127
146
  - spec/integration/sift_spec.rb
128
147
  - spec/spec_helper.rb
148
+ - spec/unit/client/decision/apply_to_spec.rb
149
+ - spec/unit/client/decision_spec.rb
150
+ - spec/unit/client_203_spec.rb
129
151
  - spec/unit/client_label_spec.rb
130
152
  - spec/unit/client_spec.rb
131
- - spec/unit/sift_spec.rb
153
+ - spec/unit/router_spec.rb
154
+ - spec/unit/validate/decision_spec.rb
155
+ - spec/unit/validate/primitive_spec.rb
132
156
  homepage: http://siftscience.com
133
157
  licenses: []
158
+ metadata: {}
134
159
  post_install_message:
135
160
  rdoc_options: []
136
161
  require_paths:
137
162
  - lib
138
163
  required_ruby_version: !ruby/object:Gem::Requirement
139
- none: false
140
164
  requirements:
141
- - - ! '>='
165
+ - - ">="
142
166
  - !ruby/object:Gem::Version
143
167
  version: '0'
144
168
  required_rubygems_version: !ruby/object:Gem::Requirement
145
- none: false
146
169
  requirements:
147
- - - ! '>='
170
+ - - ">="
148
171
  - !ruby/object:Gem::Version
149
172
  version: '0'
150
173
  requirements: []
151
174
  rubyforge_project: sift
152
- rubygems_version: 1.8.25
175
+ rubygems_version: 2.5.2.3
153
176
  signing_key:
154
- specification_version: 3
177
+ specification_version: 4
155
178
  summary: Sift Science Ruby API Gem
156
179
  test_files:
180
+ - spec/fixtures/fake_responses.rb
157
181
  - spec/integration/sift_spec.rb
158
182
  - spec/spec_helper.rb
183
+ - spec/unit/client/decision/apply_to_spec.rb
184
+ - spec/unit/client/decision_spec.rb
185
+ - spec/unit/client_203_spec.rb
159
186
  - spec/unit/client_label_spec.rb
160
187
  - spec/unit/client_spec.rb
161
- - spec/unit/sift_spec.rb
188
+ - spec/unit/router_spec.rb
189
+ - spec/unit/validate/decision_spec.rb
190
+ - spec/unit/validate/primitive_spec.rb
data/README.rdoc DELETED
@@ -1,40 +0,0 @@
1
- = Sift Science Ruby bindings
2
-
3
- == Installation
4
-
5
- If you want to build the gem from source:
6
-
7
- $ gem build sift.gemspec
8
-
9
- Alternatively, you can install the gem from Rubyforge:
10
-
11
- $ gem install sift
12
-
13
- == Requirements
14
-
15
- * Ruby 1.8.7 or above. (Ruby 1.8.6 might work if you load ActiveSupport.)
16
- * HTTParty, 0.8.3 or greater
17
-
18
- For development only:
19
- * bundler
20
- * rspec, 2.9 or greater
21
- * fakeweb, 1.3 or greater
22
-
23
- == Building
24
-
25
- Building and publishing the gem is captured by the following steps:
26
-
27
- $ gem build sift.gemspec
28
- $ gem push sift-<current version>.gem
29
-
30
- $ bundle
31
- $ rake -T
32
- $ rake build
33
- $ rake install
34
- $ rake release
35
-
36
- == Testing
37
-
38
- To run the various tests use the rake command as follows:
39
-
40
- $ rake spec
@@ -1,6 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "spec_helper"))
2
-
3
- describe Sift do
4
-
5
-
6
- end