2017-09-15 1 views
0

Actuellement, j'ai 130 lignes de code avec le code Ruby similaire:Créer usine réutilisable pour la génération de code

@acquirer = create(:acquirer, 
        name: 'OmniPay Datawire acquirer', 
        country_code: 372, 
        timezone: 'Europe/Dublin' 
       ) 

@reseller = create(:reseller, 
        name: 'OmniPay Datawire reseller', 
        domain: 'op-res-domain') 
@merchant = create(:merchant, 
        name: 'OmniPay Datawire Merchant', 
        state_raw: 2, 
        supported_features: 15, 
        merchant_owner: @reseller, 
        login: 'test', 
        pwd: 'test', 
        notification_url: 'http://127.0.0.1/notification_url') 

@contract = create(:contract_supports_all, 
        name: 'Omnipay Datawire Contract', 
        gateway: 'test', 
        mpi: 'test', 
        acquirer: @acquirer, 
        contract_owner: @reseller, 
        merchant: @merchant, 
        descriptor: 'Descriptor', 
        activated: '1',      
       ) 

Comment je peux créer la méthode d'usine pour la réutilisation de ce code?

Je voudrais économiser autant que possible l'espace. Pouvez-vous me montrer un exemple très utile que je peux utiliser comme solution?

+0

jamais pensé à utiliser https://github.com/thoughtbot/factory_girl/ blob/maître/GETTING_STARTED.md ou https://github.com/paulelliott/fabrication –

+0

@NickM je pense que l'auteur utilise FactoryGril. –

Répondre

0

Vous pouvez créer le module avec la méthode qui peupleront les données:

# spec/support/sample 

module Sample 
    def populate_data 
    @acquirer = create(:acquirer, 
       name: 'OmniPay Datawire acquirer', 
       country_code: 372, 
       timezone: 'Europe/Dublin' 
      ) 

    @reseller = create(:reseller, 
       name: 'OmniPay Datawire reseller', 
       domain: 'op-res-domain') 
    @merchant = create(:merchant, 
       name: 'OmniPay Datawire Merchant', 
       state_raw: 2, 
       supported_features: 15, 
       merchant_owner: @reseller, 
       login: 'test', 
       pwd: 'test', 
       notification_url: 'http://127.0.0.1/notification_url') 

    @contract = create(:contract_supports_all, 
       name: 'Omnipay Datawire Contract', 
       gateway: 'test', 
       mpi: 'test', 
       acquirer: @acquirer, 
       contract_owner: @reseller, 
       merchant: @merchant, 
       descriptor: 'Descriptor', 
       activated: '1',      
      ) 
    end 
end 

et l'inclure dans le test:

require 'support/sample' 

#spec/sample_test_spec 

describe 'test something' do 
include Sample 

before do 
    populate_data 
end 

it 'test something' do 
    expect(@acquirer).to_not be nil 
end 

end