zendesk_api 1.0.7 → 1.1.0
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/Gemfile.lock +1 -1
- data/{Readme.md → README.md} +105 -0
- data/lib/zendesk_api/actions.rb +7 -3
- data/lib/zendesk_api/association.rb +3 -1
- data/lib/zendesk_api/resources.rb +83 -0
- data/lib/zendesk_api/track_changes.rb +3 -6
- data/lib/zendesk_api/version.rb +1 -1
- data/spec/core/association_spec.rb +21 -0
- data/spec/core/trackie_spec.rb +18 -0
- data/spec/fixtures/sample_app.zip +0 -0
- data/spec/live/app_spec.rb +40 -0
- data/spec/live/audit_spec.rb +10 -0
- data/spec/live/installation_spec.rb +57 -0
- metadata +9 -3
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/{Readme.md → README.md}
    RENAMED
    
    | @@ -269,6 +269,111 @@ ticket.comment.uploads << File.new("img.jpg") | |
| 269 269 | 
             
            ticket.save
         | 
| 270 270 | 
             
            ```
         | 
| 271 271 |  | 
| 272 | 
            +
            ### Apps API
         | 
| 273 | 
            +
             | 
| 274 | 
            +
            v1.1.0 introduces support for the Zendesk [Apps API](http://developer.zendesk.com/documentation/apps/reference/api.html)
         | 
| 275 | 
            +
             | 
| 276 | 
            +
            #### Creating Apps
         | 
| 277 | 
            +
             | 
| 278 | 
            +
            ```ruby
         | 
| 279 | 
            +
            upload = client.apps.uploads.create!(:file => "path/to/app.zip")
         | 
| 280 | 
            +
            client.apps.create!(:name => "test", :short_description => "My test app", :upload_id => upload.id)
         | 
| 281 | 
            +
             | 
| 282 | 
            +
            # Or
         | 
| 283 | 
            +
             | 
| 284 | 
            +
            app = ZendeskAPI::App.new(client, :name => "test", :short_description => "My test app")
         | 
| 285 | 
            +
            app.upload = "path/to/app.zip"
         | 
| 286 | 
            +
            app.save!
         | 
| 287 | 
            +
             | 
| 288 | 
            +
            # Or
         | 
| 289 | 
            +
             | 
| 290 | 
            +
            upload = ZendeskAPI::App::Upload.new(client, :file => "path/to/app.zip")
         | 
| 291 | 
            +
            upload.save!
         | 
| 292 | 
            +
             | 
| 293 | 
            +
            app = ZendeskAPI::App.new(client, :name => "test")
         | 
| 294 | 
            +
            app.short_description = "My test app"
         | 
| 295 | 
            +
            app.upload_id = upload.id
         | 
| 296 | 
            +
            app.save!
         | 
| 297 | 
            +
             | 
| 298 | 
            +
            # Not supported!
         | 
| 299 | 
            +
            client.apps.create!(:name => "test", :short_description => "My test app", :upload => "app.zip")
         | 
| 300 | 
            +
            ```
         | 
| 301 | 
            +
             | 
| 302 | 
            +
            *Note: job statuses are currently not supported, so you must manually poll the job status API for app creation.*
         | 
| 303 | 
            +
            ```ruby
         | 
| 304 | 
            +
            body = {}
         | 
| 305 | 
            +
            until %w{failed completed}.include?(body["status"])
         | 
| 306 | 
            +
              response = client.connection.get(app.response.headers["Location"])
         | 
| 307 | 
            +
              body = response.body
         | 
| 308 | 
            +
             | 
| 309 | 
            +
              sleep(body["retry_in"])
         | 
| 310 | 
            +
            end
         | 
| 311 | 
            +
            ```
         | 
| 312 | 
            +
             | 
| 313 | 
            +
            #### Updating Apps
         | 
| 314 | 
            +
             | 
| 315 | 
            +
            ```ruby
         | 
| 316 | 
            +
            client.apps.update!(:id => 123, :short_description => "New Description")
         | 
| 317 | 
            +
             | 
