43 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'spec_helper'
 | |
| 
 | |
| RSpec.describe Packages::SemVer, type: :model do
 | |
|   shared_examples '#parse with a valid semver' do |str, major, minor, patch, prerelease, build|
 | |
|     context "with #{str}" do
 | |
|       it "returns #{described_class.new(major, minor, patch, prerelease, build, prefixed: true)} with prefix" do
 | |
|         expected = described_class.new(major, minor, patch, prerelease, build, prefixed: true)
 | |
|         expect(described_class.parse('v' + str, prefixed: true)).to eq(expected)
 | |
|       end
 | |
| 
 | |
|       it "returns #{described_class.new(major, minor, patch, prerelease, build)} without prefix" do
 | |
|         expected = described_class.new(major, minor, patch, prerelease, build)
 | |
|         expect(described_class.parse(str)).to eq(expected)
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   shared_examples '#parse with an invalid semver' do |str|
 | |
|     context "with #{str}" do
 | |
|       it 'returns nil with prefix' do
 | |
|         expect(described_class.parse('v' + str, prefixed: true)).to be_nil
 | |
|       end
 | |
| 
 | |
|       it 'returns nil without prefix' do
 | |
|         expect(described_class.parse(str)).to be_nil
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   describe '#parse' do
 | |
|     it_behaves_like '#parse with a valid semver', '1.0.0', 1, 0, 0, nil, nil
 | |
|     it_behaves_like '#parse with a valid semver', '1.0.0-pre', 1, 0, 0, 'pre', nil
 | |
|     it_behaves_like '#parse with a valid semver', '1.0.0+build', 1, 0, 0, nil, 'build'
 | |
|     it_behaves_like '#parse with a valid semver', '1.0.0-pre+build', 1, 0, 0, 'pre', 'build'
 | |
|     it_behaves_like '#parse with an invalid semver', '01.0.0'
 | |
|     it_behaves_like '#parse with an invalid semver', '0.01.0'
 | |
|     it_behaves_like '#parse with an invalid semver', '0.0.01'
 | |
|     it_behaves_like '#parse with an invalid semver', '1.0.0asdf'
 | |
|   end
 | |
| end
 |