growviral-warehouse 0.0.6 → 0.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 680d544858f0dab64b7107b52cbc5a1d1a037b10
4
- data.tar.gz: 40ac6f5371f5e6e49ec081e037b7c5e8e4f52022
3
+ metadata.gz: f32e8c15ebcf39957b9170d1a1a5180d16fc0e6a
4
+ data.tar.gz: fe4889949aa7ab3e04cbf659208ab6e1582ca128
5
5
  SHA512:
6
- metadata.gz: 5547afffa84b0ba14fe3f2dc42da70a2ecd9b869caffe5fbf5da7361e3d7aedd39e39962b5bfffe0351088ba2f5d94505002a9d6af2ca1b3daf20aaa964ce1b9
7
- data.tar.gz: 169673ae09a1044a932304b3c99dca2fb408ebdc4d948ec276258d7bba902d824b9c2da9fcca93018b6190458f68bd61a5747401de241dd7f263423ee465ec86
6
+ metadata.gz: 58174c64a1aca594a547ea78410d3b7d33e6db18db29090cecce0ec2780847f22e211190b7b45525636285ef00e3e8f752e6e19f6bbb0567e1e6265286ccc5fc
7
+ data.tar.gz: e1cd8eea88573982edc157a525df35394884f3b3373e9f5b33920fccd88a178895782271a26709e3d3dad5cf1e9a37788b7eceed12f3bd58976485126b004016
@@ -4,7 +4,8 @@ require 'json'
4
4
 
5
5
  require 'warehouse/client'
6
6
  require 'warehouse/configuration'
7
- require 'warehouse/registers_followers'
7
+ require 'warehouse/records_follow'
8
+ require 'warehouse/records_unfollow'
8
9
  require 'warehouse/fetches_follow_history'
9
10
  require 'warehouse/checks_follow_history'
10
11
  require 'warehouse/fetches_users'
@@ -8,7 +8,11 @@ module GrowViral
8
8
  end
9
9
 
10
10
  def register_follow!(uid, following_uid)
11
- RegistersFollows.register(uid, following_uid, config: config)
11
+ RecordsFollow.register(uid, following_uid, config: config)
12
+ end
13
+
14
+ def register_unfollow!(uid, following_uid)
15
+ RecordsUnfollow.register(uid, following_uid, config: config)
12
16
  end
13
17
 
14
18
  def follow_history(uid)
@@ -9,10 +9,12 @@ module GrowViral
9
9
  extend Forwardable
10
10
  def_delegators :@data, :each, :size
11
11
 
12
- attr_reader :missing_ids
13
- def initialize(data, missing_ids)
12
+ attr_reader :missing_ids, :invalid_ids, :protected_ids
13
+ def initialize(data, options = {})
14
14
  @data = data
15
- @missing_ids = missing_ids
15
+ @missing_ids = options[:missing_ids] || []
16
+ @invalid_ids = options[:invalid_ids] || []
17
+ @protected_ids = options[:protected_ids] || []
16
18
  end
17
19
  end
18
20
 
@@ -34,7 +36,14 @@ module GrowViral
34
36
  def fetch
35
37
  response = Net::HTTP.get_response(uri)
36
38
  data = JSON.parse(response.body)
37
- Users.new(data['data'], data['missing_ids'])
39
+ Users.new(
40
+ data['twitter_users'],
41
+ {
42
+ missing_ids: data['missing_ids'],
43
+ invalid_ids: data['invalid_ids'],
44
+ protected_ids: data['protected_ids']
45
+ }
46
+ )
38
47
  end
39
48
 
40
49
  def uri
@@ -1,6 +1,6 @@
1
1
  module GrowViral
2
2
  module Warehouse
3
- class RegistersFollows
3
+ class RecordsFollow
4
4
  def self.register(*args)
5
5
  new(*args).register
6
6
  end
@@ -21,13 +21,18 @@ module GrowViral
21
21
  end
22
22
 
23
23
  def uri
24
- @uri ||= URI.parse("#{config.host}/follows")
24
+ @uri ||= URI.parse("#{config.host}/interactions/mark_followed")
25
+ end
26
+
27
+ def timestamp
28
+ @timestamp ||= Time.now.to_i
25
29
  end
26
30
 
27
31
  def form_data
28
32
  {
29
33
  "uid" => uid,
30
- "following_uid" => following_uid
34
+ "follow_uid" => following_uid,
35
+ "timestamp" => timestamp
31
36
  }
32
37
  end
33
38
  end
@@ -0,0 +1,40 @@
1
+ module GrowViral
2
+ module Warehouse
3
+ class RecordsUnfollow
4
+ def self.register(*args)
5
+ new(*args).register
6
+ end
7
+
8
+ attr_reader :uid, :following_uid, :config
9
+ def initialize(uid, following_uid, deps)
10
+ raise HandleNotUidError unless uid.is_a? Numeric
11
+ raise HandleNotUidError unless following_uid.is_a? Numeric
12
+
13
+ @uid = uid
14
+ @following_uid = following_uid
15
+ @config = deps[:config]
16
+ end
17
+
18
+ def register
19
+ response = Net::HTTP.post_form(uri, form_data)
20
+ JSON.parse(response.body)
21
+ end
22
+
23
+ def uri
24
+ @uri ||= URI.parse("#{config.host}/interactions/mark_unfollowed")
25
+ end
26
+
27
+ def timestamp
28
+ @timestamp ||= Time.now.to_i
29
+ end
30
+
31
+ def form_data
32
+ {
33
+ "uid" => uid,
34
+ "follow_uid" => following_uid,
35
+ "timestamp" => timestamp
36
+ }
37
+ end
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  module GrowViral
2
2
  module Warehouse
