contributors_stats 1.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 +6 -0
- data/.travis.yml +11 -0
- data/Gemfile +5 -0
- data/LICENSE.md +14 -0
- data/README.md +43 -0
- data/Rakefile +28 -0
- data/contributors_stats.gemspec +24 -0
- data/lib/contributors_stats.rb +28 -0
- data/lib/contributors_stats/base.rb +29 -0
- data/lib/contributors_stats/calculator.rb +50 -0
- data/lib/contributors_stats/formatter.rb +57 -0
- data/lib/contributors_stats/json_helper.rb +49 -0
- data/lib/contributors_stats/reader.rb +52 -0
- data/lib/contributors_stats/version.rb +4 -0
- data/lib/example_data.rb +58 -0
- data/lib/plugins/contributors_stats/formatter/html.rb +26 -0
- data/lib/plugins/contributors_stats/reader/gh_org.rb +21 -0
- data/lib/plugins/contributors_stats/reader/gh_repo.rb +19 -0
- data/lib/plugins/contributors_stats/updater/html.rb +36 -0
- data/lib/plugins/contributors_stats/user_data/fetch.rb +16 -0
- data/lib/plugins/contributors_stats/user_data/simple.rb +23 -0
- data/test/contributors_stats/base_test.rb +36 -0
- data/test/contributors_stats/calculator_test.rb +70 -0
- data/test/contributors_stats/formatter_test.rb +77 -0
- data/test/contributors_stats/json_helper_test.rb +76 -0
- data/test/contributors_stats/reader_test.rb +59 -0
- data/test/contributors_stats_test.rb +13 -0
- data/test/fixtures-gh/orgs/railsinstaller/repos.json +269 -0
- data/test/fixtures-gh/repos/mpapis/rubygems-bundler/contributors.json +173 -0
- data/test/fixtures-gh/repos/railsinstaller/railsinstaller-nix/contributors.json +40 -0
- data/test/fixtures-gh/repos/railsinstaller/railsinstaller-windows/contributors.json +116 -0
- data/test/fixtures-gh/repos/railsinstaller/website/contributors.json +192 -0
- data/test/fixtures-gh/repos/rvm/pluginator/contributors.json +40 -0
- data/test/fixtures-gh/users/acco.json +31 -0
- data/test/fixtures-gh/users/alexch.json +31 -0
- data/test/fixtures-gh/users/biow0lf.json +31 -0
- data/test/fixtures-gh/users/drnic.json +31 -0
- data/test/fixtures-gh/users/ebertech.json +31 -0
- data/test/fixtures-gh/users/edwardchiu38.json +31 -0
- data/test/fixtures-gh/users/emachnic.json +31 -0
- data/test/fixtures-gh/users/envygeeks.json +31 -0
- data/test/fixtures-gh/users/gpxl.json +31 -0
- data/test/fixtures-gh/users/jc00ke.json +31 -0
- data/test/fixtures-gh/users/joshbuddy.json +31 -0
- data/test/fixtures-gh/users/luigidr.json +31 -0
- data/test/fixtures-gh/users/luislavena.json +31 -0
- data/test/fixtures-gh/users/metaskills.json +31 -0
- data/test/fixtures-gh/users/mpapis.json +31 -0
- data/test/fixtures-gh/users/parndt.json +31 -0
- data/test/fixtures-gh/users/pw.json +31 -0
- data/test/fixtures-gh/users/tjouan.json +31 -0
- data/test/fixtures-gh/users/veganstraightedge.json +31 -0
- data/test/fixtures-gh/users/wayneeseguin.json +31 -0
- data/test/fixtures-gh/users/whitequark.json +31 -0
- data/test/plugins/formatter/html_test.rb +28 -0
- data/test/plugins/reader/gh_org_test.rb +32 -0
- data/test/plugins/reader/gh_repo_test.rb +31 -0
- data/test/plugins/updater/html_test.rb +55 -0
- data/test/plugins/user_data/fetch_test.rb +16 -0
- data/test/plugins/user_data/simple_test.rb +18 -0
- data/test/test_helper.rb +27 -0
- metadata +229 -0
@@ -0,0 +1,26 @@
|
|
1
|
+
class ContributorsStats::Formatter
|
2
|
+
|
3
|
+
# generate html for a contributor, by default it will create a link to profile with contributor avatar
|
4
|
+
class Html
|
5
|
+
# default template building link to profile with contributor avatar
|
6
|
+
DEFAULT_TEMPLATE = %q{%Q{<a href="#{data['html_url']}" title="#{login} - #{data['contributions']}"><img src="#{data['avatar_url']}" alt="#{login} - #{data['contributions']}"/></a>}}
|
7
|
+
|
8
|
+
# access to the template used to generate content
|
9
|
+
attr_accessor :template
|
10
|
+
|
11
|
+
# create the generator object
|
12
|
+
# @option template [String] the template to use, if not given default will be used
|
13
|
+
def initialize(options = {})
|
14
|
+
@template = options[:template] || DEFAULT_TEMPLATE
|
15
|
+
end
|
16
|
+
|
17
|
+
# format user data using template
|
18
|
+
# @param login [String] user name
|
19
|
+
# @param data [Hash] user data
|
20
|
+
# @return [String]
|
21
|
+
def format(login, data)
|
22
|
+
eval(template)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'contributors_stats/json_helper'
|
2
|
+
|
3
|
+
class ContributorsStats::Reader
|
4
|
+
|
5
|
+
# Plugin to load contributions from Github organization
|
6
|
+
class GhOrg
|
7
|
+
extend ContributorsStats::JsonHelper
|
8
|
+
|
9
|
+
# load contributions for Github organization
|
10
|
+
# param name [String] name of the organization to load
|
11
|
+
# return [Array] loaded conributors data
|
12
|
+
def self.load(name)
|
13
|
+
load_json(url_builder("orgs/#{name}/repos")).map{ |repo|
|
14
|
+
data = load_json(repo['contributors_url'])
|
15
|
+
yield(data, "#{name}/#{repo['name']}") if block_given?
|
16
|
+
data
|
17
|
+
}.inject(&:+)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'contributors_stats/json_helper'
|
2
|
+
|
3
|
+
class ContributorsStats::Reader
|
4
|
+
|
5
|
+
# Plugin to load contributions from Github repository
|
6
|
+
class GhRepo
|
7
|
+
extend ContributorsStats::JsonHelper
|
8
|
+
|
9
|
+
# load contributions for Github repository
|
10
|
+
# param name [String] name of the repository to load
|
11
|
+
# return [Array] loaded conributors data
|
12
|
+
def self.load(name)
|
13
|
+
data = load_json(url_builder("repos/#{name}/contributors"))
|
14
|
+
yield(data, name) if block_given?
|
15
|
+
data
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module ContributorsStats::Updater
|
2
|
+
|
3
|
+
# Update a target file with content
|
4
|
+
class Html
|
5
|
+
# Default search pattern
|
6
|
+
DEFAULT_SEARCH = /<span class="contributors">.*?<\/span>/m
|
7
|
+
# Default replace template
|
8
|
+
DEFAULT_REPLACE = %q{%Q{<span class="contributors">\n#{replace_content.join("\n")}\n</span>}}
|
9
|
+
|
10
|
+
attr_accessor :search, :replace
|
11
|
+
attr_reader :file_content, :replace_content
|
12
|
+
|
13
|
+
# check if given file is supported by this updater
|
14
|
+
def self.handles?(file)
|
15
|
+
%w{ .html .html.erb }.any?{|ext| file.end_with?(ext) }
|
16
|
+
end
|
17
|
+
|
18
|
+
# perform the content update
|
19
|
+
def self.update(file_content, replace_content, options = {})
|
20
|
+
new(file_content, replace_content, options).to_s
|
21
|
+
end
|
22
|
+
|
23
|
+
# set initial parameters, set default options
|
24
|
+
def initialize(file_content, replace_content, options = {})
|
25
|
+
@search = options[:search] || DEFAULT_SEARCH
|
26
|
+
@replace = options[:replace] || DEFAULT_REPLACE
|
27
|
+
@file_content = file_content
|
28
|
+
@replace_content = replace_content
|
29
|
+
end
|
30
|
+
|
31
|
+
# perform the replace operation
|
32
|
+
def to_s
|
33
|
+
file_content.sub( search, eval(replace) )
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'contributors_stats/json_helper'
|
2
|
+
|
3
|
+
module ContributorsStats::UserData
|
4
|
+
|
5
|
+
# fetch user data from github
|
6
|
+
class Fetch
|
7
|
+
extend ContributorsStats::JsonHelper
|
8
|
+
|
9
|
+
# fetch user data from github
|
10
|
+
def self.load(login, data, contributions)
|
11
|
+
user_data = load_json(data['url'])
|
12
|
+
user_data['contributions'] = contributions
|
13
|
+
user_data
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module ContributorsStats::UserData
|
2
|
+
|
3
|
+
# fill in user data using minimal possible set of data
|
4
|
+
class Simple
|
5
|
+
|
6
|
+
# fill in user data using minimal possible set of data
|
7
|
+
def self.load(login, data, contributions)
|
8
|
+
{
|
9
|
+
'avatar_url' => data['avatar_url'],
|
10
|
+
'name' => login,
|
11
|
+
'url' => data['url'],
|
12
|
+
'html_url' => profile_url(login),
|
13
|
+
'contributions' => contributions
|
14
|
+
}
|
15
|
+
end
|
16
|
+
# build github profile url for the given user name
|
17
|
+
# @param username [String]
|
18
|
+
# @return [String] github profile url
|
19
|
+
def self.profile_url(username)
|
20
|
+
"https://github.com/#{username}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'contributors_stats/base'
|
3
|
+
|
4
|
+
describe ContributorsStats::Base do
|
5
|
+
before do
|
6
|
+
@tester = ContributorsStats::Base
|
7
|
+
end
|
8
|
+
|
9
|
+
it "logs messages" do
|
10
|
+
tester = @tester.new
|
11
|
+
tester.logger = ContributorsStats::ArrayLoggerExample.new
|
12
|
+
tester.send(:log, 'something')
|
13
|
+
tester.send(:log, 'nothing')
|
14
|
+
tester.logger.data.must_equal(['something', 'nothing'])
|
15
|
+
end
|
16
|
+
|
17
|
+
it "loads plugins" do
|
18
|
+
plugins = @tester.new.send(:plugins)
|
19
|
+
plugins.must_be_kind_of(Pluginator::Group)
|
20
|
+
plugins.types.size.must_be(:>=, 4)
|
21
|
+
plugins.first_class('formatter', 'html').wont_be_nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it "filters options" do
|
25
|
+
example_input = {
|
26
|
+
:gh_org => "railsisntaller",
|
27
|
+
:nothing => "name",
|
28
|
+
}
|
29
|
+
example_output = {
|
30
|
+
:gh_org => "railsisntaller"
|
31
|
+
}
|
32
|
+
plugins = @tester.new(example_input).send(:filter_options, 'reader')
|
33
|
+
plugins.must_equal(example_output)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'contributors_stats/calculator'
|
3
|
+
|
4
|
+
describe ContributorsStats::Calculator do
|
5
|
+
before do
|
6
|
+
@tester = ContributorsStats::Calculator
|
7
|
+
end
|
8
|
+
|
9
|
+
it "initializes user_data_type" do
|
10
|
+
tester = @tester.new(:user_data => :fetch)
|
11
|
+
tester.user_data_type.must_equal(:fetch)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "calculates contributions" do
|
15
|
+
tester = @tester.new
|
16
|
+
tester.send(:contributions, [{"contributions" => 2}, {"contributions" => 3}]).must_equal(5)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "calculates user_data" do
|
20
|
+
data = [
|
21
|
+
{"contributions" => 2, "url" => "users/mpapis.json", "avatar_url" => "mpapis-avatar.jpg"},
|
22
|
+
{"contributions" => 4},
|
23
|
+
]
|
24
|
+
expected = {
|
25
|
+
"avatar_url"=>"mpapis-avatar.jpg",
|
26
|
+
"name"=>"mpapis",
|
27
|
+
"url"=>"users/mpapis.json",
|
28
|
+
"html_url"=>"https://github.com/mpapis",
|
29
|
+
"contributions"=>6
|
30
|
+
}
|
31
|
+
tester = @tester.new
|
32
|
+
tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), ".json")
|
33
|
+
result = tester.send(:user_data, "mpapis", data)
|
34
|
+
result.must_equal(expected)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "calculates data" do
|
38
|
+
raw_data = [
|
39
|
+
{"login" => "mpapis", "contributions" => 2, "url" => "users/mpapis.json", "avatar_url" => "mpapis-avatar.jpg"},
|
40
|
+
{"login" => "mpapis", "contributions" => 5},
|
41
|
+
]
|
42
|
+
expected = [["mpapis", {
|
43
|
+
"avatar_url"=>"mpapis-avatar.jpg",
|
44
|
+
"name"=>"mpapis",
|
45
|
+
"url"=>"users/mpapis.json",
|
46
|
+
"html_url"=>"https://github.com/mpapis",
|
47
|
+
"contributions"=>7
|
48
|
+
} ]]
|
49
|
+
tester = @tester.new
|
50
|
+
tester.logger = ContributorsStats::ArrayLoggerExample.new
|
51
|
+
tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), ".json")
|
52
|
+
tester.instance_variable_set(:@raw_data, raw_data)
|
53
|
+
tester.send(:calculated_data)
|
54
|
+
tester.data.must_equal(expected)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "invokes formatter" do
|
58
|
+
data = [["mpapis", {
|
59
|
+
"avatar_url"=>"mpapis-avatar.jpg",
|
60
|
+
"name"=>"mpapis",
|
61
|
+
"url"=>"users/mpapis.json",
|
62
|
+
"html_url"=>"https://github.com/mpapis",
|
63
|
+
"contributions"=>7
|
64
|
+
}]]
|
65
|
+
tester = @tester.new
|
66
|
+
tester.instance_variable_set(:@data, data)
|
67
|
+
tester.format.kind_of?(ContributorsStats::Formatter).must_equal(true)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'contributors_stats/formatter'
|
3
|
+
|
4
|
+
def with_temp_file(name: 'contributors_stats', extension: "")
|
5
|
+
file = Tempfile.new([name, extension])
|
6
|
+
begin
|
7
|
+
yield file if block_given?
|
8
|
+
ensure
|
9
|
+
file.close
|
10
|
+
file.unlink
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe ContributorsStats::Formatter do
|
15
|
+
before do
|
16
|
+
@tester = ContributorsStats::Formatter
|
17
|
+
@example_content = [
|
18
|
+
"<a href=\"https://github.com/mpapis\" title=\"mpapis - 7\"><img src=\"mpapis-avatar.jpg\" alt=\"mpapis - 7\"/></a>"
|
19
|
+
]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "loads plugins" do
|
23
|
+
plugins = @tester.allocate.send(:plugins)
|
24
|
+
plugins.must_be_kind_of(Pluginator::Group)
|
25
|
+
plugins.types.size.must_be(:>=, 4)
|
26
|
+
plugins.first_class('updater', 'html').wont_be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it "invokes formatter" do
|
30
|
+
data = [["mpapis", {
|
31
|
+
"avatar_url"=>"mpapis-avatar.jpg",
|
32
|
+
"name"=>"mpapis",
|
33
|
+
"url"=>"users/mpapis.json",
|
34
|
+
"html_url"=>"https://github.com/mpapis",
|
35
|
+
"contributions"=>7
|
36
|
+
}]]
|
37
|
+
tester = @tester.new(data, :html)
|
38
|
+
tester.content.must_equal(@example_content)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "saves to file" do
|
42
|
+
with_temp_file do |file|
|
43
|
+
tester = @tester.allocate
|
44
|
+
tester.instance_variable_set(:@content, @example_content)
|
45
|
+
tester.save(file.path)
|
46
|
+
file.readlines.must_equal(@example_content)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it "updates files - internal" do
|
51
|
+
with_temp_file do |file|
|
52
|
+
tester = @tester.allocate
|
53
|
+
File.open(file.path, "w") {|f| f.write("anything") }
|
54
|
+
tester.send(:update_file, file.path) do |text|
|
55
|
+
text.gsub(/a/, "b")
|
56
|
+
end
|
57
|
+
File.read(file.path).must_equal("bnything")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "updates files - with plugins" do
|
62
|
+
content_start = %q{<body><span class="contributors">}
|
63
|
+
content_end = %q{</span></body>}
|
64
|
+
with_temp_file(extension: ".html") do |file|
|
65
|
+
tester = @tester.allocate
|
66
|
+
File.open(file.path, "w") {|f| f.write("#{content_start}#{content_end}\n") }
|
67
|
+
tester.instance_variable_set(:@content, @example_content)
|
68
|
+
tester.update(file.path)
|
69
|
+
File.read(file.path).must_equal(<<-EXPECTED)
|
70
|
+
#{content_start}
|
71
|
+
#{@example_content * "\n"}
|
72
|
+
#{content_end}
|
73
|
+
EXPECTED
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'contributors_stats/json_helper'
|
3
|
+
|
4
|
+
class ContributorsStats::JsonHelperTester
|
5
|
+
include ContributorsStats::JsonHelper
|
6
|
+
end
|
7
|
+
|
8
|
+
describe ContributorsStats::JsonHelper do
|
9
|
+
before do
|
10
|
+
@tester = ContributorsStats::JsonHelperTester.new
|
11
|
+
end
|
12
|
+
|
13
|
+
it "sets default prefix" do
|
14
|
+
@tester.path_prefix.must_equal("https://api.github.com/")
|
15
|
+
end
|
16
|
+
|
17
|
+
it "uses given prefix and ads /" do
|
18
|
+
@tester.send(:configure_path, "test_me", ".json")
|
19
|
+
@tester.path_prefix.must_equal("test_me/")
|
20
|
+
end
|
21
|
+
|
22
|
+
it "sets default suffix" do
|
23
|
+
@tester.path_suffix.must_equal("")
|
24
|
+
end
|
25
|
+
|
26
|
+
it "uses given suffix and ads ." do
|
27
|
+
@tester.send(:configure_path, "test_me", "json")
|
28
|
+
@tester.path_suffix.must_equal(".json")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "builds url" do
|
32
|
+
@tester.url_builder("anything").must_equal("https://api.github.com/anything")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "builds custom url" do
|
36
|
+
@tester.send(:configure_path, "test_me", "json")
|
37
|
+
@tester.url_builder("anything").must_equal("test_me/anything.json")
|
38
|
+
end
|
39
|
+
|
40
|
+
describe ".load_json" do
|
41
|
+
it "loads json from full path" do
|
42
|
+
example = File.expand_path("../../fixtures-gh/users/mpapis.json", __FILE__)
|
43
|
+
result = @tester.load_json(example)
|
44
|
+
result["id"].must_equal(48054)
|
45
|
+
result["gravatar_id"].must_equal("3ec52ed58eb92026d86e62c39bdb7589")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "loads json from partial path" do
|
49
|
+
@tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), "json")
|
50
|
+
result = @tester.load_json("users/mpapis.json")
|
51
|
+
result["id"].must_equal(48054)
|
52
|
+
result["gravatar_id"].must_equal("3ec52ed58eb92026d86e62c39bdb7589")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "loads json from minimal path" do
|
56
|
+
@tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), "json")
|
57
|
+
result = @tester.load_json("users/mpapis")
|
58
|
+
result["id"].must_equal(48054)
|
59
|
+
result["gravatar_id"].must_equal("3ec52ed58eb92026d86e62c39bdb7589")
|
60
|
+
end
|
61
|
+
|
62
|
+
it "does not loads json for missing URL" do
|
63
|
+
lambda {
|
64
|
+
@tester.load_json("https://api.github.com/mpapis/nonexisting/")
|
65
|
+
}.must_raise(OpenURI::HTTPError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "does not loads json for broken path" do
|
69
|
+
@tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), "json")
|
70
|
+
lambda {
|
71
|
+
@tester.load_json("nonexisting")
|
72
|
+
}.must_raise(Errno::ENOENT)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'contributors_stats/reader'
|
3
|
+
|
4
|
+
describe ContributorsStats::Reader do
|
5
|
+
before do
|
6
|
+
@tester = ContributorsStats::Reader
|
7
|
+
end
|
8
|
+
|
9
|
+
it "loads data using single plugin single source" do
|
10
|
+
tester = @tester.new
|
11
|
+
tester.logger = ContributorsStats::ArrayLoggerExample.new
|
12
|
+
tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), ".json")
|
13
|
+
tester.load(:gh_repo, "railsinstaller/website")
|
14
|
+
tester.raw_data.size.must_equal(10)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "produces logs" do
|
18
|
+
tester = @tester.new
|
19
|
+
tester.logger = ContributorsStats::ArrayLoggerExample.new
|
20
|
+
tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), ".json")
|
21
|
+
tester.load(:gh_org, "railsinstaller")
|
22
|
+
tester.logger.data.size.must_equal(3)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "loads data using single plugin multiple sources" do
|
26
|
+
tester = @tester.new
|
27
|
+
tester.logger = ContributorsStats::ArrayLoggerExample.new
|
28
|
+
tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), ".json")
|
29
|
+
tester.load(:gh_repo, "railsinstaller/website")
|
30
|
+
tester.load(:gh_repo, "railsinstaller/railsinstaller-nix")
|
31
|
+
tester.raw_data.size.must_equal(12)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "loads data using single plugin array of sources (single) - privately" do
|
35
|
+
tester = @tester.new
|
36
|
+
tester.logger = ContributorsStats::ArrayLoggerExample.new
|
37
|
+
tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), ".json")
|
38
|
+
tester.send(:parse_readers, gh_repo: "railsinstaller/website")
|
39
|
+
tester.raw_data.size.must_equal(10)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "loads data using single plugin array of sources (multiple) - privately" do
|
43
|
+
tester = @tester.new
|
44
|
+
tester.logger = ContributorsStats::ArrayLoggerExample.new
|
45
|
+
tester.send(:configure_path, File.expand_path("../../fixtures-gh", __FILE__), ".json")
|
46
|
+
tester.send(:parse_readers, gh_repo: ["railsinstaller/website", "railsinstaller/railsinstaller-nix"])
|
47
|
+
tester.raw_data.size.must_equal(12)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "loads data using single plugin array of sources" do
|
51
|
+
tester = @tester.new(
|
52
|
+
:configure_path => [File.expand_path("../../fixtures-gh", __FILE__), ".json"],
|
53
|
+
:logger => ContributorsStats::ArrayLoggerExample.new,
|
54
|
+
:gh_repo => "railsinstaller/railsinstaller-nix"
|
55
|
+
)
|
56
|
+
tester.raw_data.size.must_equal(2)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|