hubstats 0.3.0 → 0.3.1

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YmYyMTJlM2ZlOWJhNDFjYjcwNTI3Yjg4OWJkYmVmZTQ3MTg2ZDZiNw==
4
+ NzRkMWM1NzQyOWY2YWMxZDdmZGZlMGIyZTgzMGU2YjQ0MjQ2OTFhZg==
5
5
  data.tar.gz: !binary |-
6
- ZmQzYjZlNjMwYWJiZjBmYWY1NTBmMWY4YTFiN2FiOGY2NWNlNmQwMA==
6
+ ZjVhMDgwNTRmYmNlMGM1M2I0M2IwNDQ3NTQ0ODg5ZjRmNDk5MzhlYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWQyN2QwMDAyNzBkYzg4MWZmZjJlMjM1NDkzMTU3ZjM5YzcyNDc2NGFjNzBh
10
- MGI3OWFiZGUyMTA5ODg0NWE2ZWJhNTE1OTk5Mzk3MGIzZWQ2YmY3NTBjYjZi
11
- MWMxMTg0ODA0MGNlMjU5MmQ5NzBhYTRhNGZmMzRmNWQwZTA0MTM=
9
+ MzZjMzZhYmM2ODg3ODQ0OTYxYzMyMWRmOTlmNTlmMTAyZGU0MjRmMzExMWY2
10
+ MjMxNzNkMTFhODE0YmYwYTIyNzkyYjcyMTAyYTlhYmE0ZTA1MzMyZjU3ZTU4
11
+ NTM2NzBjZTgwNDhlYTcyNTY2NzFkZWUzOThmZmVkNThlYzU1ZmM=
12
12
  data.tar.gz: !binary |-
13
- NDJhNGQ5OTk3MTY3YzZkNTY4ZWE0ZGRhZjhiMzAzOWRjM2ExYTMwNzYyNzcx
14
- Y2ZjYWQ5YWM4ODUyNTRhYWQ4NWE2ZWVmY2I2ZjM4NDE1MDMxOGNkZjgwMjhk
15
- MmQ1NzhiYmIzMTlmYjEzNGJmM2RhODRmOTgzNDg2YmZlOGUzOGE=
13
+ OGNhMDc2ZGNhYzg4NWQ5NzZhODc2MWU4MzIwMmUyOTQ2NTUwZDI5Y2JhYmVh
14
+ ZjY0MGJjMGEwYzY0NjZkMzk3YjRiMzdjZDUwNDFjMzVjZjBjMGQwNjZkM2U1
15
+ YTQ5ZmUzY2M5MzYyMWVhMDNhMjY3MTZjOTY2YmE5NjdiNTQ0NDI=
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,6 @@
1
+ #### v0.4.2
2
+ #### v0.4.1
3
+ #### v0.4.0
1
4
  #### v0.3.0
2
5
  #### v0.2.3
3
6
  #### v0.2.2
data/README.md CHANGED
@@ -46,7 +46,7 @@ Set the endpoint to be:
46
46
 
47
47
  Hubstats needs to know what repos for it to watch. You can set it to watch either an entire organization or a list of specific repos in octokit.yml.
48
48
 
49
- ### Testing
49
+ ## Testing
50
50
 
51
51
  All of the automated tests are written in RSpec. Since hubstats is a plugin, not an application, we need to install the plugin into a Rails application to run. The `test` directory is a dummy rails application for manually testing the UI by serving hubstats locally. When developing and using the `test/dummy` locally, then the test will automatically sync with any updated code, so it doesn't need to be re-served when changes are made with the normal Rails application. When in the development process, one just needs to run `rails s` once from the command line (while in `test/dummy`) to serve the plugin. http://guides.rubyonrails.org/plugins.html will give more information on the implementation of a Rails plugin.
52
52
 
@@ -12,7 +12,7 @@ module Hubstats
12
12
  # .map(&:id)
13
13
 
14
14
  # sets to include user and repo, and sorts data
15
- @deploys = Hubstats::Deploy.includes(:user).includes(:repo)
15
+ @deploys = Hubstats::Deploy.includes(:repo)
16
16
  .order_with_timespan(@timespan, params[:order])