3
- VERSION = "0.0.6"
3
+ VERSION = "0.0.7"
4
4
  end
5
5
  end
@@ -1,22 +1,41 @@
1
1
  require_relative 'test_helper'
2
2
 
3
3
  module GrowViral::Warehouse
4
- class FetchesFollowHistoryTest < Minitest::Test
4
+ class FetchesUsersTest < Minitest::Test
5
5
  def test_users_is_enumerable
6
6
  data = mock
7
7
  data.expects(:each)
8
8
  data.expects(:size)
9
- users = FetchesUsers::Users.new(data, nil)
9
+ users = FetchesUsers::Users.new(data)
10
10
  users.each {}
11
11
  users.size
12
12
  end
13
13
 
14
14
  def test_users_returns_missing_ids
15
15
  missing_ids = mock
16
- users = FetchesUsers::Users.new(nil, missing_ids)
16
+ users = FetchesUsers::Users.new(nil, missing_ids: missing_ids)
17
17
  assert_equal missing_ids, users.missing_ids
18
18
  end
19
19
 
20
+ def test_users_returns_invalid_ids
21
+ invalid_ids = mock
22
+ users = FetchesUsers::Users.new(nil, invalid_ids: invalid_ids)
23
+ assert_equal invalid_ids, users.invalid_ids
24
+ end
25
+
26
+ def test_users_returns_protected_ids
27
+ protected_ids = mock
28
+ users = FetchesUsers::Users.new(nil, protected_ids: protected_ids)
29
+ assert_equal protected_ids, users.protected_ids
30
+ end
31
+
32
+ def test_users_returns_arrays_as_defaults
33
+ users = FetchesUsers::Users.new(nil)
34
+ assert_equal [], users.missing_ids
35
+ assert_equal [], users.invalid_ids
36
+ assert_equal [], users.protected_ids
37
+ end
38
+
20
39
  def test_raises_for_a_handle
21
40
  client = GrowViral::Warehouse::Client.new(:development)
22
41
  assert_raises(GrowViral::HandleNotUidError) { client.users(["string"]) }
@@ -24,9 +43,11 @@ module GrowViral::Warehouse
24
43
 
25
44
  def test_returns_output_correctly
26
45
  uid1 = 328383
27
- uid2 = 328383
46
+ uid2 = 39994
47
+ uid3 = 4757392
48
+ uid4 = 99122
28
49
 
29
- output = { 'data' => [{'id' => uid1}], missing_ids: [uid2] }
50
+ output = { 'twitter_users' => [{'id' => uid1}], 'missing_ids' => [uid2], 'invalid_ids' => [uid3], 'protected_ids' => [uid4] }
30
51
  uri = URI.parse("http://localhost:3001/tweeps/#{uid1},#{uid2}")
31
52
  Net::HTTP.expects(:get_response).with(uri).returns(mock(body: output.to_json))
32
53
 
@@ -34,13 +55,15 @@ module GrowViral::Warehouse
34
55
  users = client.users([uid1, uid2])
35
56
  assert_equal [{'id' => uid1}], users.each {|u|u}
36
57
  assert_equal [uid2], users.missing_ids
58
+ assert_equal [uid3], users.invalid_ids
59
+ assert_equal [uid4], users.protected_ids
37
60
  end
38
61
 
39
62
  def test_posts_account_id_if_given
40
63
  uid = 328383
41
64
  account_uid = 848493
42
65
 
43
- output = { 'data' => [], missing_ids: [] }
66
+ output = { }
44
67
  uri = URI.parse("http://localhost:3001/tweeps/#{uid}?for_account=#{account_uid}")
45
68
  Net::HTTP.expects(:get_response).with(uri).returns(mock(body: output.to_json))
46
69
 
@@ -1,7 +1,7 @@
1
1
  require_relative 'test_helper'
2
2
 
3
3
  module GrowViral::Warehouse
4
- class FetchesFollowHistoryTest < Minitest::Test
4
+ class PreloadsUsersTest < Minitest::Test
5
5
 
6
6
  def test_returns_output_correctly
7
7
  uid1 = 328383
@@ -1,6 +1,6 @@
1
1
  require_relative 'test_helper'
2
2
 
3
- class RegistersFollowersTest < Minitest::Test
3
+ class RecordsFollowWTest < Minitest::Test
4
4
  def test_raises_for_a_handle
5
5
  client = GrowViral::Warehouse::Client.new(:development)
6
6
  assert_raises(GrowViral::HandleNotUidError) { client.register_follow!("string", 2312422) }
