intercom-rails 0.2.24 → 0.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.mdown +50 -12
 - data/Rakefile +3 -11
 - data/lib/intercom-rails/auto_include_filter.rb +2 -2
 - data/lib/intercom-rails/config.rb +6 -6
 - data/lib/intercom-rails/custom_data_helper.rb +1 -1
 - data/lib/intercom-rails/import.rb +6 -6
 - data/lib/intercom-rails/proxy.rb +9 -4
 - data/lib/intercom-rails/proxy/company.rb +3 -3
 - data/lib/intercom-rails/script_tag_helper.rb +2 -2
 - data/lib/intercom-rails/version.rb +1 -1
 - data/lib/rails/generators/intercom/config/config_generator.rb +4 -4
 - data/lib/rails/generators/intercom/config/intercom.rb.erb +12 -12
 - metadata +75 -47
 - checksums.yaml +0 -7
 - data/test/action_controller_test_setup.rb +0 -29
 - data/test/import_test_setup.rb +0 -84
 - data/test/intercom-rails/auto_include_filter_test.rb +0 -187
 - data/test/intercom-rails/config_test.rb +0 -79
 - data/test/intercom-rails/import_network_test.rb +0 -122
 - data/test/intercom-rails/import_unit_test.rb +0 -125
 - data/test/intercom-rails/proxy/company_test.rb +0 -46
 - data/test/intercom-rails/proxy/user_test.rb +0 -143
 - data/test/intercom-rails/script_tag_helper_test.rb +0 -30
 - data/test/intercom-rails/script_tag_test.rb +0 -110
 - data/test/test_setup.rb +0 -51
 
| 
         @@ -1,79 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test_setup'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class ConfigTest < MiniTest::Unit::TestCase 
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              include InterTest
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              def test_setting_app_id
         
     | 
| 
       8 
     | 
    
         
            -
                IntercomRails.config.app_id = "1234"
         
     | 
| 
       9 
     | 
    
         
            -
                assert_equal IntercomRails.config.app_id, "1234"
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              def test_setting_current_user
         
     | 
| 
       13 
     | 
    
         
            -
                current_user = Proc.new { @blah }
         
     | 
| 
       14 
     | 
    
         
            -
                IntercomRails.config.user.current = current_user
         
     | 
| 
       15 
     | 
    
         
            -
                assert_equal IntercomRails.config.user.current, current_user
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
              def test_setting_current_user_not_to_a_proc
         
     | 
| 
       19 
     | 
    
         
            -
                assert_raises ArgumentError do
         
     | 
| 
       20 
     | 
    
         
            -
                  IntercomRails.config.user.current = 1
         
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
       22 
     | 
    
         
            -
              end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
              def test_configuring_intercom_with_block
         
     | 
| 
       25 
     | 
    
         
            -
                IntercomRails.config do |config|
         
     | 
| 
       26 
     | 
    
         
            -
                  config.app_id = "4567"
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                assert_equal IntercomRails.config.app_id, "4567"
         
     | 
| 
       30 
     | 
    
         
            -
              end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
              def test_custom_data_rejects_non_proc_or_symbol_attributes
         
     | 
| 
       33 
     | 
    
         
            -
                exception = assert_raises ArgumentError do 
         
     | 
| 
       34 
     | 
    
         
            -
                  IntercomRails.config.user.custom_data = {
         
     | 
| 
       35 
     | 
    
         
            -
                    'foo' => Proc.new {},
         
     | 
| 
       36 
     | 
    
         
            -
                    'bar' => 'heyheyhey!'
         
     | 
| 
       37 
     | 
    
         
            -
                  }
         
     | 
| 
       38 
     | 
    
         
            -
                end 
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                assert_equal "all custom_data attributes should be either a Proc or a symbol", exception.message
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              def test_setting_custom_data
         
     | 
| 
       44 
     | 
    
         
            -
                custom_data_config = {
         
     | 
| 
       45 
     | 
    
         
            -
                  'foo' => Proc.new {},
         
     | 
| 
       46 
     | 
    
         
            -
                  'bar' => :method_name
         
     | 
| 
       47 
     | 
    
         
            -
                }
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                IntercomRails.config.user.custom_data = custom_data_config
         
     | 
| 
       50 
     | 
    
         
            -
                assert_equal custom_data_config, IntercomRails.config.user.custom_data
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
              def test_setting_company_custom_data
         
     | 