17
17
  # .belonging_to_users(params[:users]).belonging_to_repos(params[:repos])
18
18
  # .paginate(:page => params[:page], :per_page => 15).order("deployed_at DESC")
@@ -30,11 +30,26 @@ module Hubstats
30
30
  end
31
31
 
32
32
  def create
33
- @deploy = Deploy.new(params[:deploy])
34
- if @deploy.save
35
- redirect_to :action => 'index'
33
+ if params[:deployed_by].nil? || params[:git_revision].nil? || params[:repo_name].nil?
34
+ render text: "Missing a necessary parameter: deployer, git revision, or repository name.", :status => 400 and return
36
35
  else
37
- render :nothing => true, :status => 400
36
+ @deploy = Deploy.new
37
+ @deploy.deployed_at = params[:deployed_at]
38
+ @deploy.deployed_by = params[:deployed_by]
39
+ @deploy.git_revision = params[:git_revision]
40
+ @repo = Hubstats::Repo.where(full_name: params[:repo_name])
41
+
42
+ if @repo.empty?
43
+ render text: "Repository name is invalid.", :status => 400 and return
44
+ else
45
+ @deploy.repo_id = @repo.first.id.to_i
46
+ end
47
+
48
+ if @deploy.save
49
+ render :nothing =>true, :status => 200 and return
50
+ else
51
+ render :nothing => true, :status => 400 and return
52
+ end
38
53
  end
39
54
  end
40
55
 
@@ -1,6 +1,14 @@
1
1
  module Hubstats
2
2
  class Deploy < ActiveRecord::Base
3
3
 
4
+ before_validation :check_time, on: :create
5
+ validates :git_revision, :deployed_at, :deployed_by, :repo_id, presence: true
6
+ #validates_associated :repo
7
+
8
+ def check_time
9
+ self.deployed_at = Time.now.getutc if deployed_at.nil?
10
+ end
11
+
4
12
  scope :deployed_since, lambda {|time| where("hubstats_deploys.deployed_at > ?", time) }
5
13
  scope :belonging_to_repo, lambda {|repo_id| where(repo_id: repo_id)}
6
14
  scope :belonging_to_user, lambda {|user_id| where(user_id: user_id)}
@@ -21,7 +21,7 @@ module Hubstats
21
21
  if exists = Hubstats::Label.where(name: label[:name]).first
22
22
  return exists
23
23
  else
24
- Hubstats::Label.new(name: label[:name], url: label[:url], color: label[:color])
24
+ Label.new(name: label[:name], url: label[:url], color: label[:color])
25
25
  end
26
26
  end
27
27
 
data/config/routes.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  Hubstats::Engine.routes.draw do
2
2
  root to: "pull_requests#index" #sets default root to be the pulls page
3
3
  post "/handler" => "events#handler", :as => :handler
4
- resources :deploys, :only => [:index, :create] #routes to both index and to create method
4
+ resources :deploys, :only => [:create, :index] #routes to both index and to create method
5
5
  get "/metrics" => "repos#dashboard", :as => :metrics #routes to list of repos and stats
6
6
  get "/pulls" => "pull_requests#index", :as => :pulls #routes to list of pulls
7
7
  get "/users" => "users#index", :as => :users #routes to list of users
