fruit_to_lime 2.1.4 → 2.2.4
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/lib/fruit_to_lime/model/coworker.rb +23 -0
- data/lib/fruit_to_lime/model/person.rb +8 -0
- data/spec/coworker_spec.rb +82 -0
- data/spec/person_spec.rb +17 -0
- data/templates/csv/export.xml +152 -0
- metadata +5 -3
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 1 2 | 
             
            module FruitToLime
         | 
| 2 3 | 
             
                class Coworker
         | 
| 3 4 | 
             
                    include SerializeHelper
         | 
| @@ -44,5 +45,27 @@ module FruitToLime | |
| 44 45 |  | 
| 45 46 | 
             
                        return false
         | 
| 46 47 | 
             
                    end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    def parse_name_to_firstname_lastname_se(name)
         | 
| 50 | 
            +
                        splitted = name.split(' ')
         | 
| 51 | 
            +
                        @first_name = splitted[0]
         | 
| 52 | 
            +
                        if splitted.length > 1                
         | 
| 53 | 
            +
                            @last_name = splitted.drop(1).join(' ')
         | 
| 54 | 
            +
                        end
         | 
| 55 | 
            +
                    end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                    def to_email_chars(s)
         | 
| 58 | 
            +
                        s.tr " åäöèé", "-aaoee"
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                    def guess_email(domain)
         | 
| 62 | 
            +
                        return '' if @last_name.nil? || @last_name.empty?
         | 
| 63 | 
            +
                        return '' if @first_name.nil? || @first_name.empty?
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                        firstname = to_email_chars @first_name.downcase
         | 
| 66 | 
            +
                        lastname = to_email_chars @last_name.downcase
         | 
| 67 | 
            +
                        return "#{firstname}.#{lastname}@#{domain}"
         | 
| 68 | 
            +
                    end
         | 
| 69 | 
            +
             | 
| 47 70 | 
             
                end
         | 
| 48 71 | 
             
            end
         | 
| @@ -117,5 +117,13 @@ module FruitToLime | |
| 117 117 |  | 
| 118 118 | 
             
                        return error
         | 
| 119 119 | 
             
                    end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                    def parse_name_to_firstname_lastname_se(name)
         | 
| 122 | 
            +
                        splitted = name.split(' ')
         | 
| 123 | 
            +
                        @first_name = splitted[0]
         | 
| 124 | 
            +
                        if splitted.length > 1                
         | 
| 125 | 
            +
                            @last_name = splitted.drop(1).join(' ')
         | 
| 126 | 
            +
                        end
         | 
| 127 | 
            +
                    end
         | 
| 120 128 | 
             
                end
         | 
| 121 129 | 
             
            end
         | 
| @@ -0,0 +1,82 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            require "spec_helper"
         | 
| 3 | 
            +
            require 'fruit_to_lime'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe "Coworker" do
         | 
| 6 | 
            +
                let(:coworker) {
         | 
| 7 | 
            +
                    FruitToLime::Coworker.new
         | 
| 8 | 
            +
                }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                describe "parse_name_to_firstname_lastname_se" do
         | 
| 11 | 
            +
                    it "can parse 'Kalle Nilsson' into firstname 'Kalle' and lastname 'Nilsson'" do
         | 
| 12 | 
            +
                        coworker.parse_name_to_firstname_lastname_se 'Kalle Nilsson'
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                        coworker.first_name.should eq 'Kalle'
         | 
| 15 | 
            +
                        coworker.last_name.should eq 'Nilsson'
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    it "can parse 'Kalle Svensson Nilsson' into firstname 'Kalle' and lastname 'Svensson Nilsson'" do
         | 
| 20 | 
            +
                        coworker.parse_name_to_firstname_lastname_se 'Kalle Svensson Nilsson'
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                        coworker.first_name.should eq 'Kalle'
         | 
| 23 | 
            +
                        coworker.last_name.should eq 'Svensson Nilsson'
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                describe "gues_email" do
         | 
