Options: add error class, refactor

- improve readability of specs
  - extract methods
This commit is contained in:
Olle Jonsson
2016-10-05 20:57:28 +00:00
parent 70aaba9aa2
commit c1f6fce86c
2 changed files with 54 additions and 15 deletions

View File

@@ -1,16 +1,42 @@
# frozen_string_literal: true
describe GitHubChangelogGenerator::Options do
it 'can be instantiated with defaults' do
expect(described_class.new(user: 'olle')[:user]).to eq('olle')
RSpec.describe GitHubChangelogGenerator::Options do
describe "#initialize" do
context "with known options" do
it "instantiates successfully" do
expect(described_class.new(user: "olle")[:user]).to eq("olle")
end
end
context "with unknown options" do
it "raises an error" do
expect {
described_class.new(
git_remote: "origin",
strength: "super-strength",
wisdom: "deep"
)
}.to raise_error("[:strength, :wisdom]")
end
end
end
it 'disallows unknown option names' do
expect {
described_class.new(
git_remote: 'origin',
strength: 'super-strength',
wisdom: 'deep'
)
}.to raise_error(ArgumentError, "Unsupported options [:strength, :wisdom]")
describe "#[]=(key, value)" do
let(:options) { described_class.new(git_remote: "origin") }
context "with known options" do
it "sets the option value" do
expect {
options[:git_remote] = "in the cloud"
}.to change { options[:git_remote] }.to "in the cloud"
end
end
context "with unknown options" do
it "raises an error" do
expect {
options[:charisma] = 8
}.to raise_error(":charisma")
end
end
end
end