@@ -1,3 +1,3 @@
1
1
  module Hubstats
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -0,0 +1,95 @@
1
+ require 'spec_helper'
2
+
3
+ module Hubstats
4
+ describe DeploysController, :type => :controller do
5
+ routes { Hubstats::Engine.routes }
6
+ describe "#create" do
7
+
8
+ before :each do
9
+ create(:repo, :full_name => "sportngin/ngin")
10
+ end
11
+
12
+ it 'should create a deploy' do
13
+ post(:create, {"git_revision" => "c1a2b37",
14
+ "repo_name" => "sportngin/ngin",
15
+ "deployed_at" => "2009-02-03 03:00:00 -0500",
16
+ "deployed_by" => "emmasax1"})
17
+ expect(assigns(:deploy).git_revision).to eq("c1a2b37")
18
+ expect(assigns(:deploy).deployed_at).to eq("2009-02-03 03:00:00 -0500")
19
+ expect(assigns(:deploy).deployed_by).to eq("emmasax1")
20
+ expect(assigns(:deploy).repo_id).to eq(101010)
21
+ expect(response).to have_http_status(200)
22
+ end
23
+
24
+ it 'should create a deploy without a deployed_at because nil time turns into current time' do
25
+ post(:create, {"git_revision" => "c1a2b37",
26
+ "repo_name" => "sportngin/ngin",
27
+ "deployed_at" => nil,
28
+ "deployed_by" => "emmasax1"})
29
+ expect(assigns(:deploy).git_revision).to eq("c1a2b37")
30
+ expect(assigns(:deploy).deployed_by).to eq("emmasax1")
31
+ expect(assigns(:deploy).repo_id).to eq(101010)
32
+ expect(response).to have_http_status(200)
33
+ end
34
+
35
+ it 'should NOT create a deploy without a git_revision' do
36
+ post(:create, {"git_revision" => nil,
37
+ "repo_name" => "sportngin/ngin",
38
+ "deployed_at" => "2009-02-03 03:00:00 -0500",
39
+ "deployed_by" => "emmasax1"})
40
+ expect(response).to have_http_status(400)
41
+ end
42
+
43
+ it 'should NOT create a deploy without a deployed_by' do
44
+ post(:create, {"git_revision" => "c1a2b37",
45
+ "repo_name" => "sportngin/ngin",
46
+ "deployed_at" => "2009-02-03 03:00:00 -0500",
47
+ "deployed_by" => nil})
48
+ expect(response).to have_http_status(400)
49
+ end
50
+
51
+ it 'should NOT create a deploy without a repo_name' do
52
+ post(:create, {"git_revision" => "c1a2b37",
53
+ "repo_name" => nil,
54
+ "deployed_at" => "2009-02-03 03:00:00 -0500",
55
+ "deployed_by" => "emmasax1"})
56
+ expect(response).to have_http_status(400)
57
+ end
58
+
59
+ it 'should NOT create a deploy when given a non existing repo_name' do
60
+ post(:create, {"git_revision" => "c1a2b37",
61
+ "repo_name" => "sportngin/make_resourceful",
62
+ "deployed_at" => "2009-02-03 03:00:00 -0500",
63
+ "deployed_by" => "emmasax1"})
64
+ expect(response).to have_http_status(400)
65
+ end
66
+ end
67
+
68
+ describe "#index" do
69
+
70
+ before :each do
71
+ create(:repo, :full_name => "sportngin/ngin")
72
+ end
73
+
74
+ it "should correctly order all of the deploys" do
75
+ deploy1 = create(:deploy, :git_revision => "c1a2b37",
76
+ :repo_id => 101010,
77
+ :deployed_at => "2009-02-03 03:00:00 -0500",
78
+ :deployed_by => "emmasax1")
79
+ deploy2 = create(:deploy, :git_revision => "kd9c102",
80
+ :repo_id => 101010,
81
+ :deployed_at => "2015-02-03 03:00:00 -0500",
82
+ :deployed_by => "emmasax1")
83
+ deploy3 = create(:deploy, :git_revision => "owk19sf",
84
+ :repo_id => 101010,
85
+ :deployed_at => "2011-02-03 03:00:00 -0500",
86
+ :deployed_by => "emmasax1")
87
+ deploys_ordered = [deploy2, deploy3, deploy1]
88
+ expect(Hubstats::Deploy).to receive(:order_with_timespan).and_return(deploys_ordered)
89
+ get :index
90
+ expect(response).to have_http_status(200)
91
+ expect(response).to render_template(:index)
92
+ end
93
+ end
94
+ end
95
+ end
@@ -2,6 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  module Hubstats
4
4
  RSpec.describe EventsController, :type => :controller do
5
-
5
+
6
6
  end
7
7
  end
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :deploy, :class => Hubstats::Deploy do
3
+ git_revision "3dis01"
4
+ repo_id 101010
5
+ deployed_at "2015-02-03 03:00:00 -0500"
6
+ deployed_by "emmasax1"
7
+ end
8
+ end
@@ -12,5 +12,4 @@ FactoryGirl.define do
12
12
 
