github-changelog-generator/spec/unit/reader_spec.rb

114 lines
4.4 KiB
Ruby
Raw Normal View History

2015-03-26 04:59:48 +00:00
#
# Author:: Enrico Stahn <mail@enricostahn.com>
#
# Copyright 2014, Zanui, <engineering@zanui.com.au>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
describe GitHubChangelogGenerator::Reader do
before(:all) do
@reader = GitHubChangelogGenerator::Reader.new
end
describe '#parse_heading' do
context 'when heading is empty' do
subject { @reader.parse_heading('## ') }
it { is_expected.to be_a(Hash) }
it { is_expected.to include('version', 'url', 'date') }
it { is_expected.to include('version' => nil, 'url' => nil, 'date' => nil) }
# TODO: Doesn't work?
# it { is_expected.to have_all_string_keys }
end
context 'when given version, url and date' do
subject { @reader.parse_heading('## [1.3.10](https://github.com/skywinder/Github-Changelog-Generator/tree/1.3.10) (2015-03-18)') }
it { is_expected.to include('version' => '1.3.10') }
it { is_expected.to include('url' => 'https://github.com/skywinder/Github-Changelog-Generator/tree/1.3.10') }
it { is_expected.to include('date' => '2015-03-18') }
end
context 'when no url and date is provided' do
subject { @reader.parse_heading('## foobar') }
it { is_expected.to include('version' => 'foobar', 'url' => nil, 'date' => nil) }
end
end
describe '#parse' do
context 'when file is empty' do
subject { @reader.parse('') }
it { is_expected.to be_an(Array) }
it { is_expected.to be_empty }
end
context 'when file has only the header' do
subject { @reader.parse('# Change Log') }
it { is_expected.to be_an(Array) }
it { is_expected.to be_empty }
end
end
describe 'example CHANGELOG files' do
subject { @reader.read(File.expand_path(File.join(File.dirname(__FILE__), '..', 'files', self.class.description))) }
context 'github-changelog-generator.md' do
it { is_expected.to be_an(Array) }
it { is_expected.not_to be_empty }
it { expect(subject.count).to eq(28) }
it { expect(subject.first).to include('version' => '1.3.10') }
it { expect(subject.first).to include('url' => 'https://github.com/skywinder/Github-Changelog-Generator/tree/1.3.10') }
it { expect(subject.first).to include('date' => '2015-03-18') }
it { expect(subject.first).to include('content') }
it 'content should not be empty' do
expect(subject.first['content']).not_to be_empty
end
end
context 'bundler.md' do
it { is_expected.to be_an(Array) }
it { is_expected.not_to be_empty }
it { expect(subject.count).to eq(151) }
it { expect(subject.first).to include('version' => '1.9.1') }
it { expect(subject.first).to include('url' => nil) }
it { expect(subject.first).to include('date' => '2015-03-21') }
it { expect(subject.first).to include('content') }
it 'content should not be empty' do
expect(subject.first['content']).not_to be_empty
end
end
context 'angular.js.md' do
it { is_expected.to be_an(Array) }
it { is_expected.not_to be_empty }
it do
pending('Implement heading_level for parser.')
expect(subject.count).to eq(134)
end
# it do
# pending('Implement heading_level for parser.')
# expect(subject.first).to include('version' => '1.4.0-beta.6 cookie-liberation')
# end
# it do
# pending('Implement heading_level for parser.')
# expect(subject.first).to include('url' => nil)
# end
# it do
# pending('Implement heading_level for parser.')
# expect(subject.first).to include('date' => '2015-03-17')
# end
# it do
# pending('Implement heading_level for parser.')
# expect(subject.first).to include('content')
# end
# it 'content should not be empty' do
# pending('Implement heading_level for parser.')
# expect(subject.first['content']).not_to be_empty
# end
end
end
end