Skip to content
This repository has been archived by the owner on Mar 27, 2023. It is now read-only.

Commit

Permalink
Pass meta hash to queue
Browse files Browse the repository at this point in the history
  • Loading branch information
osahyoun committed Jun 10, 2016
1 parent f6188ac commit 2a84d0e
Show file tree
Hide file tree
Showing 7 changed files with 149 additions and 255 deletions.
9 changes: 5 additions & 4 deletions app/controllers/application_controller.rb
Expand Up @@ -13,6 +13,11 @@ def after_sign_in_path_for(user)
pages_url
end


def mobile_value
MobileDetector.detect(browser)
end

private

def set_locale(code)
Expand Down Expand Up @@ -47,10 +52,6 @@ def write_member_cookie(member_id)
}
end

def mobile_value
MobileDetector.detect(browser)
end

def referer_url
{action_referer: request.referer}
end
Expand Down
32 changes: 23 additions & 9 deletions app/services/action_queue.rb
Expand Up @@ -9,7 +9,7 @@ def initialize(action)
end

def push
ChampaignQueue.push(payload)
ChampaignQueue.push(payload.merge(meta))
end

def page
Expand All @@ -24,6 +24,20 @@ def member
@member ||= @action.member
end

def meta
{
meta: {
title: page.title,
uri: "/a/#{page.slug}",
slug: page.slug,
first_name: member.first_name,
last_name: member.last_name,
created_at: @action.created_at,
country: country(member.country),
subscribed_member: @action.subscribed_member
}
}
end

class_methods do
def push(action)
Expand All @@ -35,14 +49,14 @@ def push(action)
module Donatable
def user_data
{
first_name: member.first_name,
last_name: member.last_name,
email: member.email,
country: country(member.country),
akid: data[:akid],
postal: data[:postal],
address1: data[:address1],
source: data[:source]
first_name: member.first_name,
last_name: member.last_name,
email: member.email,
country: country(member.country),
akid: data[:akid],
postal: data[:postal],
address1: data[:address1],
source: data[:source]
}.merge(UserLanguageISO.for(page.language) )
end

Expand Down
27 changes: 22 additions & 5 deletions spec/controllers/application_controller_spec.rb
@@ -1,17 +1,14 @@
require 'rails_helper'

describe ApplicationController do

context 'localization' do

around(:each) do |spec|
I18n.locale = I18n.default_locale
spec.run
I18n.locale = I18n.default_locale
end

describe 'localize_from_page_id' do

let(:english) { create :language, code: 'en' }
let!(:page) { create :page, language: english }

Expand Down Expand Up @@ -40,7 +37,6 @@
end

describe 'set_locale' do

it 'sets the locale if it is a known locale' do
expect(I18n.locale).to eq :en
expect{ controller.send(:set_locale, 'fr') }.not_to raise_error
Expand All @@ -59,7 +55,28 @@
expect(I18n.locale).to eq :en
end
end

end

describe '#mobile_value' do
controller do
def index
render nothing: true
end
end

[
{ device: :mobile, agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257"},
{ device: :desktop, agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36"},
{ device: :tablet, agent: "Mozilla/5.0 (iPad; CPU OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25"},
{ device: :desktop, agent: "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136é".force_encoding(Encoding::ASCII_8BIT), note: '(ASCII-8BIT header)'},
{ device: :unknown, agent: ""}
].each do |req|
it "detects headers for #{req[:device]} #{req.fetch(:note, '')}" do
request.headers['HTTP_USER_AGENT'] = req[:agent]
get :index

expect(controller.mobile_value).to eq({ action_mobile: req[:device].to_s })
end
end
end
end

0 comments on commit 2a84d0e

Please sign in to comment.