lws 6.2.1 → 6.2.2
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/CHANGELOG.md +9 -0
- data/lib/lws.rb +5 -1
- data/lib/lws/apps/generic.rb +51 -0
- data/lib/lws/apps/presence.rb +32 -2
- data/lib/lws/config.rb +4 -0
- data/lib/lws/version.rb +1 -1
- data/test/generic_test.rb +49 -8
- data/test/json_parser_test.rb +6 -3
- data/test/stubbing_test.rb +4 -2
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7b91a46e1cd07d2abdbe4d45e4d634725177bd993926e617a0eb0bf79b78a038
         | 
| 4 | 
            +
              data.tar.gz: a5a570895842b2d7d7bfe6f40326a34b84c2d3a484668832588091d84ffb7b0c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 214b724cd2c734cdb95e50be7b74d0cfbd5f8766a6cb3d665e17f21fa0202f80abddbe968d9f150583fd82e00c9a31ead72e5ff62e6aeb40539868d8b3ed0b38
         | 
| 7 | 
            +
              data.tar.gz: 491e70649040f36afdb496accf6c0e41ed640649606d313a375d5b7cfc2cd8b967673d0752037e21bde5e92d7a411d6a367f692cea0ee76a7b1496ddfb353f0e
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -4,6 +4,15 @@ Up until v6.1.0, we used the standard Gem version numbering starting at v0.0.1. | |
| 4 4 | 
             
            From v6.1.0 on the version will follow the API version of LWS in the major/minor
         | 
| 5 5 | 
             
            part of te version.
         | 
| 6 6 |  | 
| 7 | 
            +
            ## v6.2.2
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            * Add some more attributes to the Presence app
         | 
