osem-fcy/spec/models/campaign_spec.rb

71 lines
2.6 KiB
Ruby

require 'spec_helper'
require 'ahoy'
describe Campaign do
describe 'validations' do
it 'has a valid factory' do
expect(build(:campaign)).to be_valid
end
it 'is not valid without a name' do
should validate_presence_of(:name)
end
end
describe '#url_parameters' do
it 'returns the parameters in the correct format' do
campaign = create(:campaign, utm_source: 'google+', utm_medium: 'advertisement',
utm_term: 'opensource', utm_content: 'content', utm_campaign: '20percent')
campaign.conference = create(:conference)
result = '?utm_source=google+&utm_medium=advertisement&utm_term=opensource&utm_content=content&utm_campaign=20percent'
expect(campaign.url_parameters).to eq(result)
end
it 'returns only utm_campaign parameter if there are no parameters' do
campaign = create(:campaign)
campaign.conference = create(:conference)
expect(campaign.url_parameters).to eq('?utm_campaign=testcampaign')
end
end
describe '#visits' do
it 'returns one if there is one visit' do
campaign = create(:campaign, utm_source: 'google+', utm_medium: 'advertisement',
utm_term: 'opensource', utm_content: 'content', utm_campaign: '20percent')
campaign.conference = build(:conference)
create(:visit, utm_source: 'google+', utm_medium: 'advertisement',
utm_term: 'opensource', utm_content: 'content', utm_campaign: '20percent', started_at: Time.now)
expect(campaign.visits_count).to eq(1)
end
it 'returns zero if there are no visits' do
campaign = create(:campaign, utm_source: 'google+', utm_medium: 'advertisement',
utm_term: 'opensource', utm_content: 'content', utm_campaign: '20percent')
campaign.conference = create(:conference)
expect(campaign.visits_count).to eq(0)
end
end
describe '#registrations' do
it 'returns zero if there are no registration' do
campaign = build(:campaign, utm_source: 'google+', utm_medium: 'advertisement',
utm_term: 'opensource', utm_content: 'content', utm_campaign: '20percent')
campaign.conference = build(:conference)
expect(campaign.registrations_count).to eq(0)
end
end
describe '#submissions' do
it 'returns zero if there are no submissions' do
campaign = build(:campaign, utm_source: 'google+', utm_medium: 'advertisement',
utm_term: 'opensource', utm_content: 'content', utm_campaign: '20percent')
campaign.conference = build(:conference)
expect(campaign.submissions_count).to eq(0)
end
end
end