13
13
  initialize_with { attributes }
14
14
  end
15
-
16
- end
15
+ end
@@ -8,30 +8,30 @@ module Hubstats
8
8
  let(:payload) {build(:pull_request_payload_hash)}
9
9
 
10
10
  subject {Hubstats::EventsHandler.new()}
11
- it 'successfully routes the event' do
11
+ it 'should successfully route the event' do
12
12
  expect(subject).to receive(:pull_processor)
13
13
  subject.route(payload,payload[:type])
14
14
  end
15
15
 
16
- it 'adds labels to pull request' do
17
- allow(Hubstats::PullRequest).to receive(:create_or_update) {pull}
18
- allow(Hubstats::Repo).to receive(:where) {[repo,repo]}
19
- allow(Hubstats::GithubAPI).to receive(:get_labels_for_pull) {['low','high']}
16
+ it 'should add labels to pull request' do
17
+ allow(PullRequest).to receive(:create_or_update) {pull}
18
+ allow(Repo).to receive(:where) {[repo,repo]}
19
+ allow(GithubAPI).to receive(:get_labels_for_pull) {['low','high']}
20
20
  expect(pull).to receive(:add_labels).with(['low','high'])
21
21
  subject.route(payload,payload[:type])
22
22
  end
23
23
  end
24
24
 
25
25
  context "CommentEvent" do
26
- it 'successfully routes the event' do
27
- ehandler = Hubstats::EventsHandler.new()
26
+ it 'should successfully route the event' do
27
+ ehandler = EventsHandler.new()
28
28
  payload = build(:comment_payload_hash)
29
29
  expect(ehandler).to receive(:comment_processor)
30
30
 
31
31
  ehandler.route(payload,payload[:type])
32
32
  end
33
33
 
34
- it 'successfully processes the event' do
34
+ it 'should successfully process the event' do
35
35
  ehandler = Hubstats::EventsHandler.new()
36
36
  payload = build(:comment_payload_hash)
37
37
  expect(Hubstats::Comment).to receive(:create_or_update)
@@ -39,7 +39,7 @@ module Hubstats
39
39
  ehandler.route(payload,payload[:type])
40
40
  end
41
41
 
42
- it 'successfully creates_or_updates the event' do
42
+ it 'should successfully creates_or_updates the event' do
43
43
  ehandler = Hubstats::EventsHandler.new()
44
44
  payload = build(:comment_payload_hash)
45
45
  expect(ehandler.route(payload,payload[:type]).class).to eq(Hubstats::Comment)
@@ -47,4 +47,4 @@ module Hubstats
47
47
  end
48
48
 
49
49
  end
50
- end
50
+ end
@@ -20,7 +20,7 @@ module Hubstats
20
20
  allow(ENV).to receive(:[]).and_return(nil)
21
21
  end
22
22
 
23
- it 'initializes client with options param' do
23
+ it 'should initialize client with options param' do
24
24
  Hubstats::GithubAPI.configure({"access_token" => access_token})
25
25
  expect(Octokit::Client).to receive(:new).with(access_token: access_token).and_return(client)
26
26
  expect(Hubstats::GithubAPI.client).to eq(client)
@@ -32,7 +32,7 @@ module Hubstats
32
32
  allow(ENV).to receive(:[]).with("GITHUB_API_TOKEN").and_return("github_api_token")
33
33
  end
34
34
 
35
- it 'initializes client with environment variables' do
35
+ it 'should initialize client with environment variables' do
36
36
  Hubstats::GithubAPI.configure({"access_token" => access_token})
37
37
  expect(Octokit::Client).to receive(:new).with(access_token: "github_api_token").and_return(client)
38
38
  expect(Hubstats::GithubAPI.client()).to eq(client)
@@ -46,7 +46,7 @@ module Hubstats
46
46
  allow(ENV).to receive(:[]).with("CLIENT_SECRET").and_return("client_secret")
47
47
  end
48
48
 
49
- it 'intializes client with client-id environment variables' do
49
+ it 'should intialize client with client-id environment variables' do
50
50
  Hubstats::GithubAPI.configure()
