standardapi 6.0.0.29 → 6.0.0.30
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/standard_api/controller.rb +3 -2
- data/lib/standard_api/errors.rb +9 -0
- data/lib/standard_api/test_case/create_tests.rb +6 -3
- data/lib/standard_api/test_case/index_tests.rb +4 -4
- data/lib/standard_api/test_case.rb +11 -11
- data/lib/standard_api/version.rb +1 -1
- 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: bf7ed75a06eda9f024ebd87caccab44573802435d0494944137d92da6403fca2
         | 
| 4 | 
            +
              data.tar.gz: f44ad9cdd0d8bb87bc971f0b11b8f50b5f5f1289911d7bf4764f6f867b59b407
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2f0f4ba53a851f87467a584b0a37708a1d2c6a52fc3360c31fbd50462af17918b7c43b435001410984291db24a451940e97487fc549f993d35ecc63d832d3b20
         | 
| 7 | 
            +
              data.tar.gz: 26d70be42fd115039c04a4a0ba614225c05a549af0847d3473659c9d593002cd11addcfd330000163eb9d1597843c274593ba99ddd6f9a57ee39b83e8a05fcbb
         | 
| @@ -7,6 +7,7 @@ module StandardAPI | |
| 7 7 | 
             
                  klass.helper_method :includes, :orders, :model, :models, :resource_limit,
         | 
| 8 8 | 
             
                    :default_limit
         | 
| 9 9 | 
             
                  klass.before_action :set_standardapi_headers
         | 
| 10 | 
            +
                  klass.rescue_from StandardAPI::ParameterMissing, with: :bad_request
         | 
| 10 11 | 
             
                  klass.rescue_from StandardAPI::UnpermittedParameters, with: :bad_request
         | 
| 11 12 | 
             
                  klass.append_view_path(File.join(File.dirname(__FILE__), 'views'))
         | 
| 12 13 | 
             
                  klass.extend(ClassMethods)
         | 
| @@ -284,9 +285,9 @@ module StandardAPI | |
| 284 285 | 
             
                    limit = params.permit(:limit)[:limit]&.to_i || default_limit
         | 
| 285 286 |  | 
| 286 287 | 
             
                    if !limit
         | 
| 287 | 
            -
                      raise  | 
| 288 | 
            +
                      raise StandardAPI::ParameterMissing.new(:limit)
         | 
| 288 289 | 
             
                    elsif limit > resource_limit
         | 
| 289 | 
            -
                      raise  | 
| 290 | 
            +
                      raise StandardAPI::UnpermittedParameters.new([:limit, limit])
         | 
| 290 291 | 
             
                    end
         | 
| 291 292 |  | 
| 292 293 | 
             
                    limit
         | 
    
        data/lib/standard_api/errors.rb
    CHANGED
    
    | @@ -2,6 +2,15 @@ module StandardAPI | |
| 2 2 | 
             
              class StandardAPIError < StandardError
         | 
| 3 3 | 
             
              end
         | 
| 4 4 |  | 
| 5 | 
            +
              class ParameterMissing < StandardAPIError
         | 
| 6 | 
            +
                attr_reader :param
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                def initialize(param)
         | 
| 9 | 
            +
                  @param = param
         | 
| 10 | 
            +
                  super("param is missing or the value is empty: #{param}")
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 5 14 | 
             
              class UnpermittedParameters < StandardAPIError
         | 
| 6 15 | 
             
                attr_reader :params
         | 
| 7 16 |  | 
| @@ -85,9 +85,12 @@ module StandardAPI | |
| 85 85 | 
             
                  end
         | 
| 86 86 |  | 
| 87 87 | 
             
                  test '#create.html' do
         | 
| 88 | 
            -
                    return unless supports_format(:html)
         | 
| 88 | 
            +
                    return unless supports_format(:html, :create)
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                    attrs = attributes_for(singular_name, :nested).select do |k,v|
         | 
| 91 | 
            +
                      !model.readonly_attributes.include?(k.to_s)
         | 
| 92 | 
            +
                    end
         | 
| 89 93 |  | 
| 90 | 
            -
                    attrs = attributes_for(singular_name, :nested).select{ |k,v| !model.readonly_attributes.include?(k.to_s) }
         | 
| 91 94 | 
             
                    mask.each { |k, v| attrs[k] = v }
         | 
| 92 95 | 
             
                    create_webmocks(attrs)
         | 
| 93 96 |  | 
| @@ -98,7 +101,7 @@ module StandardAPI | |
| 98 101 | 
             
                  end
         | 
| 99 102 |  | 
| 100 103 | 
             
                  test '#create.html with invalid attributes renders edit action' do
         | 
| 101 | 
            -
                    return unless supports_format(:html)
         | 
| 104 | 
            +
                    return unless supports_format(:html, :create)
         | 
| 102 105 |  | 
| 103 106 | 
             
                    trait = FactoryBot.factories[singular_name].definition.defined_traits.any? { |x| x.name.to_s == 'invalid' }
         | 
| 104 107 |  | 
| @@ -37,10 +37,10 @@ module StandardAPI | |
| 37 37 |  | 
| 38 38 | 
             
                  test '#index.json params[:limit] does not exceed maximum limit' do
         | 
| 39 39 | 
             
                    return if !resource_limit || resource_limit == Float::INFINITY
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                     | 
| 42 | 
            -
             | 
