fake_friends 1.0.1 → 1.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 +4 -4
- data/.gitignore +1 -0
- data/README.md +25 -15
- data/Rakefile +14 -1
- data/dev/fetch_from_twitter.rb +42 -33
- data/dev/usernames.yml +0 -2
- data/fake_friends.gemspec +12 -18
- data/lib/fake_friends/users.yml +9559 -6567
- data/lib/fake_friends/version.rb +1 -1
- data/lib/fake_friends.rb +30 -24
- data/spec/fake_friends_spec.rb +28 -29
- data/spec/spec_helper.rb +3 -5
- metadata +12 -13
data/lib/fake_friends/version.rb
CHANGED
data/lib/fake_friends.rb
CHANGED
@@ -9,10 +9,18 @@ module FakeFriends
|
|
9
9
|
class FakeFriend
|
10
10
|
attr_reader :username, :name, :location, :description, :url, :posts
|
11
11
|
|
12
|
+
# Public: FakeFriend.all
|
13
|
+
#
|
14
|
+
# Returns a class instance Hash variable holding the
|
15
|
+
# user list defined in users.yml
|
16
|
+
def self.all
|
17
|
+
@friends_list
|
18
|
+
end
|
19
|
+
|
12
20
|
# Public: FakeFriend.gather(n)
|
13
21
|
# Returns n FakeFriend objects
|
14
22
|
#
|
15
|
-
# n - An Integer from 1 to
|
23
|
+
# n - An Integer from 1 to 100.
|
16
24
|
#
|
17
25
|
# Examples
|
18
26
|
#
|
@@ -21,8 +29,8 @@ module FakeFriends
|
|
21
29
|
#
|
22
30
|
# Returns an array of n FakeFriend objects
|
23
31
|
def self.gather(n)
|
24
|
-
raise ArgumentError, "Can only gather 1 to
|
25
|
-
users = FakeFriend.
|
32
|
+
raise ArgumentError, "Can only gather 1 to 100 FakeFriends" unless n.between?(1, 100)
|
33
|
+
users = FakeFriend.all.keys.sample(n)
|
26
34
|
users.map{ |username| FakeFriend.new(username) }
|
27
35
|
end
|
28
36
|
|
@@ -30,7 +38,7 @@ module FakeFriends
|
|
30
38
|
# Returns a FakeFriend object for a specific user in the user listing
|
31
39
|
#
|
32
40
|
# options - The Hash of options (default: {}):
|
33
|
-
# :id - Integer - User's position in the user listing, 1 to
|
41
|
+
# :id - Integer - User's position in the user listing, 1 to 100
|
34
42
|
# :username - String - User's Twitter username
|
35
43
|
#
|
36
44
|
# Examples
|
@@ -40,10 +48,10 @@ module FakeFriends
|
|
40
48
|
#
|
41
49
|
# Returns the requested FakeFriend object if found, else raises ArgumentError
|
42
50
|
def self.find_by(options)
|
43
|
-
if options[:id] && options[:id].between?(1, FakeFriend.
|
44
|
-
username = FakeFriend.
|
51
|
+
if options[:id] && options[:id].between?(1, FakeFriend.all.count)
|
52
|
+
username = FakeFriend.all.keys[options[:id]-1]
|
45
53
|
FakeFriend.new(username)
|
46
|
-
elsif options[:username] && FakeFriend.
|
54
|
+
elsif options[:username] && FakeFriend.all.keys.include?(options[:username])
|
47
55
|
FakeFriend.new(options[:username])
|
48
56
|
else
|
49
57
|
raise ArgumentError, "Requested user not found in library."
|
@@ -52,7 +60,7 @@ module FakeFriends
|
|
52
60
|
|
53
61
|
# Public: FakeFriend.new(username)
|
54
62
|
# Creates a FakeFriend object with attributes fetched from
|
55
|
-
# the user listing defined in users.yml and accesses via FakeFriend.
|
63
|
+
# the user listing defined in users.yml and accesses via FakeFriend.all
|
56
64
|
#
|
57
65
|
# username - String - a Twitter username found in the user listing
|
58
66
|
#
|
@@ -61,14 +69,14 @@ module FakeFriends
|
|
61
69
|
# FakeFriend.new('idiot')
|
62
70
|
# # => #<FakeFriend:0x00000101348a80 @username="idiot"...>
|
63
71
|
#
|
64
|
-
# Returns a FakeFriend object with attributes populated from FakeFriend.
|
72
|
+
# Returns a FakeFriend object with attributes populated from FakeFriend.all
|
65
73
|
def initialize(username)
|
66
74
|
@username = username
|
67
|
-
@name = FakeFriend.
|
68
|
-
@location = FakeFriend.
|
69
|
-
@description = FakeFriend.
|
70
|
-
@url = FakeFriend.
|
71
|
-
@posts = FakeFriend.
|
75
|
+
@name = FakeFriend.all[username][:name]
|
76
|
+
@location = FakeFriend.all[username][:location]
|
77
|
+
@description = FakeFriend.all[username][:description]
|
78
|
+
@url = FakeFriend.all[username][:url]
|
79
|
+
@posts = FakeFriend.all[username][:posts]
|
72
80
|
end
|
73
81
|
|
74
82
|
# Public: returns a user's uiFaces url in the closest available size
|
@@ -82,18 +90,16 @@ module FakeFriends
|
|
82
90
|
"https://s3.amazonaws.com/uifaces/faces/twitter/#{username}/#{size}.jpg"
|
83
91
|
end
|
84
92
|
|
93
|
+
|
85
94
|
private
|
86
|
-
mydir = File.expand_path(File.dirname(__FILE__))
|
87
|
-
libary_file = mydir + '/fake_friends/users.yml'
|
88
|
-
@friends_list = File.open(libary_file, 'r'){|f| YAML.load(f) }
|
89
95
|
|
90
|
-
|
91
|
-
|
92
|
-
#
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
96
|
+
def self.populate_friends_list
|
97
|
+
project_lib = File.expand_path(File.dirname(__FILE__))
|
98
|
+
library_file = "#{project_lib}/fake_friends/users.yml"
|
99
|
+
File.open(library_file, 'r'){|f| YAML.load(f) }
|
100
|
+
end
|
101
|
+
|
102
|
+
@friends_list = populate_friends_list
|
97
103
|
end
|
98
104
|
|
99
105
|
end
|
data/spec/fake_friends_spec.rb
CHANGED
@@ -2,70 +2,69 @@ require 'spec_helper'
|
|
2
2
|
include FakeFriends
|
3
3
|
|
4
4
|
describe FakeFriend do
|
5
|
+
describe '::gather' do
|
6
|
+
context 'with valid input' do
|
7
|
+
let(:users) { FakeFriend.gather(5) }
|
5
8
|
|
6
|
-
|
7
|
-
context "with valid input" do
|
8
|
-
let(:users){ FakeFriend.gather(5) }
|
9
|
-
|
10
|
-
it "returns an array of FakeFriends" do
|
9
|
+
it 'returns an array of FakeFriends' do
|
11
10
|
expect(users).to be_an Array
|
12
11
|
expect(users).to be_composed_of FakeFriend
|
13
12
|
end
|
14
13
|
|
15
|
-
it
|
14
|
+
it 'returns the requested number of FakeFriends' do
|
16
15
|
expect(users.count).to be 5
|
17
16
|
end
|
18
17
|
|
19
|
-
it
|
18
|
+
it 'does not return duplicates' do
|
20
19
|
expect(users.count).to be users.map(&:username).uniq.count
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
24
|
-
context
|
25
|
-
describe
|
23
|
+
context 'with invalid input' do
|
24
|
+
describe 'with a negative number' do
|
26
25
|
it { expect { FakeFriend.gather(-1) }.to raise_error(ArgumentError) }
|
27
26
|
end
|
28
|
-
describe
|
29
|
-
it { expect { FakeFriend.gather(
|
27
|
+
describe 'with too high a number' do
|
28
|
+
it { expect { FakeFriend.gather(101) }.to raise_error(ArgumentError) }
|
30
29
|
end
|
31
30
|
end
|
32
31
|
end
|
33
32
|
|
33
|
+
describe '::find_by' do
|
34
|
+
context 'with valid input (by id)' do
|
35
|
+
let(:user) { FakeFriend.find_by(id: 1) }
|
34
36
|
|
35
|
-
|
36
|
-
context "with valid input (by id)" do
|
37
|
-
let(:user){ FakeFriend.find_by(id: 1) }
|
38
|
-
|
39
|
-
it "returns a FakeFriend" do
|
37
|
+
it 'returns a FakeFriend' do
|
40
38
|
expect(user).to be_a FakeFriend
|
41
39
|
end
|
42
40
|
|
43
|
-
it
|
44
|
-
expect(user.name).to eq(
|
41
|
+
it 'returns the correct FakeFriend' do
|
42
|
+
expect(user.name).to eq('Visual Idiot')
|
45
43
|
end
|
46
44
|
end
|
47
45
|
|
48
|
-
context
|
49
|
-
let(:user){ FakeFriend.find_by(username: 'idiot') }
|
46
|
+
context 'with valid input (by username)' do
|
47
|
+
let(:user) { FakeFriend.find_by(username: 'idiot') }
|
50
48
|
|
51
|
-
it
|
49
|
+
it 'returns a FakeFriend' do
|
52
50
|
expect(user).to be_a FakeFriend
|
53
51
|
end
|
54
52
|
|
55
|
-
it
|
56
|
-
expect(user.name).to eq(
|
53
|
+
it 'returns the correct FakeFriend' do
|
54
|
+
expect(user.name).to eq('Visual Idiot')
|
57
55
|
end
|
58
56
|
end
|
59
57
|
|
60
|
-
context
|
61
|
-
describe
|
58
|
+
context 'with invalid input' do
|
59
|
+
describe 'with an invalid key' do
|
62
60
|
it { expect { FakeFriend.find_by(age: 50) }.to raise_error(ArgumentError) }
|
63
61
|
end
|
64
|
-
describe
|
65
|
-
it { expect { FakeFriend.find_by(id:
|
62
|
+
describe 'with an invalid id' do
|
63
|
+
it { expect { FakeFriend.find_by(id: -1) }.to raise_error(ArgumentError) }
|
64
|
+
it { expect { FakeFriend.find_by(id: 101) }.to raise_error(ArgumentError) }
|
66
65
|
end
|
67
|
-
describe
|
68
|
-
it { expect { FakeFriend.find_by(username:
|
66
|
+
describe 'with an invalid username' do
|
67
|
+
it { expect { FakeFriend.find_by(username: 'invalid_username') }.to raise_error(ArgumentError) }
|
69
68
|
end
|
70
69
|
end
|
71
70
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,19 +2,17 @@ require 'fake_friends'
|
|
2
2
|
require 'rspec/expectations'
|
3
3
|
|
4
4
|
RSpec.configure do |config|
|
5
|
-
|
6
5
|
config.expect_with :rspec do |c|
|
7
6
|
c.syntax = :expect
|
8
7
|
end
|
9
|
-
|
10
8
|
end
|
11
9
|
|
12
10
|
RSpec::Matchers.define :be_composed_of do |expected_type|
|
13
11
|
match do |actual|
|
14
|
-
actual.all?{|u| u.is_a? expected_type}
|
12
|
+
actual.all? { |u| u.is_a? expected_type }
|
15
13
|
end
|
16
14
|
|
17
|
-
|
15
|
+
failure_message do |actual|
|
18
16
|
"expected #{actual.class} to be composed of #{expected_type}s"
|
19
17
|
end
|
20
|
-
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fake_friends
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jake Romer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: twitter
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 5.6
|
19
|
+
version: '5.6'
|
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
|
-
version: 5.6
|
26
|
+
version: '5.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.14
|
33
|
+
version: '2.14'
|
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
|
-
version: 2.14
|
40
|
+
version: '2.14'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.5
|
47
|
+
version: '1.5'
|
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
|
-
version: 1.5
|
54
|
+
version: '1.5'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 10.1
|
61
|
+
version: '10.1'
|
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
|
-
version: 10.1
|
68
|
+
version: '10.1'
|
69
69
|
description: A simple fake user generator
|
70
70
|
email:
|
71
71
|
- jacob.romer@icloud.com
|
@@ -88,7 +88,7 @@ files:
|
|
88
88
|
- lib/fake_friends/version.rb
|
89
89
|
- spec/fake_friends_spec.rb
|
90
90
|
- spec/spec_helper.rb
|
91
|
-
homepage: http://github.com/
|
91
|
+
homepage: http://github.com/jkrmr/fake_friends
|
92
92
|
licenses:
|
93
93
|
- MIT
|
94
94
|
metadata: {}
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
108
|
version: '0'
|
109
109
|
requirements: []
|
110
110
|
rubyforge_project:
|
111
|
-
rubygems_version: 2.
|
111
|
+
rubygems_version: 2.4.6
|
112
112
|
signing_key:
|
113
113
|
specification_version: 4
|
114
114
|
summary: Generates fake users with consistent attributes from public Twitter accounts
|
@@ -116,4 +116,3 @@ summary: Generates fake users with consistent attributes from public Twitter acc
|
|
116
116
|
test_files:
|
117
117
|
- spec/fake_friends_spec.rb
|
118
118
|
- spec/spec_helper.rb
|
119
|
-
has_rdoc:
|