51
51
  expect(Octokit::Client).to receive(:new).with(client_id: "client_id", client_secret: "client_secret").and_return(client)
52
52
  expect(Hubstats::GithubAPI.client).to eq(client)
@@ -59,9 +59,9 @@ module Hubstats
59
59
  allow(ENV).to receive(:[]).and_return(nil)
60
60
  end
61
61
 
62
- it 'fails to initialize at all' do
62
+ it 'should fail to initialize at all' do
63
63
  Hubstats::GithubAPI.configure()
64
- expect(lambda { Hubstats::GithubAPI.client}).to raise_error Octokit::Unauthorized
64
+ expect{Hubstats::GithubAPI.client}.to raise_error Octokit::Unauthorized
65
65
  end
66
66
  end
67
67
  end
@@ -71,7 +71,7 @@ module Hubstats
71
71
  let(:repo) {'hubstats'}
72
72
  context "with old_endpoint" do
73
73
  let(:old_endpoint) {'www.hubstats.com'}
74
- it 'calls delete_hook' do
74
+ it 'should call delete_hook' do
75
75
  allow(subject).to receive(:create_hook)
76
76
  expect(subject).to receive(:delete_hook).with(repo,old_endpoint)
77
77
  subject.update_hook('hubstats','www.hubstats.com')
@@ -79,7 +79,7 @@ module Hubstats
79
79
  end
80
80
 
81
81
  context "without old_point" do
82
- it 'does not call delete_hook' do
82
+ it 'should not call delete_hook' do
83
83
  allow(subject).to receive(:create_hook)
84
84
  expect(subject).to_not receive(:delete_hook).with(repo)
85
85
  subject.update_hook('hubstats')
@@ -97,12 +97,12 @@ module Hubstats
97
97
  allow(subject).to receive(:client) {client}
98
98
  end
99
99
 
100
- it "calls octokit create_hook" do
100
+ it "should call octokit create_hook" do
101
101
  expect(client).to receive(:create_hook)
102
102
  subject.create_hook(repo)
103
103
  end
104
104
 
105
- it "rescues unprocessable entity" do
105
+ it "should rescue unprocessable entity" do
106
106
  allow(client).to receive(:create_hook) { raise Octokit::UnprocessableEntity }
107
107
  subject.create_hook(repo)
108
108
  end
@@ -2,35 +2,22 @@ require 'spec_helper'
2
2
 
3
3
  module Hubstats
4
4
  describe Comment, :type => :model do
5
- it 'creates and returns a comment and user' do
6
- github_user = {
7
- :login => "elliothursh",
8
- :id => 10,
9
- :type => "User"
10
- }
11
-
12
- github_comment = {
13
- :user => github_user,
14
- :pull_request_url => "www.pull.com",
15
- :id => 100
16
- }
17
-
18
- github_repo = {
19
- :id => 151,
20
- :name => "HellWorld"
21
- }
22
-
23
- pull_request = {
24
- :id => 1000,
25
- :url => "www.pull.com",
26
- :repository => github_repo,
27
- :user => github_user
28
- }
29
-
30
- repo = Hubstats::Repo.create_or_update(github_repo)
31
- pull = Hubstats::PullRequest.create_or_update(pull_request)
32
- comment = Hubstats::Comment.create_or_update(github_comment)
33
-
5
+ it 'should create and return a comment and user' do
6
+ github_user = {:login => "elliothursh",
7
+ :id => 10,
8
+ :type => "User"}
9
+ github_comment = {:user => github_user,
10
+ :pull_request_url => "www.pull.com",
11
+ :id => 100}
12
+ github_repo = {:id => 151,
13
+ :name => "HelloWorld"}
14
+ pull_request = {:id => 1000,
15
+ :url => "www.pull.com",
16
+ :repository => github_repo,
17
+ :user => github_user}
18
+ repo = Repo.create_or_update(github_repo)
19
+ pull = PullRequest.create_or_update(pull_request)
20
+ comment = Comment.create_or_update(github_comment)
34
21
  expect(comment.id).to eq(github_comment[:id])
