require_relative 'spec_helper' describe Card do describe 'parses name' do before(:each) do allow_any_instance_of(Card).to receive(:init_data) @card = Card.new(double, double, dummy_settings) end it 'extracts single digit story point value from card name' do allow(@card).to receive(:name).and_return('(3) P1: Refactor cards') expect(@card.story_points).to eq(3) end it 'extracts double digit story point value from card name' do allow(@card).to receive(:name).and_return '(13) P1: Refactor cards' expect(@card.story_points).to eq(13) end it 'extracts fractional story point value from card name' do allow(@card).to receive(:name).and_return '(0.5) P1: Refactor cards' expect(@card.story_points).to eq(0.5) end it 'extracts story points when value is not at beginning of card name' do allow(@card).to receive(:name).and_return 'P01: (3) Refactor cards' expect(@card.story_points).to eq(3) end end describe 'counts checklists' do before(:each) do @card = Card.new({ 'cards' => [dummy_card_json] }, '5319c0409a567dc62b68aa6b', dummy_settings) end it 'counts all checklist items that are marked as no_task_checklists' do expect(@card.tasks).to eq(3) end it 'counts all closed checklist items that are marked as no_task_checklists' do expect(@card.done_tasks).to eq(1) end end describe '#parse_yaml_from_description' do it 'parses description only having YAML' do description = < [{ 'id' => 'card_id', 'labels' => labels }] } end let :labels do [] end context 'no swimlane' do let :swimlanes do [] end it 'returns false' do expect(subject.swimlane?).to be false end end context 'one swimlane' do let :swimlanes do ['a_swimlane'] end context 'matching label' do let :labels do [{ 'name' => 'a_swimlane' }] end it 'returns true' do expect(subject.swimlane?).to be true end end context 'non-matching label' do let :labels do [{ 'name' => 'something_completely_different' }] end it 'returns false' do expect(subject.swimlane?).to be false end end end context 'two swimlanes' do let :swimlanes do %w[a_swimlane another_swimlane] end context 'matching label' do let :labels do [{ 'name' => 'another_swimlane' }] end it 'returns true' do expect(subject.swimlane?).to be true end end context 'one matching label of multiple labels' do let :labels do [ { 'name' => 'something_completely_different' }, { 'name' => 'another_swimlane' } ] end it 'returns true' do expect(subject.swimlane?).to be true end end context 'non-matching label' do let :labels do [{ 'name' => 'something_completely_different' }] end it 'returns false' do expect(subject.swimlane?).to be false end end end end end