[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/pinkmagicdev/tip4commit/master/spec/models/project_spec.rb [Back]  [Original]

require 'spec_helper'

describe Project, type: :model do
  let(:project) { create(:project) }
  let(:project_of_bitbucket) { create(:project, :bitbucket) }

  describe 'Associations' do
    it { should have_many(:deposits) }
    it { should have_many(:tips) }
    it { should belong_to(:wallet) }
  end

  describe 'Validations' do
    it { should validate_presence_of(:full_name) }
    it { should validate_presence_of(:github_id) }
    it { should validate_presence_of(:host) }
    it { should validate_uniqueness_of(:full_name) }
    it { should validate_uniqueness_of(:github_id) }
    it { should validate_inclusion_of(:host).in_array %w(github bitbucket) }
  end

  describe 'bitcoin_address' do
    let(:wallet) { create(:wallet) }

    before do
      create(:wallet, xpub: 'xpub1key')
      wallet
    end

    it 'should generate a bitcoin address' do
      expect(project.bitcoin_address).not_to be_blank
    end

    it 'should connect project to the last wallet' do
      expect(project.wallet).to eq wallet
    end

    it 'should increment wallet\'s last_address_index' do
      expect { project }.to change { wallet.reload.last_address_index }.by 1
    end
  end

  describe '#repository_client' do
    context 'when host is github' do
      it 'returns Github instance' do
        expect(project.repository_client).to be_a Github
      end
    end

    context 'when host is bitbucket' do
      it 'returns Bitbucket instance' do
        expect(project_of_bitbucket.repository_client).to be_a Bitbucket
      end
    end

    context 'when host is blank' do
      before { project.host = '' }

      it 'returns NilClass instance' do
        expect(project.repository_client).to be_a NilClass
      end
    end
  end
end

Web Proxy Viewer  |  New URL  |  Original Page