Created
April 4, 2012 15:45
-
-
Save okeen/2303019 to your computer and use it in GitHub Desktop.
Use FactoryGirl to create User models based on actual Facebook test user data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#encoding: utf-8 | |
#creates FB test users and stores their data in a YML file | |
task :create_and_load_facebook_test_users => :environment do | |
require 'koala' | |
@@file_name = "db/fb_test_users.yaml" | |
#FB doesn't allow integers on user names, so we need to create names like "user_aa", "user_ab", etc. | |
def next_name(player_number) | |
first_letter = ((player_number / 24).to_i + 97).chr | |
second_letter = ((player_number % 24).to_i + 97).chr | |
"player #{first_letter}#{second_letter}" | |
end | |
def create_facebook_user(name, with_app_installed) | |
begin | |
puts "Creating player #{name}" | |
user = @test_users.create(with_app_installed, "email,create_event,rsvp_event", {:name => name}) | |
puts "Created user #{user.inspect}, #{with_app_installed}" | |
@current_test_users << user.merge('name'=> name) | |
rescue => e | |
puts "Error creating #{name}: #{e.inspect}" | |
end | |
end | |
id= Tendel::Application.config.facebook[RAILS_ENV][:app_id] | |
secret = Tendel::Application.config.facebook[RAILS_ENV][:app_secret] | |
@test_users = Koala::Facebook::TestUsers.new(:app_id => id, :secret => secret) | |
puts "Connected with Facebook" | |
@current_test_users = File.exists?(@@file_name) ? | |
YAML.load(File.open(@@file_name)) : [] | |
puts "Loaded App test users: #{@current_test_users}" | |
@current_test_users.count.upto 200 do |index| | |
name = next_name(index) | |
create_facebook_user(name, true) | |
end | |
#create 5 users with the app still uninstalled | |
5.times do |index| | |
name = next_name(index) + " un" | |
create_facebook_user(name, false) | |
end | |
File.open("db/fb_test_users.yaml", "w") { |file| | |
file.puts(@current_test_users.to_yaml) | |
} | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FactoryGirl.define do | |
unless File.exists? "db/fb_test_users.yaml" | |
raise "Please generate first the facebook test users file" | |
end | |
@facebook_players = YAML.load(File.open("db/fb_test_users.yaml")) | |
#offset where uninstalled players (user's with FB account still to link) start in the list | |
@offset = @facebook_players.count - 5 | |
sequence :player_name do |n| | |
@facebook_players[n-1]['name'] | |
end | |
sequence :password do |n| | |
@facebook_players[n-1]['password'] | |
end | |
sequence :email do |n| | |
@facebook_players[n-1]['email'] | |
end | |
sequence :facebook_id do |n| | |
@facebook_players[n-1]['id'].to_i | |
end | |
factory :player do | |
name {Factory.next(:player_name)} | |
email {Factory.next(:email)} | |
password {Factory.next :password} | |
password_confirmation {"#{password}"} | |
facebook_id {Factory.next :facebook_id} | |
country {Factory.next :place_country} | |
city {Factory.next :place_city} | |
street {Factory.next :place_street} | |
latitude {42.88256 + (rand) - 0.5} | |
longitude {(-8.535357) + (rand) - 0.5} | |
full_address {"#{street}, #{city}, #{country}"} | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment