sift 1.1.0 → 4.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.
@@ -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