| 
       54 
     | 
    
         
            -
                custom_data_config = {
         
     | 
| 
       55 
     | 
    
         
            -
                  'the_local' => Proc.new { 'club 93' }
         
     | 
| 
       56 
     | 
    
         
            -
                }
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                IntercomRails.config.company.custom_data = custom_data_config
         
     | 
| 
       59 
     | 
    
         
            -
                assert_equal custom_data_config, IntercomRails.config.company.custom_data
         
     | 
| 
       60 
     | 
    
         
            -
              end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
              def test_setting_inbox_style
         
     | 
| 
       63 
     | 
    
         
            -
                IntercomRails.config.inbox.style = :custom
         
     | 
| 
       64 
     | 
    
         
            -
                assert_equal :custom, IntercomRails.config.inbox.style
         
     | 
| 
       65 
     | 
    
         
            -
              end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
              def test_reset_clears_existing_config
         
     | 
| 
       68 
     | 
    
         
            -
                IntercomRails.config.user.custom_data = {'muffin' => :muffin}
         
     | 
| 
       69 
     | 
    
         
            -
                IntercomRails.config.reset!
         
     | 
| 
       70 
     | 
    
         
            -
                assert_equal nil, IntercomRails.config.user.custom_data
         
     | 
| 
       71 
     | 
    
         
            -
              end
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
              def test_reset_clears_inbox_config_too
         
     | 
| 
       74 
     | 
    
         
            -
                IntercomRails.config.inbox.style = :custom
         
     | 
| 
       75 
     | 
    
         
            -
                IntercomRails.config.reset!
         
     | 
| 
       76 
     | 
    
         
            -
                assert_equal nil, IntercomRails.config.inbox.style
         
     | 
| 
       77 
     | 
    
         
            -
              end
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,122 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'import_test_setup'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'sinatra/base'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class MockIntercom < Sinatra::Base
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              set :server, 'thin'
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              before do
         
     | 
| 
       9 
     | 
    
         
            -
                content_type 'application/json'
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              get '/health_check' do
         
     | 
| 
       13 
     | 
    
         
            -
                content_type 'plain/text'
         
     | 
| 
       14 
     | 
    
         
            -
                'hello world'
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              post '/all_successful' do
         
     | 
| 
       18 
     | 
    
         
            -
                {:failed => []}.to_json 
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              post '/one_failure' do
         
     | 
| 
       22 
     | 
    
         
            -
                {:failed => ['ben@intercom.io']}.to_json
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              post '/bad_auth' do
         
     | 
| 
       26 
     | 
    
         
            -
                status 403
         
     | 
| 
       27 
     | 
    
         
            -
                {"error" => {"type" => "not_authenticated", "message" => "HTTP Basic: Access denied."}}.to_json
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
              post '/500_error' do
         
     | 
| 
       31 
     | 
    
         
            -
                status 500
         
     | 
| 
       32 
     | 
    
         
            -
                {"error" => {"type" => "server_error", "message" => "Danger deploy, gone wrong?"}}.to_json
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
            end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
            class InterRunner < MiniTest::Unit
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
              self.runner = self.new
         
     | 
| 
       40 
     | 
    
         
            -
              
         
     | 
| 
       41 
     | 
    
         
            -
              def _run(*args)
         
     | 
| 
       42 
     | 
    
         
            -
                @mock_intercom_pid = start_mock_intercom
         
     | 
| 
       43 
     | 
    
         
            -
                super
         
     | 
| 
       44 
     | 
    
         
            -
              ensure
         
     | 
| 
       45 
     | 
    
         
            -
                Process.kill('INT', @mock_intercom_pid)
         
     | 
| 
       46 
     | 
    
         
            -
                Process.wait(@mock_intercom_pid) rescue SystemError
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
              private
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              def start_mock_intercom
         
     | 
| 
       52 
     | 
    
         
            -
                pid = fork do 
         
     | 
| 
       53 
     | 
    
         
            -
                  MockIntercom.run!(:port => 46837) do |server|
         
     | 
| 
       54 
     | 
    
         
            -
                    server.silent = true
         
     | 
| 
       55 
     | 
    
         
            -
                  end
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                response = nil
         
     | 
| 
       59 
     | 
    
         
            -
                uri = URI.parse("http://localhost:46837/health_check")
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
                begin
         
     | 