| 10 | 
            +
            * Use persistent HTTP connections from now on (#12101)
         | 
| 11 | 
            +
              * Add a configuration option for enabling/disabling persistent HTTP
         | 
| 12 | 
            +
                connections
         | 
| 13 | 
            +
            * Add support for dirtiness checking for all models (#12100)
         | 
| 14 | 
            +
              * Only save models using the HTTP if dirty
         | 
| 15 | 
            +
             | 
| 7 16 | 
             
            ## v6.2.1
         | 
| 8 17 |  | 
| 9 18 | 
             
            * Add new models and attributes to the Presence app (#12098, #12099)
         | 
    
        data/lib/lws.rb
    CHANGED
    
    | @@ -126,7 +126,11 @@ module LWS | |
| 126 126 | 
             
                  c.use HTTPLogger, config.logger, config.http_debug_headers if config.http_debug
         | 
| 127 127 |  | 
| 128 128 | 
             
                  # Adapter
         | 
| 129 | 
            -
                   | 
| 129 | 
            +
                  if config.http_persistent
         | 
| 130 | 
            +
                    c.adapter :net_http_persistent
         | 
| 131 | 
            +
                  else
         | 
| 132 | 
            +
                    c.adapter Faraday.default_adapter
         | 
| 133 | 
            +
                  end
         | 
| 130 134 | 
             
                end
         | 
| 131 135 |  | 
| 132 136 | 
             
                return api
         | 
    
        data/lib/lws/apps/generic.rb
    CHANGED
    
    | @@ -18,6 +18,8 @@ module LWS::Generic | |
| 18 18 | 
             
              #
         | 
| 19 19 | 
             
              # This model forms the base for all LWS models.
         | 
| 20 20 | 
             
              class Model < Spyke::Base
         | 
| 21 | 
            +
                include ActiveModel::Dirty
         | 
| 22 | 
            +
             | 
| 21 23 | 
             
                include_root_in_json true
         | 
| 22 24 |  | 
| 23 25 | 
             
                # @private
         | 
| @@ -50,7 +52,12 @@ module LWS::Generic | |
| 50 52 | 
             
                # @param [Symbol] name the name of the attribute to add
         | 
| 51 53 | 
             
                # @return [void]
         | 
| 52 54 | 
             
                def self.attribute(name)
         | 
| 55 | 
            +
                  define_attribute_methods(name)
         | 
| 53 56 | 
             
                  attributes(name)
         | 
| 57 | 
            +
                  define_method(:"#{name}=") do |value|
         | 
| 58 | 
            +
                    send(:"#{name}_will_change!") unless value == attribute(name)
         | 
| 59 | 
            +
                    super(value)
         | 
| 60 | 
            +
                  end
         | 
| 54 61 | 
             
                end
         | 
| 55 62 |  | 
| 56 63 | 
             
                # @private
         | 
| @@ -79,6 +86,50 @@ module LWS::Generic | |
| 79 86 | 
             
                  self.include_root_in_json self.name.split("::").last.underscore.to_sym
         | 
| 80 87 | 
             
                  api
         | 
| 81 88 | 
             
                end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                # @private
         | 
| 91 | 
            +
                # @!visibility private
         | 
| 92 | 
            +
                #
         | 
| 93 | 
            +
                # Sets up the object/model and then clears any changes information as
         | 
| 94 | 
            +
                # a result of loading and processing the JSON from LWS.
         | 
| 95 | 
            +
                #
         | 
| 96 | 
            +
                # return [Model] a new instance of the generic model
         | 
| 97 | 
            +
                def initialize(*args)
         | 
| 98 | 
            +
                  super
         | 
| 99 | 
            +
                  clear_changes_information if persisted?
         | 
| 100 | 
            +
                end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                # Reloads the attributes of this model by retrieving it from LWS
         | 
| 103 | 
            +
                # via HTTP.
         | 
| 104 | 
            +
                #
         | 
| 105 | 
            +
                # This also clears information about tracked changes to attribute
         | 
| 106 | 
            +
                # values!
         | 
| 107 | 
            +
                #
         | 
| 108 | 
            +
                # @return [Hash] a mapping of retrieved attribute names to values
         | 
| 109 | 
            +
                def reload
         | 
| 110 | 
            +
                  result = super
         | 
| 111 | 
            +
                  clear_changes_information if result
         | 
| 112 | 
            +
                  result
         | 
| 113 | 
            +
                end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                # Restore the attributes of this model to the previous (original) values.
         | 
| 116 | 
            +
                #
         | 
| 117 | 
            +
                # @return [Array<String>] list of attribute names that were rolled back
         | 
| 118 | 
            +
                def rollback
         | 
| 119 | 
            +
                  restore_attributes
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                # Saves the model to LWS via HTTP if there are any changes.
         | 
| 123 | 
            +
                #
         | 
| 124 | 
            +
                # @return [Hash, Trueclass] a mapping of attributes names to values,
         | 
| 125 | 
            +
                #   or +true+ if no save action was necessary.
         | 
| 126 | 
            +
                def save
         | 
| 127 | 
            +
                  return true unless changed?
         | 
| 128 | 
            +
                  result = super
         | 
| 129 | 
            +
                  changes_applied if result
         | 
| 130 | 
            +
                  result
         | 
| 131 | 
            +
                end
         | 
| 132 | 
            +
             | 
| 82 133 | 
             
              end
         | 
| 83 134 |  | 
| 84 135 | 
             
              # = The configuration class
         | 
    
        data/lib/lws/apps/presence.rb
    CHANGED
    
    | @@ -113,8 +113,8 @@ module LWS::Presence | |
| 113 113 | 
             
                attribute :long
         | 
| 114 114 |  | 
| 115 115 | 
             
                # @!attribute map_positions
         | 
| 116 | 
            -
                #   @return [Array<Location::Map::Position>] the positions
         | 
| 117 | 
            -
                #     that  | 
| 116 | 
            +
                #   @return [Array<Location::Map::Position>] the location map positions
         | 
| 117 | 
            +
                #     that track this location
         | 
| 118 118 | 
             
                has_many :map_positions, class_name: "LWS::Presence::Location::Map::Position"
         | 
| 119 119 |  | 
| 120 120 | 
             
                # @attribute maps
         | 
| @@ -295,6 +295,10 @@ module LWS::Presence | |
| 295 295 | 
             
                #   @return [String, nil] the customer specific reference for the person
         | 
| 296 296 | 
             
                attribute :customer_reference
         | 
| 297 297 |  | 
| 298 | 
            +
                # @!attribute email
         | 
| 299 | 
            +
                #   @return [String, nil] the email address of the person
         | 
| 300 | 
            +
                attribute :email
         | 
| 301 | 
            +
             | 
| 298 302 | 
             
                # @!attribute ero
         | 
| 299 303 | 
             
                #   @return [Boolean] whether the person is emergency response
         | 
| 300 304 | 
             
                #     ceritified
         | 
| @@ -304,6 +308,10 @@ module LWS::Presence | |
| 304 308 | 
             
                #   @return [String, nil] some extra info for the person
         | 
| 305 309 | 
             
                attribute :extra_info
         | 
| 306 310 |  | 
| 311 | 
            +
                # @!attribute import_ref
         | 
| 312 | 
            +
                #   @return [String, nil] reference for storing the uid of the remote database
         | 
| 313 | 
            +
                attribute :import_ref
         | 
| 314 | 
            +
             | 
| 307 315 | 
             
                # @!attribute last_sync
         | 
| 308 316 | 
             
                #   @return [String, nil] the last date/time the status was updated via a
         | 
| 309 317 | 
             
                #      device or RFID tag
         | 
| @@ -334,10 +342,28 @@ module LWS::Presence | |
| 334 342 | 
             
                #   @return [String] the name of the person
         | 
| 335 343 | 
             
                attribute :name
         | 
| 336 344 |  | 
| 345 | 
            +
                # @!attribute phone_fixed
         | 
| 346 | 
            +
                #   @return [String] the fixed phonenumber of the person
         | 
| 347 | 
            +
                attribute :phone_fixed
         | 
| 348 | 
            +
             | 
| 349 | 
            +
                # @!attribute phone_mobile
         | 
| 350 | 
            +
                #   @return [String] the mobile phonenumber of the person
         | 
| 351 | 
            +
                attribute :phone_moblie
         | 
| 352 | 
            +
             | 
| 353 | 
            +
                # @!attribute phone_extension
         | 
| 354 | 
            +
                #   @return [String] the fixed phonenumber extension of the person
         | 
| 355 | 
            +
                attribute :phone_extension
         | 
| 356 | 
            +
             | 
| 337 357 | 
             
                # @!attribute picture_url
         | 
| 338 358 | 
             
                #   @return [String, nil] the URL of the picture of the person
         | 
| 339 359 | 
             
                attribute :picture_url
         | 
| 340 360 |  | 
| 361 | 
            +
                # @!attribute present
         | 
| 362 | 
            +
                #   @return [Boolean] if a person is present at a location. It looks
         | 
| 363 | 
            +
                #     at the state of a person so that local state checking is not
         | 
| 364 | 
            +
                #     needed.
         | 
| 365 | 
            +
                attribute :present
         | 
| 366 | 
            +
             | 
| 341 367 | 
             
                # @!attribute rfid
         | 
| 342 368 | 
             
                #   @return [String, nil] the RFID tag ID linked to the person
         | 
| 343 369 | 
             
                attribute :rfid
         | 
| @@ -352,6 +378,10 @@ module LWS::Presence | |
| 352 378 | 
             
                #      linked to the person
         | 
| 353 379 | 
             
                attribute :udid
         | 
| 354 380 |  | 
| 381 | 
            +
                # @!attribute vehicle_registration_plate
         | 
| 382 | 
            +
                #   @return [String, nil] The vehicle registration plate of the persons transport
         | 
| 383 | 
            +
                attribute :vehicle_registration_plate
         | 
| 384 | 
            +
             | 
| 355 385 | 
             
                # @!attribute visibility
         | 
| 356 386 | 
             
                #   @return ["public", "private"] if a person should be protected by not showing critical information
         | 
| 357 387 | 
             
                attribute :visibility
         | 
    
        data/lib/lws/config.rb
    CHANGED
    
    | @@ -54,6 +54,10 @@ module LWS | |
| 54 54 | 
             
                #    (default: +false+)
         | 
| 55 55 | 
             
                property :http_debug_headers, default: false
         | 
| 56 56 |  | 
| 57 | 
            +
                #@!attribute http_persistent
         | 
| 58 | 
            +
                #  @return [Boolean] whether persistent HTTP connections are used
         | 
| 59 | 
            +
                property :http_persistent, default: true
         | 
| 60 | 
            +
             | 
| 57 61 | 
             
                #@!attribute json_debug
         | 
| 58 62 | 
             
                #  @return [Boolean] whether to show JSON debug messages (default: +false+)
         | 
| 59 63 | 
             
                property :json_debug, default: false
         | 
    
        data/lib/lws/version.rb
    CHANGED
    
    
    
        data/test/generic_test.rb
    CHANGED
    
    | @@ -11,21 +11,15 @@ | |
| 11 11 |  | 
| 12 12 | 
             
            require "test_helper"
         | 
| 13 13 |  | 
| 14 | 
            -
            class  | 
| 14 | 
            +
            class TestGenericModel < MiniTest::Test
         | 
| 15 15 |  | 
| 16 | 
            -
              # Generic  | 
| 16 | 
            +
              # Generic models needs to be accessed as under some kind of app
         | 
| 17 17 | 
             
              include LWS::Auth
         | 
| 18 18 |  | 
| 19 19 | 
             
              def setup
         | 
| 20 20 | 
             
                @configuration = Configuration.all.first
         | 
| 21 21 | 
             
              end
         | 
| 22 22 |  | 
| 23 | 
            -
              def test_valid
         | 
| 24 | 
            -
                refute_nil(@configuration)
         | 
| 25 | 
            -
                assert_instance_of(Configuration, @configuration)
         | 
| 26 | 
            -
                refute_nil(@configuration.id)
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 23 | 
             
              def test_her_compatibility
         | 
| 30 24 | 
             
                @configuration.assign_attributes("value" => "other_value")
         | 
| 31 25 | 
             
                assert_equal("other_value", @configuration.value)
         | 
| @@ -58,4 +52,51 @@ class TestGenericConfiguration < MiniTest::Test | |
| 58 52 | 
             
                end
         | 
| 59 53 | 
             
              end
         | 
| 60 54 |  | 
| 55 | 
            +
              def test_dirty
         | 
| 56 | 
            +
                # No changes for a just found instance
         | 
| 57 | 
            +
                configuration = Configuration.find(@configuration.id)
         | 
| 58 | 
            +
                refute(configuration.changed?)
         | 
| 59 | 
            +
                assert_equal({}, configuration.changes)
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                # Changes when an attribute is changed
         | 
| 62 | 
            +
                configuration.value = "other_value"
         | 
| 63 | 
            +
                assert(configuration.changed?)
         | 
| 64 | 
            +
                assert_equal({ "value" => ["test_value", "other_value"] },
         | 
| 65 | 
            +
                             configuration.changes)
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                # Changes reverted when rolled back
         | 
| 68 | 
            +
                configuration.rollback
         | 
| 69 | 
            +
                refute(configuration.changed?)
         | 
| 70 | 
            +
                assert_equal({}, configuration.changes)
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                # Changes overwritten when reloaded
         | 
| 73 | 
            +
                configuration.value = "other_value"
         | 
| 74 | 
            +
                assert(configuration.changed?)
         | 
| 75 | 
            +
                configuration.reload
         | 
| 76 | 
            +
                refute(configuration.changed?)
         | 
| 77 | 
            +
                assert_equal({}, configuration.changes)
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                # Not committed to the API if not changed
         | 
| 80 | 
            +
                refute(configuration.changed?)
         | 
| 81 | 
            +
                result = configuration.save
         | 
| 82 | 
            +
                assert_equal(true, result)
         | 
| 83 | 
            +
              end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
            class TestGenericConfiguration < MiniTest::Test
         | 
| 88 | 
            +
             | 
| 89 | 
            +
              # Generic class needs to be accessed under some kind of app
         | 
| 90 | 
            +
              include LWS::Auth
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              def setup
         | 
| 93 | 
            +
                @configuration = Configuration.all.first
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
              def test_valid
         | 
| 97 | 
            +
                refute_nil(@configuration)
         | 
| 98 | 
            +
                assert_instance_of(Configuration, @configuration)
         | 
| 99 | 
            +
                refute_nil(@configuration.id)
         | 
| 100 | 
            +
              end
         | 
| 101 | 
            +
             | 
| 61 102 | 
             
            end
         | 
    
        data/test/json_parser_test.rb
    CHANGED
    
    | @@ -16,6 +16,8 @@ class TestJSONParser < MiniTest::Test | |
| 16 16 | 
             
              include WebMock::API
         | 
| 17 17 |  | 
| 18 18 | 
             
              def setup
         | 
| 19 | 
            +
                # Redo LWS setup with persistent HTTP connections disabled.
         | 
| 20 | 
            +
                reconfigure(http_persistent: false)
         | 
| 19 21 | 
             
                WebMock.enable!
         | 
| 20 22 | 
             
                company = { id: "correct",
         | 
| 21 23 | 
             
                            country: "NL",
         | 
| @@ -31,7 +33,7 @@ class TestJSONParser < MiniTest::Test | |
| 31 33 | 
             
                stub_request(:get, full_uri.to_s)
         | 
| 32 34 | 
             
                  .to_return(body: MultiJson.dump(company))
         | 
| 33 35 | 
             
                stub_request(:put, full_uri.to_s)
         | 
| 34 | 
            -
                  .to_return(body: MultiJson.dump(company.merge(errors: {  | 
| 36 | 
            +
                  .to_return(body: MultiJson.dump(company.merge(errors: { contact_person_id: ["can't be blank"] })))
         | 
| 35 37 | 
             
                full_uri.path = "/companies"
         | 
| 36 38 | 
             
                stub_request(:post, full_uri.to_s)
         | 
| 37 39 | 
             
                  .to_return(body: "", status: 204)
         | 
| @@ -39,6 +41,7 @@ class TestJSONParser < MiniTest::Test | |
| 39 41 |  | 
| 40 42 | 
             
              def teardown
         | 
| 41 43 | 
             
                WebMock.disable!
         | 
| 44 | 
            +
                reconfigure
         | 
| 42 45 | 
             
              end
         | 
| 43 46 |  | 
| 44 47 | 
             
              def test_broken_json
         | 
| @@ -59,9 +62,9 @@ class TestJSONParser < MiniTest::Test | |
| 59 62 |  | 
| 60 63 | 
             
              def test_correct_json_with_errors
         | 
| 61 64 | 
             
                company = LWS::Auth::Company.find("correct")
         | 
| 62 | 
            -
                company. | 
| 65 | 
            +
                company.contact_person_id = ""
         | 
| 63 66 | 
             
                company.save
         | 
| 64 | 
            -
                assert_equal [" | 
| 67 | 
            +
                assert_equal ["Contact person can't be blank"], company.errors.to_a
         | 
| 65 68 | 
             
              end
         | 
| 66 69 |  | 
| 67 70 | 
             
            end
         | 
    
        data/test/stubbing_test.rb
    CHANGED
    
    | @@ -14,8 +14,10 @@ require "test_helper" | |
| 14 14 | 
             
            class TestStubbing < MiniTest::Test
         | 
| 15 15 |  | 
| 16 16 | 
             
              def setup
         | 
| 17 | 
            -
                # Redo  | 
| 18 | 
            -
                 | 
| 17 | 
            +
                # Redo LWS setup with stubbing enabled and persistent HTTP connections
         | 
| 18 | 
            +
                # disabled.
         | 
| 19 | 
            +
                reconfigure(http_persistent: false,
         | 
| 20 | 
            +
                            stubbing: File.expand_path("../fixtures", __FILE__))
         | 
| 19 21 | 
             
              end
         | 
| 20 22 |  | 
| 21 23 | 
             
              def teardown
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: lws
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 6.2. | 
| 4 | 
            +
              version: 6.2.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - LeftClick B.V.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019- | 
| 11 | 
            +
            date: 2019-03-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: faraday_middleware
         |