35
22
  expect(comment.user_id).to eq(github_user[:id])
36
23
  end
@@ -0,0 +1,110 @@
1
+ require 'spec_helper'
2
+
3
+ module Hubstats
4
+ describe Deploy, :type => :model do
5
+ it 'should create a deploy and check validations' do
6
+ repo = build(:repo)
7
+ deploy_hash = {git_revision: "c1a2b37",
8
+ repo_id: repo.id,
9
+ deployed_at: "2009-02-03 03:00:00 -0500",
10
+ deployed_by: "emmasax1"}
11
+ deploy = Deploy.create(deploy_hash)
12
+ expect(Deploy.count).to eq(1)
13
+ expect(deploy.git_revision).to eq(deploy_hash[:git_revision])
14
+ expect(deploy.repo_id).to eq(deploy_hash[:repo_id])
15
+ expect(deploy.deployed_at).to eq(deploy_hash[:deployed_at])
16
+ expect(deploy.deployed_by).to eq(deploy_hash[:deployed_by])
17
+ end
18
+
19
+ it 'should order deploys based on timespan ASC' do
20
+ repo = build(:repo)
21
+ deploy1 = Deploy.create(git_revision: "c1a2b37",
22
+ repo_id: repo.id,
23
+ deployed_at: "2009-12-03 23:00:00",
24
+ deployed_by: "emmasax1")
25
+ deploy2 = Deploy.create(git_revision: "kd92h10",
26
+ repo_id: repo.id,
27
+ deployed_at: "2010-05-26 22:00:00",
28
+ deployed_by: "odelltuttle")
29
+ deploy3 = Deploy.create(git_revision: "k10d8as",
30
+ repo_id: repo.id,
31
+ deployed_at: "2015-08-21 12:00:00",
32
+ deployed_by: "EvaMartinuzzi")
33
+ deploy4 = Deploy.create(git_revision: "917d9ss",
34
+ repo_id: repo.id,
35
+ deployed_at: "2014-12-19 08:00:00",
36
+ deployed_by: "panderson74")
37
+ deploys_ordered = [deploy1, deploy2, deploy4, deploy3]
38
+ new_ordered_deploys = Deploy.order_with_timespan(520.weeks, "ASC")
39
+ expect(Deploy.count).to eq(4)
40
+ expect(new_ordered_deploys).to eq(deploys_ordered)
41
+ end
42
+
43
+ it 'should order deploys based on timespan DESC' do
44
+ repo = build(:repo)
45
+ deploy1 = Deploy.create(git_revision: "c1a2b37",
46
+ repo_id: repo.id,
47
+ deployed_at: "2009-12-03 23:00:00",
48
+ deployed_by: "emmasax1")
49
+ deploy2 = Deploy.create(git_revision: "kd92h10",
50
+ repo_id: repo.id,
51
+ deployed_at: "2010-05-26 22:00:00",
52
+ deployed_by: "odelltuttle")
53
+ deploy3 = Deploy.create(git_revision: "k10d8as",
54
+ repo_id: repo.id,
55
+ deployed_at: "2015-08-21 12:00:00",
56
+ deployed_by: "EvaMartinuzzi")
57
+ deploy4 = Deploy.create(git_revision: "917d9ss",
58
+ repo_id: repo.id,
59
+ deployed_at: "2014-12-19 08:00:00",
60
+ deployed_by: "panderson74")
61
+ deploys_ordered = [deploy3, deploy4, deploy2, deploy1]
62
+ new_ordered_deploys = Deploy.order_with_timespan(520.weeks, "DESC")
63
+ expect(Deploy.count).to eq(4)
64
+ expect(new_ordered_deploys).to eq(deploys_ordered)
65
+ end
66
+
67
+ it 'should NOT create a deploy without a git_revision' do
68
+ repo = build(:repo)
69
+ expect(Deploy.create(git_revision: nil,
70
+ repo_id: repo.id,
71
+ deployed_at: "2009-02-03 03:00:00 -0500",
72
+ deployed_by: "emmasax1")).not_to be_valid
73
+ end
74
+
75
+ it 'should NOT create a deploy without a repo_id' do
76
+ repo = build(:repo)
77
+ expect(Deploy.create(git_revision: "c1a2b37",
78
+ repo_id: nil,
79
+ deployed_at: "2009-02-03 03:00:00 -0500",
80
+ deployed_by: "emmasax1")).not_to be_valid
81
+ end
82
+
83
+
84
+ it 'should NOT create a deploy without a deployed_by' do
85
+ repo = build(:repo)
86
+ expect(Deploy.create(git_revision: "c1a2b37",
87
+ repo_id: repo.id,
88
+ deployed_at: "2009-02-03 03:00:00 -0500",
89
+ deployed_by: nil)).not_to be_valid
90
+ end
91
+
92
+ it 'should create a deploy wihtout a deployed_at because nil time turns into current time' do
93
+ repo = build(:repo)
94
+ expect(Deploy.create(git_revision: "c1a2b37",
95
+ repo_id: repo.id,
96
+ deployed_at: nil,
97
+ deployed_by: "emmasax1")).to be_valid
98
+ end
99
+
100
+ it 'should NOT create a deploy without an already valid repo_id' do
101
+ repo = build(:repo, :id => nil,
102
+ :name => nil,
103
+ :full_name => nil)
104
+ expect(Deploy.create(git_revision: "c1a2b37",
105
+ repo_id: repo.id,
106
+ deployed_at: "2009-02-03 03:00:00 -0500",
107
+ deployed_by: "emmasax1")).not_to be_valid
108
+ end
109
+ end
110
+ end
@@ -1,6 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Hubstats
4
- RSpec.describe Label, :type => :model do
4
+ describe Label, :type => :model do
5
+ it 'should create a label' do
6
+ label_hash = {name: "Feature request",
7
+ color: "FCEC7F",
8
+ url: "https://api.github.com/repos/sportngin/ngin/labels/feature-request"}
9
+ label = Label.create(label_hash)
10
+ expect(Label.count).to eq(1)
11
+ expect(label.name).to eq(label_hash[:name])
12
+ expect(label.color).to eq(label_hash[:color])
13
+ expect(label.url).to eq(label_hash[:url])
14
+ end
5
15
  end