| 
       62 
     | 
    
         
            -
                  response = Net::HTTP.get_response(uri).body until(response == 'hello world')
         
     | 
| 
       63 
     | 
    
         
            -
                rescue Errno::ECONNREFUSED
         
     | 
| 
       64 
     | 
    
         
            -
                  sleep(0.5)
         
     | 
| 
       65 
     | 
    
         
            -
                  retry
         
     | 
| 
       66 
     | 
    
         
            -
                end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                pid
         
     | 
| 
       69 
     | 
    
         
            -
              end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
            end
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
            class ImportNetworkTest < InterRunner::TestCase
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
              include InterTest
         
     | 
| 
       76 
     | 
    
         
            -
              include ImportTest
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
              def api_path=(path)
         
     | 
| 
       79 
     | 
    
         
            -
                IntercomRails::Import.stub(:bulk_create_api_endpoint) {
         
     | 
| 
       80 
     | 
    
         
            -
                  URI.parse("http://localhost:46837/#{path}")
         
     | 
| 
       81 
     | 
    
         
            -
                }
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
                @import = IntercomRails::Import.new
         
     | 
| 
       84 
     | 
    
         
            -
              end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
              def test_empty_failed
         
     | 
| 
       87 
     | 
    
         
            -
                self.api_path = '/all_successful'
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
                @import.run
         
     | 
| 
       90 
     | 
    
         
            -
                assert_equal [], @import.failed
         
     | 
| 
       91 
     | 
    
         
            -
                assert_equal 2, @import.total_sent
         
     | 
| 
       92 
     | 
    
         
            -
              end
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
              def test_sets_failed_correctly
         
     | 
| 
       95 
     | 
    
         
            -
                self.api_path = '/one_failure'
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                @import.run
         
     | 
| 
       98 
     | 
    
         
            -
                assert_equal ["ben@intercom.io"], @import.failed
         
     | 
| 
       99 
     | 
    
         
            -
                assert_equal 2, @import.total_sent
         
     | 
| 
       100 
     | 
    
         
            -
              end
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
              def test_raises_import_error_on_bad_auth
         
     | 
| 
       103 
     | 
    
         
            -
                self.api_path = '/bad_auth'
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
                exception = assert_raises(IntercomRails::ImportError) { 
         
     | 
| 
       106 
     | 
    
         
            -
                  @import.run
         
     | 
| 
       107 
     | 
    
         
            -
                }
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
                assert_equal "App ID or API Key are incorrect, please check them in config/initializers/intercom.rb", exception.message
         
     | 
| 
       110 
     | 
    
         
            -
              end
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
              def test_throws_exception_when_intercom_api_is_being_a_dick
         
     | 
| 
       113 
     | 
    
         
            -
                self.api_path = '/500_error'
         
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
                exception = assert_raises(IntercomRails::IntercomAPIError) {
         
     | 
| 
       116 
     | 
    
         
            -
                  @import.run
         
     | 
| 
       117 
     | 
    
         
            -
                }
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
                assert_equal "The Intercom API request failed with the code: 500, after 3 attempts.", exception.message
         
     | 
| 
       120 
     | 
    
         
            -
              end
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,125 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'import_test_setup'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class ImportUnitTest < MiniTest::Unit::TestCase 
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              include InterTest
         
     | 
| 
       6 
     | 
    
         
            -
              include ImportTest
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
              def test_run_with_wrong_rails_env
         
     | 
| 
       9 
     | 
    
         
            -
                Rails.stub(:env).and_return ActiveSupport::StringInquirer.new("development")
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                exception = assert_raises IntercomRails::ImportError do
         
     | 
| 
       12 
     | 
    
         
            -
                  IntercomRails::Import.run
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                assert_equal exception.message, "You can only import your users from your production environment"
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
              def test_run_with_no_user_class
         
     | 
| 
       19 
     | 
    
         
            -
                IntercomRails::Import.any_instance.stub(:user_klass).and_return(nil)
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                exception = assert_raises IntercomRails::ImportError do
         
     | 
| 
       22 
     | 
    
         
            -
                  IntercomRails::Import.run
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
                
         
     | 
| 
       25 
     | 
    
         
            -
                assert_equal exception.message, "We couldn't find your user class, please set one in config/initializers/intercom_rails.rb"
         
     | 
| 
       26 
     | 
    
         
            -
              end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              def test_run_with_unsupported_user_class
         
     | 