| 43 | 
            -
                     | 
| 40 | 
            +
             | 
| 41 | 
            +
                    get resource_path(:index, format: :json), params: { limit: resource_limit + 1 }
         | 
| 42 | 
            +
                    assert_response :bad_request
         | 
| 43 | 
            +
                    assert_equal 'found unpermitted parameters: :limit, 1001', response.body
         | 
| 44 44 | 
             
                  end
         | 
| 45 45 |  | 
| 46 46 | 
             
                  test '#index.json params[:where]' do
         | 
| @@ -18,7 +18,7 @@ module StandardAPI::TestCase | |
| 18 18 | 
             
                  assert_equal(expected, *args)
         | 
| 19 19 | 
             
                end
         | 
| 20 20 | 
             
              end
         | 
| 21 | 
            -
             | 
| 21 | 
            +
             | 
| 22 22 | 
             
              def self.included(klass)
         | 
| 23 23 | 
             
                [:filters, :orders, :includes].each do |attribute|
         | 
| 24 24 | 
             
                  klass.send(:class_attribute, attribute)
         | 
| @@ -53,14 +53,14 @@ module StandardAPI::TestCase | |
| 53 53 | 
             
                end
         | 
| 54 54 | 
             
              end
         | 
| 55 55 |  | 
| 56 | 
            -
              def supports_format(format)
         | 
| 56 | 
            +
              def supports_format(format, action=nil)
         | 
| 57 57 | 
             
                count = controller_class.view_paths.count do |path|
         | 
| 58 | 
            -
                  !Dir.glob("#{path.instance_variable_get(:@path)}/{#{model.name.underscore},application} | 
| 58 | 
            +
                  !Dir.glob("#{path.instance_variable_get(:@path)}/{#{model.name.underscore},application}/**/#{action || '*'}.#{format}*").empty?
         | 
| 59 59 | 
             
                end
         | 
| 60 | 
            -
             | 
| 60 | 
            +
             | 
| 61 61 | 
             
                count > 0
         | 
| 62 62 | 
             
              end
         | 
| 63 | 
            -
             | 
| 63 | 
            +
             | 
| 64 64 | 
             
              def default_orders
         | 
| 65 65 | 
             
                controller_class.new.send(:default_orders)
         | 
| 66 66 | 
             
              end
         | 
| @@ -76,7 +76,7 @@ module StandardAPI::TestCase | |
| 76 76 | 
             
              def model
         | 
| 77 77 | 
             
                self.class.model
         | 
| 78 78 | 
             
              end
         | 
| 79 | 
            -
             | 
| 79 | 
            +
             | 
| 80 80 | 
             
              def mask
         | 
| 81 81 | 
             
                {}
         | 
| 82 82 | 
             
              end
         | 
| @@ -98,11 +98,11 @@ module StandardAPI::TestCase | |
| 98 98 | 
             
              def singular_name
         | 
| 99 99 | 
             
                model.model_name.singular
         | 
| 100 100 | 
             
              end
         | 
| 101 | 
            -
             | 
| 101 | 
            +
             | 
| 102 102 | 
             
              def plural_name
         | 
| 103 103 | 
             
                model.model_name.plural
         | 
| 104 104 | 
             
              end
         | 
| 105 | 
            -
             | 
| 105 | 
            +
             | 
| 106 106 | 
             
              def create_webmocks(attributes)
         | 
| 107 107 | 
             
                attributes.each do |attribute, value|
         | 
| 108 108 | 
             
                  self.class.model.validators_on(attribute)
         | 
| @@ -122,7 +122,7 @@ module StandardAPI::TestCase | |
| 122 122 | 
             
                  value
         | 
| 123 123 | 
             
                end
         | 
| 124 124 | 
             
              end
         | 
| 125 | 
            -
             | 
| 125 | 
            +
             | 
| 126 126 | 
             
              def normalize_to_json(record, attribute, value)
         | 
| 127 127 | 
             
                value = normalize_attribute(record, attribute, value)
         | 
| 128 128 | 
             
                return nil if value.nil?
         | 
| @@ -149,7 +149,7 @@ module StandardAPI::TestCase | |
| 149 149 |  | 
| 150 150 | 
             
                def controller_class
         | 
| 151 151 | 
             
                  controller_class_name = self.name.gsub(/Test$/, '')
         | 
| 152 | 
            -
                  controller_class_name.constantize | 
| 152 | 
            +
                  controller_class_name.constantize
         | 
| 153 153 | 
             
                rescue NameError => e
         | 
| 154 154 | 
             
                  raise e if e.message != "uninitialized constant #{controller_class_name}"
         | 
| 155 155 | 
             
                end
         | 
| @@ -166,7 +166,7 @@ module StandardAPI::TestCase | |
| 166 166 | 
             
                  return @model if defined?(@model) && @model
         | 
| 167 167 |  | 
| 168 168 | 
             
                  klass_name = controller_class.name.gsub(/Controller$/, '').singularize
         | 
| 169 | 
            -
             | 
| 169 | 
            +
             | 
| 170 170 | 
             
                  begin
         | 
| 171 171 | 
             
                    @model = klass_name.constantize
         | 
| 172 172 | 
             
                  rescue NameError
         | 
    
        data/lib/standard_api/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: standardapi
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 6.0.0. | 
| 4 | 
            +
              version: 6.0.0.30
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - James Bracy
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-02-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         |