| 28 | 
            +
                	it "guesses kalle.nilsson@x.com for coworker with firstname 'Kalle', lastname 'Nilsson' and domain set to 'x.com" do
         | 
| 29 | 
            +
                		coworker.first_name = 'Kalle'
         | 
| 30 | 
            +
                		coworker.last_name = 'Nilsson'
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                		guessed = coworker.guess_email 'x.com'
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                		guessed.should eq 'kalle.nilsson@x.com'
         | 
| 35 | 
            +
                	end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                	it "guesses '' when lastname is missing" do
         | 
| 38 | 
            +
                		coworker.first_name = 'Kalle'
         | 
| 39 | 
            +
                		coworker.last_name = ''
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                		guessed = coworker.guess_email 'x.com'
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                		guessed.should eq ''
         | 
| 44 | 
            +
                	end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                	it "guesses '' when firstname is missing" do
         | 
| 47 | 
            +
                		coworker.first_name = nil
         | 
| 48 | 
            +
                		coworker.last_name = 'Nilsson'
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                		guessed = coworker.guess_email 'x.com'
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                		guessed.should eq ''
         | 
| 53 | 
            +
                	end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                    it "guesses åäöèé to be aaoee" do
         | 
| 56 | 
            +
                        coworker.first_name = 'åäöèé'
         | 
| 57 | 
            +
                        coworker.last_name = 'Nilsson'
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                        guessed = coworker.guess_email 'x.com'
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                        guessed.should eq 'aaoee.nilsson@x.com'
         | 
| 62 | 
            +
                    end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    it "guesses 'sven-erik.nilsson@x.com' when firstname has two names with ' ' between them" do
         | 
| 65 | 
            +
                        coworker.first_name = 'Sven Erik'
         | 
| 66 | 
            +
                        coworker.last_name = 'Nilsson'
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                        guessed = coworker.guess_email 'x.com'
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                        guessed.should eq 'sven-erik.nilsson@x.com'
         | 
| 71 | 
            +
                    end        
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                    it "guesses 'sven.nilsson-svensson@x.com' when lastnames has two names with ' ' between them" do
         | 
| 74 | 
            +
                        coworker.first_name = 'Sven'
         | 
| 75 | 
            +
                        coworker.last_name = 'Nilsson Svensson'
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                        guessed = coworker.guess_email 'x.com'
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                        guessed.should eq 'sven.nilsson-svensson@x.com'
         | 
| 80 | 
            +
                    end            
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
            end
         | 
    
        data/spec/person_spec.rb
    CHANGED
    
    | @@ -79,5 +79,22 @@ describe "Person" do | |
| 79 79 | 
             
                    error = person.validate
         | 
| 80 80 | 
             
                    error.should start_with("A firstname or lastname is required for person")
         | 
| 81 81 | 
             
                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                describe "parse_name_to_firstname_lastname_se" do
         | 
| 84 | 
            +
                    it "can parse 'Kalle Nilsson' into firstname 'Kalle' and lastname 'Nilsson'" do
         | 
| 85 | 
            +
                        person.parse_name_to_firstname_lastname_se 'Kalle Nilsson'
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                        person.first_name.should eq 'Kalle'
         | 
| 88 | 
            +
                        person.last_name.should eq 'Nilsson'
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                    end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                    it "can parse 'Kalle Svensson Nilsson' into firstname 'Kalle' and lastname 'Svensson Nilsson'" do
         | 
| 93 | 
            +
                        person.parse_name_to_firstname_lastname_se 'Kalle Svensson Nilsson'
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                        person.first_name.should eq 'Kalle'
         | 
| 96 | 
            +
                        person.last_name.should eq 'Svensson Nilsson'
         | 
| 97 | 
            +
                    end
         | 
| 98 | 
            +
                end
         | 
| 82 99 | 
             
            end
         | 
| 83 100 |  | 
| @@ -0,0 +1,152 @@ | |
| 1 | 
            +
            <GoImport Version='v2_0'
         | 