| 
       29 
     | 
    
         
            -
                IntercomRails::Import.any_instance.stub(:user_klass).and_return(Class)
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                exception = assert_raises IntercomRails::ImportError do
         
     | 
| 
       32 
     | 
    
         
            -
                  IntercomRails::Import.run
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
                
         
     | 
| 
       35 
     | 
    
         
            -
                assert_equal exception.message, "Only ActiveRecord and Mongoid models are supported"
         
     | 
| 
       36 
     | 
    
         
            -
              end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
              def test_run_with_no_api_key
         
     | 
| 
       39 
     | 
    
         
            -
                IntercomRails.config.stub(:api_key).and_return(nil)
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                exception = assert_raises IntercomRails::ImportError do
         
     | 
| 
       42 
     | 
    
         
            -
                  IntercomRails::Import.run
         
     | 
| 
       43 
     | 
    
         
            -
                end
         
     | 
| 
       44 
     | 
    
         
            -
                
         
     | 
| 
       45 
     | 
    
         
            -
                assert_equal exception.message, "Please add an Intercom API Key to config/initializers/intercom.rb"
         
     | 
| 
       46 
     | 
    
         
            -
              end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
              def test_mongoid
         
     | 
| 
       49 
     | 
    
         
            -
                klass = Class.new
         
     | 
| 
       50 
     | 
    
         
            -
                klass.class_eval do
         
     | 
| 
       51 
     | 
    
         
            -
                  include Mongoid::Document
         
     | 
| 
       52 
     | 
    
         
            -
                end
         
     | 
| 
       53 
     | 
    
         
            -
                IntercomRails::Import.any_instance.stub(:user_klass).and_return(klass)
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                @import = IntercomRails::Import.new
         
     | 
| 
       56 
     | 
    
         
            -
                @import.should_receive(:map_to_users_for_wire).with(klass.all).and_call_original
         
     | 
| 
       57 
     | 
    
         
            -
                @import.should_receive(:send_users).and_return('failed' => [])
         
     | 
| 
       58 
     | 
    
         
            -
                @import.run
         
     | 
| 
       59 
     | 
    
         
            -
              end
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
              def test_status_output
         
     | 
| 
       62 
     | 
    
         
            -
                @import = IntercomRails::Import.new(:status_enabled => true)
         
     | 
| 
       63 
     | 
    
         
            -
                @import.stub(:send_users).and_return('failed' => [1])
         
     | 
| 
       64 
     | 
    
         
            -
                @import.should_receive(:batches).and_yield(nil, 3)
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                $stdout.flush
         
     | 
| 
       67 
     | 
    
         
            -
                @old_stdout = $stdout.dup
         
     | 
| 
       68 
     | 
    
         
            -
                $stdout = @output = StringIO.new
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                @import.run
         
     | 
| 
       71 
     | 
    
         
            -
                expected_output = <<-output
         
     | 
| 
       72 
     | 
    
         
            -
            * Found user class: User
         
     | 
| 
       73 
     | 
    
         
            -
            * Intercom API key found
         
     | 
| 
       74 
     | 
    
         
            -
            * Sending users in batches of 100:
         
     | 
| 
       75 
     | 
    
         
            -
            ..F
         
     | 
| 
       76 
     | 
    
         
            -
            * Successfully created 2 users
         
     | 
| 
       77 
     | 
    
         
            -
            * Failed to create 1 user, this is likely due to bad data
         
     | 
| 
       78 
     | 
    
         
            -
                output
         
     | 
| 
       79 
     | 
    
         
            -
                $stdout.flush
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                assert_equal expected_output, @output.string
         
     | 
| 
       82 
     | 
    
         
            -
              ensure
         
     | 
| 
       83 
     | 
    
         
            -
                $stdout = @old_stdout
         
     | 
| 
       84 
     | 
    
         
            -
              end
         
     | 
| 
       85 
     | 
    
         
            -
             
     | 
| 
       86 
     | 
    
         
            -
              def test_prepares_companies
         
     | 
| 
       87 
     | 
    
         
            -
                @import = IntercomRails::Import.new
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
                u = dummy_user
         
     | 
| 
       90 
     | 
    
         
            -
                u.instance_eval do
         
     | 
| 
       91 
     | 
    
         
            -
                  def apps
         
     | 
| 
       92 
     | 
    
         
            -
                    [dummy_company]
         
     | 
| 
       93 
     | 
    
         
            -
                  end
         
     | 