6
16
  end
@@ -2,12 +2,13 @@ require 'spec_helper'
2
2
 
3
3
  module Hubstats
4
4
  describe PullRequest, :type => :model do
5
- it 'creates and returns a PullRequest' do
5
+ it 'should create and return a Pull Request' do
6
6
  pull = build(:pull_request_hash)
7
- pull_request = Hubstats::PullRequest.create_or_update(pull)
7
+ pull_request = PullRequest.create_or_update(pull)
8
8
  expect(pull_request.id).to eq(pull[:id])
9
9
  expect(pull_request.user_id).to eq(pull[:user][:id])
10
10
  expect(pull_request.repo_id).to eq(pull[:repository][:id])
11
+ expect(pull_request.number).to eq(pull[:number])
11
12
  end
12
13
  end
13
14
  end
@@ -1,7 +1,23 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Hubstats
4
- # describe Repo, :type => :model do
5
- # pending "add some examples to (or delete) #{__FILE__}"
6
- # end
4
+ describe Repo, :type => :model do
5
+ it 'should create a repo' do
6
+ repo_hash = {id: 131242,
7
+ owner_id: 3728684,
8
+ name: "example_name",
9
+ full_name: "sportngin/example_name",
10
+ pushed_at: "2015-05-27 13:51:21 -0500",
11
+ created_at: "2009-05-27 06:27:04 -0500",
12
+ updated_at: "2015-03-26 16:17:19 -0500"}
13
+ repo = Repo.create(repo_hash)
14
+ expect(repo.id).to eq(repo_hash[:id])
15
+ expect(repo.owner).to eq(repo_hash[:owner])
16
+ expect(repo.name).to eq(repo_hash[:name])
17
+ expect(repo.full_name).to eq(repo_hash[:full_name])
18
+ expect(repo.pushed_at).to eq(repo_hash[:pushed_at])
19
+ expect(repo.created_at).to eq(repo_hash[:created_at])
20
+ expect(repo.updated_at).to eq(repo_hash[:updated_at])
21
+ end
22
+ end
7
23
  end
