constructorio 2.0.8 → 2.0.9
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.
- checksums.yaml +4 -4
 - data/lib/constructorio/client.rb +12 -4
 - data/lib/constructorio/version.rb +1 -1
 - data/test/constructorio_test.rb +103 -3
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d8aeef86fff7ce9f7baeb48332125b65315f63e1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e431cc58b523930af8078d70e506205790779f78
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7e98301f67a9bddb1a7a668e43e1da270ded3e5387fbf5046678e1e1e5fc92360e2b7135c75f503b0a541f5677b40e63f963d15c7759a4750080daf6e0942029
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: eda3cc8a98784edf756c24a991b39129afdfee6c2d241805ddcb0c043771584a34e13bf9a0d74e51929554c5a7fa62723ecace4d8df4ed84f45acca2e6bc5372
         
     | 
    
        data/lib/constructorio/client.rb
    CHANGED
    
    | 
         @@ -17,6 +17,10 @@ module ConstructorIO 
     | 
|
| 
       17 
17 
     | 
    
         
             
                  call_api("item", "post", params)
         
     | 
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
      
 20 
     | 
    
         
            +
                def add_or_update(params)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  call_api("item", "put", params, {force: 1})
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       20 
24 
     | 
    
         
             
                def remove(params)
         
     | 
| 
       21 
25 
     | 
    
         
             
                  call_api("item", "delete", params)
         
     | 
| 
       22 
26 
     | 
    
         
             
                end
         
     | 
| 
         @@ -45,21 +49,25 @@ module ConstructorIO 
     | 
|
| 
       45 
49 
     | 
    
         
             
                  call_api("batch_items", "post", params)
         
     | 
| 
       46 
50 
     | 
    
         
             
                end
         
     | 
| 
       47 
51 
     | 
    
         | 
| 
      
 52 
     | 
    
         
            +
                def add_or_update_batch(params)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  call_api("batch_items", "put", params, {force: 1})
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
       48 
56 
     | 
    
         
             
                private
         
     | 
| 
       49 
57 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
                def call_api(path, method, params = {})
         
     | 
| 
      
 58 
     | 
    
         
            +
                def call_api(path, method, params = {}, additional_query_params = {})
         
     | 
| 
       51 
59 
     | 
    
         
             
                  api_token = self.local_configuration.api_token
         
     | 
| 
       52 
60 
     | 
    
         
             
                  api_url = self.local_configuration.api_url
         
     | 
| 
       53 
61 
     | 
    
         
             
                  autocomplete_key = self.local_configuration.autocomplete_key
         
     | 
| 
       54 
62 
     | 
    
         
             
                  @http_client ||= Faraday.new(url: api_url)
         
     | 
| 
       55 
63 
     | 
    
         
             
                  @http_client.basic_auth(api_token, '')
         
     | 
| 
       56 
64 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                  send_request(path, method, @http_client, params, autocomplete_key)
         
     | 
| 
      
 65 
     | 
    
         
            +
                  send_request(path, method, @http_client, params, autocomplete_key, additional_query_params)
         
     | 
| 
       58 
66 
     | 
    
         
             
                end
         
     | 
| 
       59 
67 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
                def send_request(path, method, http_client, params, autocomplete_key)
         
     | 
| 
      
 68 
     | 
    
         
            +
                def send_request(path, method, http_client, params, autocomplete_key, additional_query_params)
         
     | 
| 
       61 
69 
     | 
    
         
             
                  response = http_client.send(method) do |request|
         
     | 
| 
       62 
     | 
    
         
            -
                    request.url "/v1/#{path}?autocomplete_key=#{autocomplete_key}"
         
     | 
| 
      
 70 
     | 
    
         
            +
                    request.url "/v1/#{path}?autocomplete_key=#{autocomplete_key}#{URI.encode_www_form(additional_query_params)}"
         
     | 
| 
       63 
71 
     | 
    
         
             
                    request.headers['Content-Type'] = 'application/json'
         
     | 
| 
       64 
72 
     | 
    
         
             
                    request.body = params.to_json
         
     | 
| 
       65 
73 
     | 
    
         
             
                  end
         
     | 
    
        data/test/constructorio_test.rb
    CHANGED
    
    | 
         @@ -19,12 +19,39 @@ class ConstructorIOTest < MiniTest::Test 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  "post",
         
     | 
| 
       20 
20 
     | 
    
         
             
                  instance_of(Faraday::Connection),
         
     | 
| 
       21 
21 
     | 
    
         
             
                  { item_name: "power drill" },
         
     | 
| 
       22 
     | 
    
         
            -
                  "example_autocomplete_key"
         
     | 
| 
      
 22 
     | 
    
         
            +
                  "example_autocomplete_key",
         
     | 
| 
      
 23 
     | 
    
         
            +
                  {}
         
     | 
| 
       23 