| 
       94 
     | 
    
         
            -
                end
         
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
                User.stub(:find_in_batches).and_yield([u])
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
                IntercomRails.config.user.company_association = Proc.new { |user| user.apps }
         
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                prepare_for_batch_users = nil
         
     | 
| 
       101 
     | 
    
         
            -
                @import.stub(:prepare_batch) { |users| prepare_for_batch_users = users }
         
     | 
| 
       102 
     | 
    
         
            -
                @import.stub(:send_users).and_return('failed' => [])
         
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                @import.run
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
                assert_equal 1, prepare_for_batch_users[0][:companies].length
         
     | 
| 
       107 
     | 
    
         
            -
                User.rspec_reset
         
     | 
| 
       108 
     | 
    
         
            -
              end
         
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
              def test_max_batch_size_default
         
     | 
| 
       111 
     | 
    
         
            -
                @import = IntercomRails::Import.new
         
     | 
| 
       112 
     | 
    
         
            -
                assert_equal 100, @import.max_batch_size
         
     | 
| 
       113 
     | 
    
         
            -
              end
         
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
              def test_max_batch_size_settable
         
     | 
| 
       116 
     | 
    
         
            -
                @import = IntercomRails::Import.new(:max_batch_size => 50)
         
     | 
| 
       117 
     | 
    
         
            -
                assert_equal 50, @import.max_batch_size
         
     | 
| 
       118 
     | 
    
         
            -
              end
         
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
              def test_max_batch_size_hard_limit
         
     | 
| 
       121 
     | 
    
         
            -
                @import = IntercomRails::Import.new(:max_batch_size => 101)
         
     | 
| 
       122 
     | 
    
         
            -
                assert_equal 100, @import.max_batch_size
         
     | 
| 
       123 
     | 
    
         
            -
              end
         
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,46 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test_setup'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class CompanyTest < MiniTest::Unit::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              include InterTest
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              Company = IntercomRails::Proxy::Company
         
     | 
| 
       8 
     | 
    
         
            -
              DUMMY_COMPANY = dummy_company
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              def test_finds_current_company
         
     | 
| 
       11 
     | 
    
         
            -
                IntercomRails.config.company.current = Proc.new { @app }
         
     | 
| 
       12 
     | 
    
         
            -
                object_with_app_instance_var = Object.new 
         
     | 
| 
       13 
     | 
    
         
            -
                object_with_app_instance_var.instance_variable_set(:@app, DUMMY_COMPANY)
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                c = Company.current_in_context(object_with_app_instance_var)
         
     | 
| 
       16 
     | 
    
         
            -
                assert_equal true, c.valid?
         
     | 
| 
       17 
     | 
    
         
            -
                expected_hash = {:id => '6', :name => 'Intercom'}
         
     | 
| 
       18 
     | 
    
         
            -
                assert_equal expected_hash, c.to_hash
         
     | 
| 
       19 
     | 
    
         
            -
              end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
              def test_whiny_nil
         
     | 
| 
       22 
     | 
    
         
            -
                NilClass.class_eval do
         
     | 
| 
       23 
     | 
    
         
            -
                  def id
         
     | 
| 
       24 
     | 
    
         
            -
                    raise ArgumentError, "boo"
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                search_object = nil 
         
     | 
| 
       29 
     | 
    
         
            -
                assert_equal false, Company.new(search_object).valid?
         
     | 
| 
       30 
     | 
    
         
            -
              end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
              def test_companies_for_user
         
     | 
| 
       33 
     | 
    
         
            -
                IntercomRails.config.user.company_association = Proc.new { |user| user.apps }
         
     | 
| 
       34 
     | 
    
         
            -
                test_user = dummy_user
         
     | 
| 
       35 
     | 
    
         
            -
                test_user.instance_eval do
         
     | 
| 
       36 
     | 
    
         
            -
                  def apps
         
     | 
| 
       37 
     | 
    
         
            -
                    [DUMMY_COMPANY, dummy_company(:name => "Prey", :id => "800")]
         
     | 
| 
       38 
     | 
    
         
            -
                  end
         
     | 
| 
       39 
     | 
    
         
            -
                end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                companies = Company.companies_for_user(IntercomRails::Proxy::User.new(test_user))
         
     | 
| 
       42 
     | 
    
         
            -
                assert_equal 2, companies.length
         
     | 
