query_matchers 0.0.8 → 0.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/query_matchers/query_counter.rb +6 -1
- data/lib/query_matchers/version.rb +1 -1
- data/spec/query_counter_spec.rb +19 -0
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4e9b67001d03e3aba3c3f24e3e9042c1791694cf
         | 
| 4 | 
            +
              data.tar.gz: 9eec49081038cc104babaf0b6ffc7e8986c297ec
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 47a67e26e09c7e7b29a605f6f673085d7485c903435b0e5c52caad99da80311900af702bf040468a4631e77223d292674d254f4be467fa3782494d4a3e5fbc6d
         | 
| 7 | 
            +
              data.tar.gz: d89c17cab0bcadfbae09c7d6c844a79b15ae8e73d0ad3715ebe67d5cd624058e8449e1f9260e3998f7ce019a7bd1ca31a01f974d8203abd805eebb484d04db72
         | 
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            module QueryMatchers
         | 
| 2 2 | 
             
              class QueryCounter
         | 
| 3 3 | 
             
                OPERATIONS = %w(SELECT INSERT UPDATE DELETE)
         | 
| 4 | 
            +
                RAILS5_INFORMATION_SCHEMA_REGEX = /^\s*SELECT.+FROM information_schema\./m
         | 
| 4 5 |  | 
| 5 6 | 
             
                def initialize
         | 
| 6 7 | 
             
                  @events = []
         | 
| @@ -28,7 +29,11 @@ module QueryMatchers | |
| 28 29 | 
             
                end
         | 
| 29 30 |  | 
| 30 31 | 
             
                def count_query?(sql)
         | 
| 31 | 
            -
                  OPERATIONS.any? {|op| sql.start_with?(op) }
         | 
| 32 | 
            +
                  OPERATIONS.any? {|op| sql.lstrip.start_with?(op) } && !ignore_query?(sql)
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def ignore_query?(sql)
         | 
| 36 | 
            +
                  sql.match?(RAILS5_INFORMATION_SCHEMA_REGEX)
         | 
| 32 37 | 
             
                end
         | 
| 33 38 | 
             
              end
         | 
| 34 39 | 
             
            end
         | 
    
        data/spec/query_counter_spec.rb
    CHANGED
    
    | @@ -42,12 +42,31 @@ describe QueryMatchers::QueryCounter do | |
| 42 42 | 
             
                expect(counter.query_count).to eq(1)
         | 
| 43 43 | 
             
              end
         | 
| 44 44 |  | 
| 45 | 
            +
              it "counts queries with a bit of whitespace" do
         | 
| 46 | 
            +
                counter.execute!(sql_target("  SELECT FROM inventory"))
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                expect(counter.query_count).to eq(1)
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 45 51 | 
             
              it "doesn't count any other type of query" do
         | 
| 46 52 | 
             
                counter.execute!(sql_target("BREAKDANCE"))
         | 
| 47 53 |  | 
| 48 54 | 
             
                expect(counter.query_count).to eq(0)
         | 
| 49 55 | 
             
              end
         | 
| 50 56 |  | 
| 57 | 
            +
              it "ignores Rails 5's schema queries" do
         | 
| 58 | 
            +
                counter.execute!(sql_target(<<-SQL))
         | 
| 59 | 
            +
                  SELECT column_name
         | 
| 60 | 
            +
                    FROM information_schema.key_column_usage
         | 
| 61 | 
            +
                   WHERE constraint_name = 'PRIMARY'
         | 
| 62 | 
            +
                     AND table_schema = DATABASE()
         | 
| 63 | 
            +
                     AND table_name = 'jokes'
         | 
| 64 | 
            +
                   ORDER BY ordinal_position
         | 
| 65 | 
            +
                SQL
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                expect(counter.query_count).to eq(0)
         | 
| 68 | 
            +
              end
         | 
| 69 | 
            +
             | 
| 51 70 | 
             
              def sql_target(sql)
         | 
| 52 71 | 
             
                proc { perform_sql(sql) }
         | 
| 53 72 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: query_matchers
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.9
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Daniel Schierbeck
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-10-02 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -111,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 111 111 | 
             
                  version: '0'
         | 
| 112 112 | 
             
            requirements: []
         | 
| 113 113 | 
             
            rubyforge_project: 
         | 
| 114 | 
            -
            rubygems_version: 2.6. | 
| 114 | 
            +
            rubygems_version: 2.6.13
         | 
| 115 115 | 
             
            signing_key: 
         | 
| 116 116 | 
             
            specification_version: 4
         | 
| 117 117 | 
             
            summary: Match the number of queries performed in any block of code
         |