24 
     | 
    
         
             
                )
         
     | 
| 
       24 
25 
     | 
    
         | 
| 
       25 
26 
     | 
    
         
             
                c.add( { item_name: "power drill" } )
         
     | 
| 
       26 
27 
     | 
    
         
             
              end
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
              def test_add_or_update_record_calls_post
         
     | 
| 
      
 30 
     | 
    
         
            +
                c = ConstructorIO::Client.new
         
     | 
| 
      
 31 
     | 
    
         
            +
                c.expects(:call_api).with(
         
     | 
| 
      
 32 
     | 
    
         
            +
                  "item",
         
     | 
| 
      
 33 
     | 
    
         
            +
                  "put",
         
     | 
| 
      
 34 
     | 
    
         
            +
                  { item_name: "power drill" },
         
     | 
| 
      
 35 
     | 
    
         
            +
                  { force: 1 }
         
     | 
| 
      
 36 
     | 
    
         
            +
                )
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                c.add_or_update( { item_name: "power drill" } )
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def test_add_or_update_record_sends_request
         
     | 
| 
      
 42 
     | 
    
         
            +
                c = ConstructorIO::Client.new
         
     | 
| 
      
 43 
     | 
    
         
            +
                c.expects(:send_request).with(
         
     | 
| 
      
 44 
     | 
    
         
            +
                  "item",
         
     | 
| 
      
 45 
     | 
    
         
            +
                  "put",
         
     | 
| 
      
 46 
     | 
    
         
            +
                  instance_of(Faraday::Connection),
         
     | 
| 
      
 47 
     | 
    
         
            +
                  { item_name: "power drill" },
         
     | 
| 
      
 48 
     | 
    
         
            +
                  "example_autocomplete_key",
         
     | 
| 
      
 49 
     | 
    
         
            +
                  { force: 1 }
         
     | 
| 
      
 50 
     | 
    
         
            +
                )
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                c.add_or_update( { item_name: "power drill" } )
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
       28 
55 
     | 
    
         
             
              def test_add_record_sends_request_with_local_config
         
     | 
| 
       29 
56 
     | 
    
         
             
                c = ConstructorIO::Client.new(ConstructorIO::Configuration.new(
         
     | 
| 
       30 
57 
     | 
    
         
             
                  api_token: "this-api-token",
         
     | 
| 
         @@ -36,7 +63,8 @@ class ConstructorIOTest < MiniTest::Test 
     | 
|
| 
       36 
63 
     | 
    
         
             
                  "post",
         
     | 
| 
       37 
64 
     | 
    
         
             
                  instance_of(Faraday::Connection),
         
     | 
| 
       38 
65 
     | 
    
         
             
                  { item_name: "power drill" },
         
     | 
| 
       39 
     | 
    
         
            -
                  "this-autocomplete-key"
         
     | 
| 
      
 66 
     | 
    
         
            +
                  "this-autocomplete-key",
         
     | 
| 
      
 67 
     | 
    
         
            +
                  {}
         
     | 
| 
       40 
68 
     | 
    
         
             
                )
         
     | 
| 
       41 
69 
     | 
    
         | 
| 
       42 
70 
     | 
    
         
             
                c.add( { item_name: "power drill" } )
         
     | 
| 
         @@ -82,9 +110,81 @@ class ConstructorIOTest < MiniTest::Test 
     | 
|
| 
       82 
110 
     | 
    
         
             
                  "get",
         
     | 
| 
       83 
111 
     | 
    
         
             
                  instance_of(Faraday::Connection),
         
     | 
| 
       84 
112 
     | 
    
         
             
                  {},
         
     | 
| 
       85 
     | 
    
         
            -
                  "example_autocomplete_key"
         
     | 
| 
      
 113 
     | 
    
         
            +
                  "example_autocomplete_key",
         
     | 
| 
      
 114 
     | 
    
         
            +
                  {}
         
     | 
| 
       86 
115 
     | 
    
         
             
                )
         
     | 
| 
       87 
116 
     | 
    
         | 
| 
       88 
117 
     | 
    
         
             
                c.verify
         
     | 
| 
       89 
118 
     | 
    
         
             
              end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
              def test_add_batch_calls_post
         
     | 
| 
      
 121 
     | 
    
         
            +
                c = ConstructorIO::Client.new
         
     | 
| 
      
 122 
     | 
    
         
            +
                c.expects(:call_api).with(
         
     | 
| 
      
 123 
     | 
    
         
            +
                  "batch_items",
         
     | 
| 
      
 124 
     | 
    
         
            +
                  "post",
         
     | 
| 
      
 125 
     | 
    
         
            +
                  { autocomplete_section: "Products", items: [ { item_name: "item" } ] }
         
     | 
| 
      
 126 
     | 
    
         
            +
                )
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                c.add_batch(
         
     | 
| 
      
 129 
     | 
    
         
            +
                  {
         
     | 
| 
      
 130 
     | 
    
         
            +
                    autocomplete_section: "Products",
         
     | 
| 
      
 131 
     | 
    
         
            +
                    items: [ { item_name: "item" } ] 
         
     | 
| 
      
 132 
     | 
    
         
            +
                  }
         
     | 
| 
      
 133 
     | 
    
         
            +
                )
         
     | 