@@ -2,22 +2,21 @@ require 'spec_helper'
2
2
 
3
3
  module Hubstats
4
4
  describe User, :type => :model do
5
-
6
5
  before do
7
- Hubstats::User.destroy_all()
6
+ User.destroy_all()
8
7
  end
9
8
 
10
-
11
- it 'creates and returns a user' do
9
+ it 'should create and return a user' do
12
10
  user = build(:user_hash, id: 10)
13
- expect(Hubstats::User.create_or_update(user).id).to eq(10)
11
+ expect(User.create_or_update(user).id).to eq(10)
14
12
  end
15
13
 
16
- it 'it updates a user based off id' do
17
- user1 = Hubstats::User.create_or_update(build(:user_hash, login: 'johnappleseed', id: 10))
18
- user2 = Hubstats::User.create_or_update(build(:user_hash, login: 'elliothursh', id: 10))
14
+ it 'should update a user based off id' do
15
+ user1 = User.create_or_update(build(:user_hash, login: 'johnappleseed', id: 10))
16
+ user2 = User.create_or_update(build(:user_hash, login: 'johndoe', id: 10))
19
17
  expect(user1).to eq(user2)
18
+ expect(user2.login).to eq("johndoe")
19
+ expect(user2.login).not_to eq("johnapplesdeed")
20
20
  end
21
-
22
21
  end
23
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hubstats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elliot Hursh
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-28 00:00:00.000000000 Z
12
+ date: 2015-06-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -232,11 +232,13 @@ files:
232
232
  - lib/tasks/hubstats_tasks.rake
233
233
  - lib/tasks/populate_task.rake
234
234
  - script/rails
235
+ - spec/controllers/hubstats/deploys_controller_spec.rb
235
236
  - spec/controllers/hubstats/events_controller_spec.rb
236
237
  - spec/controllers/hubstats/pull_requests_controller_spec.rb
237
238
  - spec/controllers/hubstats/repos_controller_spec.rb
238
239
  - spec/controllers/hubstats/users_controller_spec.rb
239
240
  - spec/factories/comment.rb
241
+ - spec/factories/deploys.rb
240
242
  - spec/factories/pull_requests.rb
241
243
  - spec/factories/repo.rb
242
244
  - spec/factories/users.rb
@@ -247,6 +249,7 @@ files:
247
249
  - spec/lib/hubstats/events_handler_spec.rb
248
250
  - spec/lib/hubstats/github_api_spec.rb
249
251
  - spec/models/hubstats/comment_spec.rb
252
+ - spec/models/hubstats/deploy_spec.rb
250
253
  - spec/models/hubstats/label_spec.rb
251
254
  - spec/models/hubstats/pull_request_spec.rb
252
255
  - spec/models/hubstats/repo_spec.rb
@@ -312,11 +315,13 @@ signing_key:
312
315
  specification_version: 4
313
316
  summary: Github Statistics
314
317
  test_files:
318
+ - spec/controllers/hubstats/deploys_controller_spec.rb
315
319
  - spec/controllers/hubstats/events_controller_spec.rb
316
320
  - spec/controllers/hubstats/pull_requests_controller_spec.rb
317
321
  - spec/controllers/hubstats/repos_controller_spec.rb
318
322
  - spec/controllers/hubstats/users_controller_spec.rb
319
323
  - spec/factories/comment.rb
324
+ - spec/factories/deploys.rb
320
325
  - spec/factories/pull_requests.rb
321
326
  - spec/factories/repo.rb
322
327
  - spec/factories/users.rb
@@ -327,6 +332,7 @@ test_files:
327
332
  - spec/lib/hubstats/events_handler_spec.rb
328
333
  - spec/lib/hubstats/github_api_spec.rb
329
334
  - spec/models/hubstats/comment_spec.rb
335
+ - spec/models/hubstats/deploy_spec.rb
330
336
  - spec/models/hubstats/label_spec.rb
331
337
  - spec/models/hubstats/pull_request_spec.rb
332
338
  - spec/models/hubstats/repo_spec.rb