| 
       43 
     | 
    
         
            -
                assert_equal ["Intercom", "Prey"], companies.map(&:company).map(&:name)
         
     | 
| 
       44 
     | 
    
         
            -
              end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,143 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test_setup'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class UserTest < MiniTest::Unit::TestCase
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              User = IntercomRails::Proxy::User
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              include InterTest
         
     | 
| 
       8 
     | 
    
         
            -
              include IntercomRails
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              DUMMY_USER = dummy_user(:email => 'ciaran@intercom.io', :name => 'Ciaran Lee')
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              def test_raises_error_when_no_user_found
         
     | 
| 
       13 
     | 
    
         
            -
                assert_raises(IntercomRails::NoUserFoundError) {
         
     | 
| 
       14 
     | 
    
         
            -
                  User.current_in_context(Object.new)
         
     | 
| 
       15 
     | 
    
         
            -
                }
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
              def test_finds_current_user
         
     | 
| 
       19 
     | 
    
         
            -
                object_with_current_user_method = Object.new
         
     | 
| 
       20 
     | 
    
         
            -
                object_with_current_user_method.instance_eval do
         
     | 
| 
       21 
     | 
    
         
            -
                  def current_user
         
     | 
| 
       22 
     | 
    
         
            -
                    DUMMY_USER
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                @user_proxy = User.current_in_context(object_with_current_user_method)
         
     | 
| 
       27 
     | 
    
         
            -
                assert_user_found 
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
              def test_finds_user_instance_variable
         
     | 
| 
       31 
     | 
    
         
            -
                object_with_instance_variable = Object.new
         
     | 
| 
       32 
     | 
    
         
            -
                object_with_instance_variable.instance_eval do
         
     | 
| 
       33 
     | 
    
         
            -
                  @user = DUMMY_USER 
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                @user_proxy = User.current_in_context(object_with_instance_variable)
         
     | 
| 
       37 
     | 
    
         
            -
                assert_user_found 
         
     | 
| 
       38 
     | 
    
         
            -
              end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
              def test_finds_config_user
         
     | 
| 
       41 
     | 
    
         
            -
                object_from_config = Object.new
         
     | 
| 
       42 
     | 
    
         
            -
                object_from_config.instance_eval do
         
     | 
| 
       43 
     | 
    
         
            -
                  def something_esoteric
         
     | 
| 
       44 
     | 
    
         
            -
                    DUMMY_USER
         
     | 
| 
       45 
     | 
    
         
            -
                  end
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                IntercomRails.config.user.current = Proc.new { something_esoteric }
         
     | 
| 
       49 
     | 
    
         
            -
                @user_proxy = User.current_in_context(object_from_config)
         
     | 
| 
       50 
     | 
    
         
            -
                assert_user_found 
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
              def test_finds_config_user_does_not_fallback_to_auto_find_users
         
     | 
| 
       54 
     | 
    
         
            -
                IntercomRails.config.user.current = Proc.new { something_esoteric }
         
     | 
| 
       55 
     | 
    
         
            -
                object_with_instance_variable = Object.new
         
     | 
| 
       56 
     | 
    
         
            -
                object_with_instance_variable.instance_eval do
         
     | 
| 
       57 
     | 
    
         
            -
                  @user = DUMMY_USER 
         
     | 
| 
       58 
     | 
    
         
            -
                end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                assert_raises(IntercomRails::NoUserFoundError) {
         
     | 
| 
       61 
     | 
    
         
            -
                  User.current_in_context(object_with_instance_variable)
         
     | 
| 
       62 
     | 
    
         
            -
                }
         
     | 
| 
       63 
     | 
    
         
            -
              end
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
              def assert_user_found
         
     | 
| 
       66 
     | 
    
         
            -
                assert_equal DUMMY_USER, @user_proxy.user
         
     | 
| 
       67 
     | 
    
         
            -
              end
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
              def test_includes_custom_data
         
     | 
| 
       70 
     | 
    
         
            -
                plan_dummy_user = DUMMY_USER.dup
         
     | 
| 
       71 
     | 
    
         
            -
                plan_dummy_user.instance_eval do
         
     | 
| 
       72 
     | 
    
         
            -
                  def plan
         
     | 
| 
       73 
     | 
    
         
            -
                    'pro'
         
     | 
| 
       74 
     | 
    
         
            -
                  end
         
     | 