| 2 | 
            +
            ><Settings
         | 
| 3 | 
            +
              ><Organization
         | 
| 4 | 
            +
                ><CustomFields
         | 
| 5 | 
            +
                  ><CustomField
         | 
| 6 | 
            +
                    ><Title
         | 
| 7 | 
            +
                      >Link to external system</Title
         | 
| 8 | 
            +
                      ><Type
         | 
| 9 | 
            +
                      >Link</Type
         | 
| 10 | 
            +
                      ></CustomField
         | 
| 11 | 
            +
                    ></CustomFields
         | 
| 12 | 
            +
                  ></Organization
         | 
| 13 | 
            +
                ></Settings
         | 
| 14 | 
            +
              ><Coworkers
         | 
| 15 | 
            +
              ><Coworker
         | 
| 16 | 
            +
                ><IntegrationId
         | 
| 17 | 
            +
                  >import</IntegrationId
         | 
| 18 | 
            +
                  ><FirstName
         | 
| 19 | 
            +
                  >Import</FirstName
         | 
| 20 | 
            +
                  ></Coworker
         | 
| 21 | 
            +
                ><Coworker
         | 
| 22 | 
            +
                ><IntegrationId
         | 
| 23 | 
            +
                  >666</IntegrationId
         | 
| 24 | 
            +
                  ><FirstName
         | 
| 25 | 
            +
                  >Evil</FirstName
         | 
| 26 | 
            +
                  ><LastName
         | 
| 27 | 
            +
                  >Elvis</LastName
         | 
| 28 | 
            +
                  ><Email
         | 
| 29 | 
            +
                  >t@e.com</Email
         | 
| 30 | 
            +
                  ><DirectPhoneNumber
         | 
| 31 | 
            +
                  >+46121212</DirectPhoneNumber
         | 
| 32 | 
            +
                  ><MobilePhoneNumber
         | 
| 33 | 
            +
                  >+46324234</MobilePhoneNumber
         | 
| 34 | 
            +
                  ><HomePhoneNumber
         | 
| 35 | 
            +
                  >+46234234</HomePhoneNumber
         | 
| 36 | 
            +
                  ></Coworker
         | 
| 37 | 
            +
                ></Coworkers
         | 
| 38 | 
            +
              ><Organizations
         | 
| 39 | 
            +
              ><Organization
         | 
| 40 | 
            +
                ><IntegrationId
         | 
| 41 | 
            +
                  >6</IntegrationId
         | 
| 42 | 
            +
                  ><Name
         | 
| 43 | 
            +
                  >Alfs Mjukvaruutveckling</Name
         | 
| 44 | 
            +
                  ><OrganizationNumber
         | 
| 45 | 
            +
                  >a number</OrganizationNumber
         | 
| 46 | 
            +
                  ><PostalAddress
         | 
| 47 | 
            +
                  ><Street
         | 
| 48 | 
            +
                    >postal street</Street
         | 
| 49 | 
            +
                    ><ZipCode
         | 
| 50 | 
            +
                    >226 48</ZipCode
         | 
| 51 | 
            +
                    ><City
         | 
| 52 | 
            +
                    >LUND</City
         | 
| 53 | 
            +
                    ></PostalAddress
         | 
| 54 | 
            +
                  ><VisitAddress
         | 
| 55 | 
            +
                  ><Street
         | 
| 56 | 
            +
                    >visit street</Street
         | 
| 57 | 
            +
                    ><ZipCode
         | 
| 58 | 
            +
                    >visit zip</ZipCode
         | 
| 59 | 
            +
                    ><City
         | 
| 60 | 
            +
                    >visit city</City
         | 
| 61 | 
            +
                    ></VisitAddress
         | 
| 62 | 
            +
                  ><CentralPhoneNumber
         | 
| 63 | 
            +
                  >0000</CentralPhoneNumber
         | 
| 64 | 
            +
                  ><Email
         | 