| 318 | 
            +
            app = ZendeskAPI::App.new(client, :id => 123, :short_description => "New Description")
         | 
| 319 | 
            +
            app.save!
         | 
| 320 | 
            +
             | 
| 321 | 
            +
            ZendeskAPI::App.update!(client, :id => 123, :short_description => "New Description")
         | 
| 322 | 
            +
            ```
         | 
| 323 | 
            +
             | 
| 324 | 
            +
            #### Deleting Apps
         | 
| 325 | 
            +
             | 
| 326 | 
            +
            ```ruby
         | 
| 327 | 
            +
            client.apps.destroy!(:id => 123)
         | 
| 328 | 
            +
             | 
| 329 | 
            +
            app = ZendeskAPI::App.new(client, :id => 123)
         | 
| 330 | 
            +
            app.destroy!
         | 
| 331 | 
            +
             | 
| 332 | 
            +
            ZendeskAPI::App.destroy!(client, :id => 123)
         | 
| 333 | 
            +
            ```
         | 
| 334 | 
            +
             | 
| 335 | 
            +
            #### Installing an App
         | 
| 336 | 
            +
             | 
| 337 | 
            +
            ```ruby
         | 
| 338 | 
            +
            install = ZendeskAPI::App::Installation.new(client, :app_id => 123)
         | 
| 339 | 
            +
            install.save!
         | 
| 340 | 
            +
             | 
| 341 | 
            +
            client.apps.installations.create!(:app_id => 123)
         | 
| 342 | 
            +
             | 
| 343 | 
            +
            ZendeskAPI::App::Installation.create!(client, :app_id => 123)
         | 
| 344 | 
            +
            ```
         | 
| 345 | 
            +
             | 
| 346 | 
            +
            #### List Installations
         | 
| 347 | 
            +
             | 
| 348 | 
            +
            ```ruby
         | 
| 349 | 
            +
            apps = client.app.installations
         | 
| 350 | 
            +
            apps.fetch!
         | 
| 351 | 
            +
            ```
         | 
| 352 | 
            +
             | 
| 353 | 
            +
            #### Update Installation
         | 
| 354 | 
            +
             | 
| 355 | 
            +
            ```ruby
         | 
| 356 | 
            +
            client.app.installations.update!(:id => 123, :settings => { :title => "My New Name" })
         | 
| 357 | 
            +
             | 
| 358 | 
            +
            install = ZendeskAPI::App::Installation.new(client, :id => 123)
         | 
| 359 | 
            +
            install.settings = { :title => "My New Name" }
         | 
| 360 | 
            +
            install.save!
         | 
| 361 | 
            +
             | 
| 362 | 
            +
            ZendeskAPI::App::Installation.update!(client, :id => 123, :settings => { :title => "My New Name" })
         | 
| 363 | 
            +
            ```
         | 
| 364 | 
            +
             | 
| 365 | 
            +
            #### Delete Installation
         | 
| 366 | 
            +
             | 
| 367 | 
            +
            ```ruby
         | 
| 368 | 
            +
            client.app.installations.destroy!(:id => 123)
         | 
| 369 | 
            +
             | 
| 370 | 
            +
            install = ZendeskAPI::App::Installation.new(client, :id => 123)
         | 
| 371 | 
            +
            install.destroy!
         | 
| 372 | 
            +
             | 
| 373 | 
            +
            ZendeskAPI::App::Installation.destroy!(client, :id => 123)
         | 