| 
       75 
     | 
    
         
            -
                end
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
                IntercomRails.config.user.custom_data = {
         
     | 
| 
       78 
     | 
    
         
            -
                  'plan' => :plan
         
     | 
| 
       79 
     | 
    
         
            -
                }
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                @user_proxy = User.new(plan_dummy_user)
         
     | 
| 
       82 
     | 
    
         
            -
                assert_equal 'pro', @user_proxy.to_hash['plan']
         
     | 
| 
       83 
     | 
    
         
            -
              end
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
              def test_converts_dates_to_timestamps
         
     | 
| 
       86 
     | 
    
         
            -
                plan_dummy_user = DUMMY_USER.dup
         
     | 
| 
       87 
     | 
    
         
            -
                plan_dummy_user.instance_eval do
         
     | 
| 
       88 
     | 
    
         
            -
                  def some_date
         
     | 
| 
       89 
     | 
    
         
            -
                    Time.at(5)
         
     | 
| 
       90 
     | 
    
         
            -
                  end
         
     | 
| 
       91 
     | 
    
         
            -
                end
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
                IntercomRails.config.user.custom_data = {
         
     | 
| 
       94 
     | 
    
         
            -
                  'some_date' => :some_date
         
     | 
| 
       95 
     | 
    
         
            -
                }
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                @user_proxy = User.new(plan_dummy_user)
         
     | 
| 
       98 
     | 
    
         
            -
                assert_equal 5, @user_proxy.to_hash['some_date']
         
     | 
| 
       99 
     | 
    
         
            -
              end
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
              def test_valid_returns_true_if_user_id_or_email
         
     | 
| 
       102 
     | 
    
         
            -
                assert_equal true, User.new(DUMMY_USER).valid?
         
     | 
| 
       103 
     | 
    
         
            -
              end
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
              def test_not_valid_if_new_record?
         
     | 
| 
       106 
     | 
    
         
            -
                new_record_user = dummy_user(:email => 'not-saved@intercom.io', :name => 'New Record')
         
     | 
| 
       107 
     | 
    
         
            -
                def new_record_user.new_record?
         
     | 
| 
       108 
     | 
    
         
            -
                  true
         
     | 
| 
       109 
     | 
    
         
            -
                end
         
     | 
| 
       110 
     | 
    
         
            -
                assert_equal false, User.new(new_record_user).valid?
         
     | 
| 
       111 
     | 
    
         
            -
              end
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
              def test_includes_custom_data_from_intercom_custom_data
         
     | 
| 
       114 
     | 
    
         
            -
                object_with_intercom_custom_data = Object.new
         
     | 
| 
       115 
     | 
    
         
            -
                object_with_intercom_custom_data.instance_eval do
         
     | 
| 
       116 
     | 
    
         
            -
                  def intercom_custom_data
         
     | 
| 
       117 
     | 
    
         
            -
                    o = Object.new 
         
     | 
| 
       118 
     | 
    
         
            -
                    o.instance_eval do 
         
     | 
| 
       119 
     | 
    
         
            -
                      def user
         
     | 
| 
       120 
     | 
    
         
            -
                        {:ponies => :rainbows}
         
     | 
| 
       121 
     | 
    
         
            -
                      end
         
     | 
| 
       122 
     | 
    
         
            -
                    end 
         
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
                    o
         
     | 
| 
       125 
     | 
    
         
            -
                  end
         
     | 
| 
       126 
     | 
    
         
            -
                end
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
                @user_proxy = User.new(DUMMY_USER, object_with_intercom_custom_data) 
         
     | 
| 
       129 
     | 
    
         
            -
                assert_equal :rainbows, @user_proxy.to_hash[:ponies]
         
     | 
| 
       130 
     | 
    
         
            -
              end
         
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
              def test_whiny_nil
         
     | 
| 
       133 
     | 
    
         
            -
                NilClass.class_eval do
         
     | 
| 
       134 
     | 
    
         
            -
                  def id
         
     | 
| 
       135 
     | 
    
         
            -
                    raise ArgumentError, "boo"
         
     | 
| 
       136 
     | 
    
         
            -
                  end
         
     | 
| 
       137 
     | 
    
         
            -
                end
         
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
                search_object = nil 
         
     | 
| 
       140 
     | 
    
         
            -
                assert_equal false, User.new(search_object).valid?
         
     | 
| 
       141 
     | 
    
         
            -
              end
         
     | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
       143 
     | 
    
         
            -
            end
         
     |