| 65 | 
            +
                  >email to organizaiton, not the person</Email
         | 
| 66 | 
            +
                  ><WebSite
         | 
| 67 | 
            +
                  >www.whatever.com</WebSite
         | 
| 68 | 
            +
                  ><Employees
         | 
| 69 | 
            +
                  ><Person
         | 
| 70 | 
            +
                    ><IntegrationId
         | 
| 71 | 
            +
                      >123</IntegrationId
         | 
| 72 | 
            +
                      ><FirstName
         | 
| 73 | 
            +
                      >Rune</FirstName
         | 
| 74 | 
            +
                      ><LastName
         | 
| 75 | 
            +
                      >Rebellion</LastName
         | 
| 76 | 
            +
                      ><DirectPhoneNumber
         | 
| 77 | 
            +
                      >+4611111</DirectPhoneNumber
         | 
| 78 | 
            +
                      ><FaxPhoneNumber
         | 
| 79 | 
            +
                      >+4623234234234</FaxPhoneNumber
         | 
| 80 | 
            +
                      ><MobilePhoneNumber
         | 
| 81 | 
            +
                      >+462321212</MobilePhoneNumber
         | 
| 82 | 
            +
                      ><Email
         | 
| 83 | 
            +
                      >x@y.com</Email
         | 
| 84 | 
            +
                      ><AlternativeEmail
         | 
| 85 | 
            +
                      >y@x.com</AlternativeEmail
         | 
| 86 | 
            +
                      ><PostalAddress
         | 
| 87 | 
            +
                      ><Street
         | 
| 88 | 
            +
                        >postal street</Street
         | 
| 89 | 
            +
                        ><ZipCode
         | 
| 90 | 
            +
                        >226 48</ZipCode
         | 
| 91 | 
            +
                        ><City
         | 
| 92 | 
            +
                        >LUND</City
         | 
| 93 | 
            +
                        ></PostalAddress
         | 
| 94 | 
            +
                      ><CurrentlyEmployed
         | 
| 95 | 
            +
                      >true</CurrentlyEmployed
         | 
| 96 | 
            +
                      ></Person
         | 
| 97 | 
            +
                    ></Employees
         | 
| 98 | 
            +
                  ><CustomValues
         | 
| 99 | 
            +
                  ><CustomValue
         | 
| 100 | 
            +
                    ><Field
         | 
| 101 | 
            +
                      >external_url</Field
         | 
| 102 | 
            +
                      ><Value
         | 
| 103 | 
            +
                      >http://something.com?key=6</Value
         | 
| 104 | 
            +
                      ></CustomValue
         | 
| 105 | 
            +
                    ></CustomValues
         | 
| 106 | 
            +
                  ><Tags
         | 
| 107 | 
            +
                  ><Tag
         | 
| 108 | 
            +
                    >Imported</Tag
         | 
| 109 | 
            +
                    ></Tags
         | 
| 110 | 
            +
                  ><ResponsibleCoworker
         | 
| 111 | 
            +
                  ><Heading
         | 
| 112 | 
            +
                    >Evil Elvis</Heading
         | 
| 113 | 
            +
                    ><IntegrationId
         | 
| 114 | 
            +
                    >666</IntegrationId
         | 
| 115 | 
            +
                    ></ResponsibleCoworker
         | 
| 116 | 
            +
                  ></Organization
         | 
| 117 | 
            +
                ></Organizations
         | 
| 118 | 
            +
              ><Deals
         | 
| 119 | 
            +
              ><Deal
         | 
| 120 | 
            +
                ><IntegrationId
         | 
| 121 | 
            +
                  >333</IntegrationId
         | 
| 122 | 
            +
                  ><Name
         | 
| 123 | 
            +
                  >Feta affären</Name
         | 
| 124 | 
            +
                  ><Probability
         | 
| 125 | 
            +
                  >50</Probability
         | 
| 126 | 
            +
                  ><Value
         | 
| 127 | 
            +
                  >10000</Value
         | 
| 128 | 
            +
                  ><OfferDate
         | 
| 129 | 
            +
                  >2013-12-01</OfferDate
         | 
| 130 | 
            +
                  ><OrderDate
         | 
| 131 | 
            +
                  >2014-01-05</OrderDate
         | 
| 132 | 
            +
                  ><Customer
         | 
| 133 | 
            +
                  ><IntegrationId
         | 
| 134 | 
            +
                    >6</IntegrationId
         | 
| 135 | 
            +
                    ><Heading
         | 
| 136 | 
            +
                    >Alfs Mjukvaruutveckling</Heading
         | 
| 137 | 
            +
                    ></Customer
         | 
| 138 | 
            +
                  ><ResponsibleCoworker
         | 
| 139 | 
            +
                  ><Heading
         | 
| 140 | 
            +
                    >Evil Elvis</Heading
         | 
| 141 | 
            +
                    ><IntegrationId
         | 
| 142 | 
            +
                    >666</IntegrationId
         | 
| 143 | 
            +
                    ></ResponsibleCoworker
         | 
| 144 | 
            +
                  ><CustomerContact
         | 
| 145 | 
            +
                  ><IntegrationId
         | 
| 146 | 
            +
                    >123</IntegrationId
         | 
| 147 | 
            +
                    ></CustomerContact
         | 
| 148 | 
            +
                  ></Deal
         | 
| 149 | 
            +
                ></Deals
         | 
| 150 | 
            +
              ><Notes
         | 
| 151 | 
            +
              /></GoImport
         | 
| 152 | 
            +
            >
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: fruit_to_lime
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.2.4
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2014- | 
| 14 | 
            +
            date: 2014-05-02 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: iso_country_codes
         | 
| @@ -158,6 +158,7 @@ files: | |
| 158 158 | 
             
            - lib/fruit_to_lime.rb
         | 
| 159 159 | 
             
            - bin/fruit_to_lime
         | 
| 160 160 | 
             
            - templates/csv/convert.rb
         | 
| 161 | 
            +
            - templates/csv/export.xml
         | 
| 161 162 | 
             
            - templates/csv/Gemfile
         | 
| 162 163 | 
             
            - templates/csv/lib/tomodel.rb
         | 
| 163 164 | 
             
            - templates/csv/Rakefile.rb
         | 
| @@ -182,6 +183,7 @@ files: | |
| 182 183 | 
             
            - templates/sqlserver/spec/tomodel_spec.rb
         | 
| 183 184 | 
             
            - spec/address_spec.rb
         | 
| 184 185 | 
             
            - spec/class_settings_spec.rb
         | 
| 186 | 
            +
            - spec/coworker_spec.rb
         | 
| 185 187 | 
             
            - spec/custom_field_spec.rb
         | 
| 186 188 | 
             
            - spec/helpers/csv_helper_spec.rb
         | 
| 187 189 | 
             
            - spec/helpers/roo_helper_spec.rb
         | 
| @@ -218,6 +220,7 @@ summary: Library to generate Lime Go xml import format | |
| 218 220 | 
             
            test_files:
         | 
| 219 221 | 
             
            - spec/address_spec.rb
         | 
| 220 222 | 
             
            - spec/class_settings_spec.rb
         | 
| 223 | 
            +
            - spec/coworker_spec.rb
         | 
| 221 224 | 
             
            - spec/custom_field_spec.rb
         | 
| 222 225 | 
             
            - spec/helpers/csv_helper_spec.rb
         | 
| 223 226 | 
             
            - spec/helpers/roo_helper_spec.rb
         | 
| @@ -227,4 +230,3 @@ test_files: | |
| 227 230 | 
             
            - spec/rootmodel_spec.rb
         | 
| 228 231 | 
             
            - spec/spec_helper.rb
         | 
| 229 232 | 
             
            - spec/templating_spec.rb
         | 
| 230 | 
            -
            has_rdoc: 
         |