| 374 | 
            +
            ```
         | 
| 375 | 
            +
             | 
| 376 | 
            +
             | 
| 272 377 | 
             
            ## Note on Patches/Pull Requests
         | 
| 273 378 | 
             
            1. Fork the project.
         | 
| 274 379 | 
             
            2. Make your feature addition or bug fix.
         | 
    
        data/lib/zendesk_api/actions.rb
    CHANGED
    
    | @@ -25,9 +25,7 @@ module ZendeskAPI | |
| 25 25 | 
             
                    yield req if block_given?
         | 
| 26 26 | 
             
                  end
         | 
| 27 27 |  | 
| 28 | 
            -
                   | 
| 29 | 
            -
                    @attributes.replace @attributes.deep_merge(@response.body[self.class.singular_resource_name] || {})
         | 
| 30 | 
            -
                  end
         | 
| 28 | 
            +
                  handle_response
         | 
| 31 29 |  | 
| 32 30 | 
             
                  @attributes.clear_changes
         | 
| 33 31 | 
             
                  clear_associations
         | 
| @@ -71,6 +69,12 @@ module ZendeskAPI | |
| 71 69 | 
             
                    end
         | 
| 72 70 | 
             
                  end
         | 
| 73 71 | 
             
                end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                def handle_response
         | 
| 74 | 
            +
                  if @response.body && @response.body[self.class.singular_resource_name]
         | 
| 75 | 
            +
                    @attributes.replace @attributes.deep_merge(@response.body[self.class.singular_resource_name] || {})
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                end
         | 
| 74 78 | 
             
              end
         | 
| 75 79 |  | 
| 76 80 | 
             
              module Read
         | 
| @@ -32,6 +32,8 @@ module ZendeskAPI | |
| 32 32 | 
             
                  instance = args.first
         | 
| 33 33 |  | 
| 34 34 | 
             
                  namespace = @options[:class].to_s.split("::")
         | 
| 35 | 
            +
                  namespace[-1] = @options[:class].resource_path
         | 
| 36 | 
            +
             | 
| 35 37 | 
             
                  %w(ZendeskAPI Voice).each { |ns| namespace.delete(ns) }
         | 
| 36 38 | 
             
                  has_parent = namespace.size > 1 || (options[:with_parent] && @options.parent)
         | 
| 37 39 |  | 
| @@ -118,7 +120,7 @@ module ZendeskAPI | |
| 118 120 | 
             
                  return unless association_on_parent = parent_class.associations.detect {|a| a[:class] == @options[:class] }
         | 
| 119 121 | 
             
                  [
         | 
| 120 122 | 
             
                    extract_parent_id(parent_class, instance, options, original_options),
         | 
| 121 | 
            -
                    @options.path || association_on_parent[:name].to_s
         | 
| 123 | 
            +
                    @options.path || association_on_parent[:path] || association_on_parent[:name].to_s
         | 
| 122 124 | 
             
                  ]
         | 
| 123 125 | 
             
                end
         | 
| 124 126 |  | 
| @@ -263,8 +263,14 @@ module ZendeskAPI | |
| 263 263 |  | 
| 264 264 | 
             
              class Ticket < Resource
         | 
| 265 265 | 
             
                class Audit < DataResource
         | 
| 266 | 
            +
                  class Event < Data
         | 
| 267 | 
            +
                    has :author, :class => User
         | 
| 268 | 
            +
                  end
         | 
| 269 | 
            +
             | 
| 266 270 | 
             
                  # need this to support SideLoading
         | 
| 267 271 | 
             
                  has :author, :class => User
         | 
| 272 | 
            +
             | 
| 273 | 
            +
                  has_many Event
         | 
| 268 274 | 
             
                end
         | 
| 269 275 |  | 
| 270 276 | 
             
                class Comment < Data
         | 
| @@ -451,6 +457,8 @@ module ZendeskAPI | |
| 451 457 | 
             
                has_many TopicSubscription
         | 
| 452 458 | 
             
                has_many :topic_comments, :class => TopicComment
         | 
| 453 459 | 
             
                has_many :topic_votes, :class => Topic::TopicVote
         | 
| 460 | 
            +
             | 
| 461 | 
            +
                has_many Setting
         | 
| 454 462 | 
             
              end
         | 
| 455 463 |  | 
| 456 464 | 
             
              class UserField < Resource; end
         | 
| @@ -485,4 +493,79 @@ module ZendeskAPI | |
| 485 493 | 
             
                # TODO
         | 
| 486 494 | 
             
                # post :clone
         | 
| 487 495 | 
             
              end
         | 
| 496 | 
            +
             | 
| 497 | 
            +
              class App < DataResource
         | 
| 498 | 
            +
                include Create
         | 
| 499 | 
            +
                include Update
         | 
| 500 | 
            +
                include Destroy
         | 
| 501 | 
            +
             | 
| 502 | 
            +
                def initialize(client, attributes = {})
         | 
| 503 | 
            +
                  attributes[:upload_id] ||= nil
         | 
| 504 | 
            +
             | 
| 505 | 
            +
                  super
         | 
| 506 | 
            +
                end
         | 
| 507 | 
            +
             | 
| 508 | 
            +
                class Upload < Data
         | 
| 509 | 
            +
                  class << self
         | 
| 510 | 
            +
                    def resource_path
         | 
| 511 | 
            +
                      "uploads"
         | 
| 512 | 
            +
                    end
         | 
| 513 | 
            +
                  end
         | 
| 514 | 
            +
             | 
| 515 | 
            +
                  include Create
         | 
| 516 | 
            +
             | 
| 517 | 
            +
                  def initialize(client, attributes)
         | 
| 518 | 
            +
                    attributes[:file] ||= attributes.delete(:id)
         | 
| 519 | 
            +
             | 
| 520 | 
            +
                    super
         | 
| 521 | 
            +
                  end
         | 
| 522 | 
            +
             | 
| 523 | 
            +
                  # Not nested under :upload, just returns :id
         | 
| 524 | 
            +
                  def save!(*)
         | 
| 525 | 
            +
                    super.tap do
         | 
| 526 | 
            +
                      attributes.id = @response.body["id"]
         | 
| 527 | 
            +
                    end
         | 
| 528 | 
            +
                  end
         | 
| 529 | 
            +
             | 
| 530 | 
            +
                  # Always save
         | 
| 531 | 
            +
                  def changed?
         | 
| 532 | 
            +
                    true
         | 
| 533 | 
            +
                  end
         | 
| 534 | 
            +
             | 
| 535 | 
            +
                  # Don't nest attributes
         | 
| 536 | 
            +
                  def attributes_for_save
         | 
| 537 | 
            +
                    attributes
         | 
| 538 | 
            +
                  end
         | 
| 539 | 
            +
                end
         | 
| 540 | 
            +
             | 
| 541 | 
            +
                class Installation < Resource
         | 
| 542 | 
            +
                  # Don't nest attributes
         | 
| 543 | 
            +
                  def attributes_for_save
         | 
| 544 | 
            +
                    attributes.changes
         | 
| 545 | 
            +
                  end
         | 
| 546 | 
            +
             | 
| 547 | 
            +
                  def handle_response
         | 
| 548 | 
            +
                    @attributes.replace(@response.body) if @response.body
         | 
| 549 | 
            +
                  end
         | 
| 550 | 
            +
                end
         | 
| 551 | 
            +
             | 
| 552 | 
            +
                def self.uploads(client, *args, &block)
         | 
| 553 | 
            +
                  ZendeskAPI::Collection.new(client, Upload, *args, &block)
         | 
| 554 | 
            +
                end
         | 
| 555 | 
            +
             | 
| 556 | 
            +
                def self.installations(client, *args, &block)
         | 
| 557 | 
            +
                  ZendeskAPI::Collection.new(client, Installation, *args, &block)
         | 
| 558 | 
            +
                end
         | 
| 559 | 
            +
             | 
| 560 | 
            +
                has Upload, :path => "uploads"
         | 
| 561 | 
            +
             | 
| 562 | 
            +
                # Don't nest attributes
         | 
| 563 | 
            +
                def attributes_for_save
         | 
| 564 | 
            +
                  attributes.changes
         | 
| 565 | 
            +
                end
         | 
| 566 | 
            +
             | 
| 567 | 
            +
                def handle_response
         | 
| 568 | 
            +
                  @attributes.replace(@response.body) if @response.body
         | 
| 569 | 
            +
                end
         | 
| 570 | 
            +
              end
         | 
| 488 571 | 
             
            end
         | 
| @@ -44,10 +44,6 @@ module ZendeskAPI | |
| 44 44 | 
             
                    keys.each{|key| delete key}
         | 
| 45 45 | 
             
                  end
         | 
| 46 46 |  | 
| 47 | 
            -
                  def [](key)
         | 
| 48 | 
            -
                    super(key)
         | 
| 49 | 
            -
                  end
         | 
| 50 | 
            -
             | 
| 51 47 | 
             
                  def regular_writer(key, value)
         | 
| 52 48 | 
             
                    if self.has_key?(key) && self[key] == value
         | 
| 53 49 | 
             
                      value
         | 
| @@ -58,8 +54,9 @@ module ZendeskAPI | |
| 58 54 | 
             
                  end
         | 
| 59 55 |  | 
| 60 56 | 
             
                  def delete(key)
         | 
| 61 | 
            -
                     | 
| 62 | 
            -
             | 
| 57 | 
            +
                    super.tap do |value|
         | 
| 58 | 
            +
                      changes[key] = nil
         | 
| 59 | 
            +
                    end
         | 
| 63 60 | 
             
                  end
         | 
| 64 61 |  | 
| 65 62 | 
             
                  def changes
         | 
    
        data/lib/zendesk_api/version.rb
    CHANGED
    
    
| @@ -180,6 +180,27 @@ describe ZendeskAPI::Association do | |
| 180 180 | 
             
                    subject.generate_path.should == "test_resources/1/blergh"
         | 
| 181 181 | 
             
                  end
         | 
| 182 182 | 
             
                end
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                context "with a path on the association" do
         | 
| 185 | 
            +
                  before(:each) do
         | 
| 186 | 
            +
                    association = ZendeskAPI::TestResource.associations.detect {|a| a[:name] == :children}
         | 
| 187 | 
            +
                    association[:path] = "blergh"
         | 
| 188 | 
            +
                  end
         | 
| 189 | 
            +
             | 
| 190 | 
            +
                  it "should generate nested resource path" do
         | 
| 191 | 
            +
                    subject.generate_path.should == "test_resources/1/blergh"
         | 
| 192 | 
            +
                  end
         | 
| 193 | 
            +
                end
         | 
| 194 | 
            +
             | 
| 195 | 
            +
                context "with no association" do
         | 
| 196 | 
            +
                  before(:each) do
         | 
| 197 | 
            +
                    ZendeskAPI::TestResource.associations.clear
         | 
| 198 | 
            +
                  end
         | 
| 199 | 
            +
             | 
| 200 | 
            +
                  it "should generate nested resource path" do
         | 
| 201 | 
            +
                    subject.generate_path.should == "test_resources/test_children"
         | 
| 202 | 
            +
                  end
         | 
| 203 | 
            +
                end
         | 
| 183 204 | 
             
              end
         | 
| 184 205 |  | 
| 185 206 | 
             
              context "class with a parent id" do
         | 
    
        data/spec/core/trackie_spec.rb
    CHANGED
    
    | @@ -21,6 +21,24 @@ describe ZendeskAPI::Trackie do | |
| 21 21 | 
             
                end
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 | 
            +
              context "deleting keys" do
         | 
| 25 | 
            +
                before(:each) do
         | 
| 26 | 
            +
                  subject[:key] = true
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                it "returns key on deletion" do
         | 
| 30 | 
            +
                  subject.delete(:key).should be_true
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                context "after deletion" do
         | 
| 34 | 
            +
                  before(:each) { subject.delete(:key) }
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  it "keeps the changes" do
         | 
| 37 | 
            +
                    subject.changed?(:key).should be_true
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 24 42 | 
             
              context "adding identical keys" do
         | 
| 25 43 | 
             
                before(:each) do
         | 
| 26 44 | 
             
                  subject[:key] = "foo"
         | 
| Binary file | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            require 'core/spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe ZendeskAPI::App do
         | 
| 4 | 
            +
              it "should work "do
         | 
| 5 | 
            +
                upload = VCR.use_cassette("app_upload_create") do
         | 
| 6 | 
            +
                  ZendeskAPI::App::Upload.new(client, :id => "spec/fixtures/sample_app.zip").tap(&:save!)
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                attributes = { :upload_id => upload.id, :name => "My App", :short_description => "Testing" }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                app = ZendeskAPI::App.new(client, attributes)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                VCR.use_cassette("app_create") { app.save! }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                body = {}
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                VCR.use_cassette("app_create_job_status") do
         | 
| 18 | 
            +
                  until %w{failed completed}.include?(body["status"])
         | 
| 19 | 
            +
                    response = client.connection.get(app.response.headers["Location"])
         | 
| 20 | 
            +
                    body = response.body
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    sleep(3)
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                if body["status"] == "failed"
         | 
| 27 | 
            +
                  fail "Could not create app: #{body.inspect}"
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                app.id = body["app_id"]
         | 
| 31 | 
            +
                app.short_description = "My Test App"
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                VCR.use_cassette("app_save") { app.save! }
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                app.short_description.should == "My Test App"
         | 
| 36 | 
            +
                app.author_name.should == "Skip Moore"
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                VCR.use_cassette("app_destroy") { app.destroy! }
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
            end
         | 
    
        data/spec/live/audit_spec.rb
    CHANGED
    
    | @@ -2,4 +2,14 @@ require 'core/spec_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            describe ZendeskAPI::Ticket::Audit do
         | 
| 4 4 | 
             
              it_should_be_readable ticket, :audits
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              describe ZendeskAPI::Ticket::Audit::Event, :vcr do
         | 
| 7 | 
            +
                it "should side-load events" do
         | 
| 8 | 
            +
                  audit = ticket.audits(include: :users).first
         | 
| 9 | 
            +
                  event = audit.events.first
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  event.should be_instance_of(ZendeskAPI::Ticket::Audit::Event)
         | 
| 12 | 
            +
                  event.author.should be_instance_of(ZendeskAPI::User)
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 5 15 | 
             
            end
         | 
| @@ -0,0 +1,57 @@ | |
| 1 | 
            +
            require 'core/spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe ZendeskAPI::App::Installation do
         | 
| 4 | 
            +
              it "should work "do
         | 
| 5 | 
            +
                upload = VCR.use_cassette("app_installations_upload_create") do
         | 
| 6 | 
            +
                  ZendeskAPI::App::Upload.new(client, :id => "spec/fixtures/sample_app.zip").tap(&:save!)
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                attributes = { :upload_id => upload.id, :name => "My App", :short_description => "Testing" }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                app = ZendeskAPI::App.new(client, attributes)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                VCR.use_cassette("app_installations_create") { app.save! }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                body = {}
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                VCR.use_cassette("app_installations_create_job_status") do
         | 
| 18 | 
            +
                  until %w{failed completed}.include?(body["status"])
         | 
| 19 | 
            +
                    response = client.connection.get(app.response.headers["Location"])
         | 
| 20 | 
            +
                    body = response.body
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    sleep(3)
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                if body["status"] == "failed"
         | 
| 27 | 
            +
                  fail "Could not create app: #{body.inspect}"
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                app.id = body["app_id"]
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                attributes = { :app_id => app.id, :settings => {
         | 
| 33 | 
            +
                    :name => "My App",
         | 
| 34 | 
            +
                    "Custom_Field_ID" => "123",
         | 
| 35 | 
            +
                    "Custom_Field_Default" => "Default"
         | 
| 36 | 
            +
                  }
         | 
| 37 | 
            +
                }
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                install = ZendeskAPI::App::Installation.new(client, attributes)
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                VCR.use_cassette("app_install_create") { install.save! }
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                installations = client.app.installations
         | 
| 44 | 
            +
                VCR.use_cassette("app_install_fetch") { installations.fetch! }
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                installations.should include(install)
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                install.settings.name = "My New Name"
         | 
| 49 | 
            +
                VCR.use_cassette("app_install_update") { install.save! }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                install.settings.title.should == "My New Name"
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                VCR.use_cassette("app_install_destroy") { install.destroy! }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                VCR.use_cassette("app_installations_destroy") { app.destroy! }
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: zendesk_api
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0 | 
| 4 | 
            +
              version: 1.1.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2013-10- | 
| 13 | 
            +
            date: 2013-10-23 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: bump
         | 
| @@ -236,8 +236,8 @@ files: | |
| 236 236 | 
             
            - Gemfile.lock
         | 
| 237 237 | 
             
            - LICENSE
         | 
| 238 238 | 
             
            - Procfile
         | 
| 239 | 
            +
            - README.md
         | 
| 239 240 | 
             
            - Rakefile
         | 
| 240 | 
            -
            - Readme.md
         | 
| 241 241 | 
             
            - bin/zendesk
         | 
| 242 242 | 
             
            - config.ru
         | 
| 243 243 | 
             
            - config/mongoid.yml
         | 
| @@ -477,10 +477,12 @@ files: | |
| 477 477 | 
             
            - spec/fixtures/cassettes/ZendeskAPI_Voice_PhoneNumber_update_create.json
         | 
| 478 478 | 
             
            - spec/fixtures/cassettes/ZendeskAPI_Voice_PhoneNumber_update_delete.json
         | 
| 479 479 | 
             
            - spec/fixtures/credentials.yml.example
         | 
| 480 | 
            +
            - spec/fixtures/sample_app.zip
         | 
| 480 481 | 
             
            - spec/fixtures/test_resources.rb
         | 
| 481 482 | 
             
            - spec/fixtures/zendesk.rb
         | 
| 482 483 | 
             
            - spec/live/Readme.md
         | 
| 483 484 | 
             
            - spec/live/activity_spec.rb
         | 
| 485 | 
            +
            - spec/live/app_spec.rb
         | 
| 484 486 | 
             
            - spec/live/audit_spec.rb
         | 
| 485 487 | 
             
            - spec/live/automation_spec.rb
         | 
| 486 488 | 
             
            - spec/live/bookmark_spec.rb
         | 
| @@ -492,6 +494,7 @@ files: | |
| 492 494 | 
             
            - spec/live/group_membership_spec.rb
         | 
| 493 495 | 
             
            - spec/live/group_spec.rb
         | 
| 494 496 | 
             
            - spec/live/identity_spec.rb
         | 
| 497 | 
            +
            - spec/live/installation_spec.rb
         | 
| 495 498 | 
             
            - spec/live/locale_spec.rb
         | 
| 496 499 | 
             
            - spec/live/macro_spec.rb
         | 
| 497 500 | 
             
            - spec/live/mobile_device_spec.rb
         | 
| @@ -586,10 +589,12 @@ test_files: | |
| 586 589 | 
             
            - spec/fixtures/cassettes/ZendeskAPI_Voice_PhoneNumber_update_create.json
         | 
| 587 590 | 
             
            - spec/fixtures/cassettes/ZendeskAPI_Voice_PhoneNumber_update_delete.json
         | 
| 588 591 | 
             
            - spec/fixtures/credentials.yml.example
         | 
| 592 | 
            +
            - spec/fixtures/sample_app.zip
         | 
| 589 593 | 
             
            - spec/fixtures/test_resources.rb
         | 
| 590 594 | 
             
            - spec/fixtures/zendesk.rb
         | 
| 591 595 | 
             
            - spec/live/Readme.md
         | 
| 592 596 | 
             
            - spec/live/activity_spec.rb
         | 
| 597 | 
            +
            - spec/live/app_spec.rb
         | 
| 593 598 | 
             
            - spec/live/audit_spec.rb
         | 
| 594 599 | 
             
            - spec/live/automation_spec.rb
         | 
| 595 600 | 
             
            - spec/live/bookmark_spec.rb
         | 
| @@ -601,6 +606,7 @@ test_files: | |
| 601 606 | 
             
            - spec/live/group_membership_spec.rb
         | 
| 602 607 | 
             
            - spec/live/group_spec.rb
         | 
| 603 608 | 
             
            - spec/live/identity_spec.rb
         | 
| 609 | 
            +
            - spec/live/installation_spec.rb
         | 
| 604 610 | 
             
            - spec/live/locale_spec.rb
         | 
| 605 611 | 
             
            - spec/live/macro_spec.rb
         | 
| 606 612 | 
             
            - spec/live/mobile_device_spec.rb
         |