| 
      
 134 
     | 
    
         
            +
              end
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
              def test_add_batch_sends_request
         
     | 
| 
      
 137 
     | 
    
         
            +
                c = ConstructorIO::Client.new
         
     | 
| 
      
 138 
     | 
    
         
            +
                c.expects(:send_request).with(
         
     | 
| 
      
 139 
     | 
    
         
            +
                  "batch_items",
         
     | 
| 
      
 140 
     | 
    
         
            +
                  "post",
         
     | 
| 
      
 141 
     | 
    
         
            +
                  instance_of(Faraday::Connection),
         
     | 
| 
      
 142 
     | 
    
         
            +
                  { autocomplete_section: "Products", items: [ { item_name: "item" } ] },
         
     | 
| 
      
 143 
     | 
    
         
            +
                  "example_autocomplete_key",
         
     | 
| 
      
 144 
     | 
    
         
            +
                  {}
         
     | 
| 
      
 145 
     | 
    
         
            +
                )
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                c.add_batch(
         
     | 
| 
      
 148 
     | 
    
         
            +
                  {
         
     | 
| 
      
 149 
     | 
    
         
            +
                    autocomplete_section: "Products",
         
     | 
| 
      
 150 
     | 
    
         
            +
                    items: [ { item_name: "item" } ] 
         
     | 
| 
      
 151 
     | 
    
         
            +
                  }
         
     | 
| 
      
 152 
     | 
    
         
            +
                )
         
     | 
| 
      
 153 
     | 
    
         
            +
              end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
              def test_add_or_update_batch_calls_post
         
     | 
| 
      
 156 
     | 
    
         
            +
                c = ConstructorIO::Client.new
         
     | 
| 
      
 157 
     | 
    
         
            +
                c.expects(:call_api).with(
         
     | 
| 
      
 158 
     | 
    
         
            +
                  "batch_items",
         
     | 
| 
      
 159 
     | 
    
         
            +
                  "put",
         
     | 
| 
      
 160 
     | 
    
         
            +
                  { autocomplete_section: "Products", items: [ { item_name: "item" } ] },
         
     | 
| 
      
 161 
     | 
    
         
            +
                  { force: 1 }
         
     | 
| 
      
 162 
     | 
    
         
            +
                )
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
                c.add_or_update_batch(
         
     | 
| 
      
 165 
     | 
    
         
            +
                  {
         
     | 
| 
      
 166 
     | 
    
         
            +
                    autocomplete_section: "Products",
         
     | 
| 
      
 167 
     | 
    
         
            +
                    items: [ { item_name: "item" } ] 
         
     | 
| 
      
 168 
     | 
    
         
            +
                  }
         
     | 
| 
      
 169 
     | 
    
         
            +
                )
         
     | 
| 
      
 170 
     | 
    
         
            +
              end
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
              def test_add_or_update_batch_sends_request
         
     | 
| 
      
 173 
     | 
    
         
            +
                c = ConstructorIO::Client.new
         
     | 
| 
      
 174 
     | 
    
         
            +
                c.expects(:send_request).with(
         
     | 
| 
      
 175 
     | 
    
         
            +
                  "batch_items",
         
     | 
| 
      
 176 
     | 
    
         
            +
                  "put",
         
     | 
| 
      
 177 
     | 
    
         
            +
                  instance_of(Faraday::Connection),
         
     | 
| 
      
 178 
     | 
    
         
            +
                  { autocomplete_section: "Products", items: [ { item_name: "item" } ] },
         
     | 
| 
      
 179 
     | 
    
         
            +
                  "example_autocomplete_key",
         
     | 
| 
      
 180 
     | 
    
         
            +
                  { force: 1 }
         
     | 
| 
      
 181 
     | 
    
         
            +
                )
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
                c.add_or_update_batch(
         
     | 
| 
      
 184 
     | 
    
         
            +
                  {
         
     | 
| 
      
 185 
     | 
    
         
            +
                    autocomplete_section: "Products",
         
     | 
| 
      
 186 
     | 
    
         
            +
                    items: [ { item_name: "item" } ] 
         
     | 
| 
      
 187 
     | 
    
         
            +
                  }
         
     | 
| 
      
 188 
     | 
    
         
            +
                )
         
     | 
| 
      
 189 
     | 
    
         
            +
              end
         
     | 
| 
       90 
190 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: constructorio
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.0.9
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Dan McCormick
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-04-07 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: faraday
         
     |