From 1da7737f8970000fc7bd592c19aa6c647d49c347 Mon Sep 17 00:00:00 2001 From: mo khan Date: Tue, 21 Dec 2021 10:04:34 -0700 Subject: refactor: move files to lib/spec/bin --- spec/shogun/github_score_spec.rb | 31 +++++++++++++++++++++++++++++++ spec/spec_helper.rb | 23 +++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 spec/shogun/github_score_spec.rb create mode 100644 spec/spec_helper.rb (limited to 'spec') diff --git a/spec/shogun/github_score_spec.rb b/spec/shogun/github_score_spec.rb new file mode 100644 index 0000000..60deb11 --- /dev/null +++ b/spec/shogun/github_score_spec.rb @@ -0,0 +1,31 @@ +RSpec.describe Shogun::GithubScore do + describe "#score" do + subject(:github_score) { described_class.new(handle) } + let(:handle) { "tenderlove" } + + context "when calculating the score for a known user" do + let(:events) { [{type: 'PushEvent'}, {type: 'IssuesEvent'}] } + + before do + stub_request(:get, "https://api.github.com/users/#{handle}/events/public") + .to_return(status: 200, body: events.to_json) + end + + it { expect(github_score.score).to eq(4) } + end + + context "when attempting to retrive the score for an unknown user" do + before do + stub_request(:get, "https://api.github.com/users/#{handle}/events/public") + .to_return(status: 404, body: { + "message": "Not Found", + "documentation_url": "https://docs.github.com/rest/reference/activity#list-public-events-for-a-user" + }.to_json) + end + + it { expect { github_score.score }.to raise_error(Shogun::UserNotFound) } + end + + # it times out + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..bfb24e2 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1,23 @@ +require "webmock/rspec" +require "shogun" + +RSpec.configure do |config| + config.expect_with :rspec do |expectations| + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + config.mock_with :rspec do |mocks| + mocks.verify_partial_doubles = true + end + + # This option will default to `:apply_to_host_groups` in RSpec 4 (and will + # have no way to turn it off -- the option exists only for backwards + # compatibility in RSpec 3). It causes shared context metadata to be + # inherited by the metadata hash of host groups and examples, rather than + # triggering implicit auto-inclusion in groups with matching metadata. + config.shared_context_metadata_behavior = :apply_to_host_groups + config.filter_run_when_matching :focus + config.disable_monkey_patching! + config.warnings = true + config.order = :random + Kernel.srand config.seed +end -- cgit v1.2.3