@@ -14,18 +14,18 @@ class RegistersFollowersTest < Minitest::Test
14
14
  def test_response_is_correct
15
15
  uid = 23432423
16
16
  following_uid = 342423
17
+ now = 42
17
18
 
18
19
  input = {
19
20
  "uid" => uid,
20
- "following_uid" => following_uid,
21
+ "follow_uid" => following_uid,
22
+ "timestamp" => now
21
23
  }
22
24
 
23
- output = {
24
- "uid" => uid,
25
- "following_uid" => following_uid,
26
- }
25
+ output = { "status" => "accepted" }
27
26
 
28
- uri = URI.parse("http://localhost:3001/follows")
27
+ uri = URI.parse("http://localhost:3001/interactions/mark_followed")
28
+ Time.expects(:now).returns(mock(to_i: 42))
29
29
  Net::HTTP.expects(:post_form).with(uri, input).returns(mock(body: output.to_json))
30
30
 
31
31
  client = GrowViral::Warehouse::Client.new(:development)
@@ -34,5 +34,3 @@ class RegistersFollowersTest < Minitest::Test
34
34
  assert_equal output, actual
35
35
  end
36
36
  end
37
-
38
-
@@ -0,0 +1,36 @@
1
+ require_relative 'test_helper'
2
+
3
+ class RecordsUnFollowWTest < Minitest::Test
4
+ def test_raises_for_a_handle
5
+ client = GrowViral::Warehouse::Client.new(:development)
6
+ assert_raises(GrowViral::HandleNotUidError) { client.register_unfollow!("string", 2312422) }
7
+ end
8
+
9
+ def test_raises_for_a_following_handle
10
+ client = GrowViral::Warehouse::Client.new(:development)
11
+ assert_raises(GrowViral::HandleNotUidError) { client.register_unfollow!(972822, "string") }
12
+ end
13
+
14
+ def test_response_is_correct
15
+ uid = 23432423
16
+ following_uid = 342423
17
+ now = 42
18
+
19
+ input = {
20
+ "uid" => uid,
21
+ "follow_uid" => following_uid,
22
+ "timestamp" => now
23
+ }
24
+
25
+ output = { "status" => "accepted" }
26
+
27
+ uri = URI.parse("http://localhost:3001/interactions/mark_unfollowed")
28
+ Time.expects(:now).returns(mock(to_i: 42))
29
+ Net::HTTP.expects(:post_form).with(uri, input).returns(mock(body: output.to_json))
30
+
31
+ client = GrowViral::Warehouse::Client.new(:development)
32
+ actual = client.register_unfollow!(uid, following_uid)
33
+
34
+ assert_equal output, actual
35
+ end
36
+ end
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: growviral-warehouse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Walker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2015-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mocha
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  description: ''
@@ -73,8 +73,8 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - ".gitignore"
77
- - ".travis.yml"
76
+ - .gitignore
77
+ - .travis.yml
78
78
  - Gemfile
79
79
  - LICENSE.txt
80
80
  - README.md
@@ -87,13 +87,15 @@ files:
87
87
  - lib/warehouse/fetches_follow_history.rb
88
88
  - lib/warehouse/fetches_users.rb
89
89
  - lib/warehouse/preloads_users.rb
90
- - lib/warehouse/registers_followers.rb
90
+ - lib/warehouse/records_follow.rb
91
+ - lib/warehouse/records_unfollow.rb
91
92
  - lib/warehouse/version.rb
92
93
  - test/checks_follow_history_test.rb
93
94
  - test/fetches_follow_history_test.rb
94
95
  - test/fetches_users_test.rb
95
96
  - test/preloads_users_test.rb
96
- - test/registers_followers_test.rb
97
+ - test/records_follow_test.rb
98
+ - test/records_unfollow_test.rb
97
99
  - test/test_helper.rb
98
100
  homepage: ''
99
101
  licenses:
@@ -105,17 +107,17 @@ require_paths:
105
107
  - lib
106
108
  required_ruby_version: !ruby/object:Gem::Requirement
107
109
  requirements:
108
- - - ">="
110
+ - - '>='
109
111
  - !ruby/object:Gem::Version
110
112
  version: '0'
111
113
  required_rubygems_version: !ruby/object:Gem::Requirement
112
114
  requirements:
113
- - - ">="
115
+ - - '>='
114
116
  - !ruby/object:Gem::Version
115
117
  version: '0'
116
118
  requirements: []
117
119
  rubyforge_project:
118
- rubygems_version: 2.2.2
120
+ rubygems_version: 2.1.9
119
121
  signing_key:
120
122
  specification_version: 4
121
123
  summary: A wrapper for the GrowViral warehouse.
@@ -124,6 +126,6 @@ test_files:
124
126
  - test/fetches_follow_history_test.rb
125
127
  - test/fetches_users_test.rb
126
128
  - test/preloads_users_test.rb
127
- - test/registers_followers_test.rb
129
+ - test/records_follow_test.rb
130
+ - test/records_unfollow_test.rb
128
131
  - test/test_helper.rb
129
- has_rdoc: