squcumber-postgres 0.0.9 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40f6d596b4561fa3380966897373a4f390a3bd9fe953e425ed6f8f3756e93089
4
- data.tar.gz: 28b6cec09df0c495c8d8d72c10aabcd0ccf21a4422e0288fcd51b895a697071e
3
+ metadata.gz: 3e828300f0cb8a7c23134fb497f7c8db77b964fd1b1ecbd624133e1f43f6e9c8
4
+ data.tar.gz: 13a4b5d872b18ef71e6437cc4f73aa588054c720d36ef086822e74d6c605bde2
5
5
  SHA512:
6
- metadata.gz: 273bf470cb12b1cc0cb67a7904fd81f5a02b027b0f7e5154fe3254336f309ad406fd49a54b76710932fb4736608441e7fcdb7c031b97ff9d80aca9adf3202f66
7
- data.tar.gz: bc353761f60bfed9965b7380a3347c32cbd19d99c0082ba97061852f6aab3217ec4e8436a470f016d0b32436787dcd435020d303746e83370b882f9995e1b500
6
+ metadata.gz: 44cb35f73d0a380e2d8ceed798c25a2f4f80b07051ff3c485cf5618df67f817d3433c037a76f3a6265362fa86db8cbf7628ee0c2e71ff8338c9657883dc37a93
7
+ data.tar.gz: 87eb56e555d10ee0bd0924ea51985775583160764b025f7c8f2ba20a602724e39b06dc043bbb6274247be6f03f16ab778b038e859b8b8563027528529685accd
@@ -36,7 +36,7 @@ module Squcumber
36
36
 
37
37
  def truncate_all_tables
38
38
  @testing_database
39
- .exec("select schemaname || '.' || tablename as schema_and_table from pg_tables where tableowner = '#{ENV['DB_USER']}'")
39
+ .exec("select schemaname || '.' || tablename as schema_and_table from pg_tables where tableowner = '#{ENV['DB_USER']}' and schemaname not in ('pg_catalog', 'information_schema')")
40
40
  .map { |row| row['schema_and_table'] }
41
41
  .each { |schema_and_table| exec("truncate table #{schema_and_table}") }
42
42
  end
@@ -113,6 +113,8 @@ Then(/^the result( with date placeholders)? starts with.*$/) do |placeholder, da
113
113
  expected = data.hashes || []
114
114
  expected = convert_mock_values(expected) if placeholder
115
115
 
116
+ sanity_check_result(actual, expected)
117
+
116
118
  expected.each_with_index do |hash, i|
117
119
  raise("Does not start with expected result, got:\n#{format_error(data, actual)}") unless actual[i].all? do |key, value|
118
120
  values_match(value, hash[key]) # actual,expected
@@ -125,10 +127,12 @@ Then(/^the result( with date placeholders)? includes.*$/) do |placeholder, data|
125
127
  expected = data.hashes || []
126
128
  expected = convert_mock_values(expected) if placeholder
127
129
 
130
+ sanity_check_result(actual, expected)
131
+
128
132
  expected.each do |hash|
129
133
  raise("Result is not included, got:\n#{format_error(data, actual)}") unless actual.any? do |row|
130
134
  row.all? do |key, value|
131
- values_match(value, hash[key]) # actual,expected
135
+ values_match(value, hash[key]) # actual, expected
132
136
  end
133
137
  end
134
138
  end
@@ -139,6 +143,8 @@ Then(/^the result( with date placeholders)? does not include.*$/) do |placeholde
139
143
  expected = data.hashes || []
140
144
  expected = convert_mock_values(expected) if placeholder
141
145
 
146
+ sanity_check_result(actual, expected)
147
+
142
148
  expected.each do |hash|
143
149
  raise("Result is included, got:\n#{format_error(data, actual)}") if actual.any? do |row|
144
150
  row.all? do |key, value|
@@ -153,6 +159,8 @@ Then(/^the result( with date placeholders)? exactly matches.*$/) do |placeholder
153
159
  expected = data.hashes || []
154
160
  expected = convert_mock_values(expected) if placeholder
155
161
 
162
+ sanity_check_result(actual, expected)
163
+
156
164
  raise("Does not match exactly, got:\n#{format_error(data, actual)}") if actual.length != expected.length
157
165
 
158
166
  actual.each_with_index do |row, i|
@@ -1,4 +1,15 @@
1
1
  module MatcherHelpers
2
+ def sanity_check_result(actual, expected)
3
+ raise("The returned result is empty") if actual.empty?
4
+ raise("No data provided for comparison") if expected.empty?
5
+
6
+ expected[0].keys.each do |expected_key|
7
+ unless actual[0].keys.include?(expected_key)
8
+ raise("Column name '#{expected_key}' does not exist in result.\nAvailable column names are #{actual[0].keys.join(', ')}")
9
+ end
10
+ end
11
+ end
12
+
2
13
  def values_match(actual, expected)
3
14
  if expected.eql?('today')
4
15
  actual.match(/#{Regexp.quote(Date.today.to_s)}/)
@@ -6,6 +17,10 @@ module MatcherHelpers
6
17
  actual.match(/#{Regexp.quote((Date.today - 1).to_s)}/)
7
18
  elsif expected.eql?('any_date')
8
19
  actual.match(/^\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}$/)
20
+ elsif expected.eql?('sometime today')
21
+ actual.match(/^#{Regexp.quote(Date.today.to_s)} \d{2}:\d{2}:\d{2}$/)
22
+ elsif expected.eql?('sometime yesterday')
23
+ actual.match(/^#{Regexp.quote((Date.today - 1).to_s)} \d{2}:\d{2}:\d{2}$/)
9
24
  elsif expected.eql?('any_string')
10
25
  true if actual.is_a?(String) or actual.nil?
11
26
  elsif expected.eql?('false') or expected.eql?('true')
@@ -18,8 +33,6 @@ module MatcherHelpers
18
33
  end
19
34
  end
20
35
 
21
- def timetravel(date, i, method); i > 0 ? timetravel(date.send(method.to_sym), i - 1, method) : date; end
22
-
23
36
  def convert_mock_values(mock_data)
24
37
  mock_data.map do |entry|
25
38
  entry.each do |key, value|
@@ -61,35 +74,35 @@ module MatcherHelpers
61
74
  when /today/
62
75
  Date.today
63
76
  when /yesterday/
64
- timetravel(Date.today, 1, :prev_day)
77
+ Date.today.prev_day
65
78
  when /tomorrow/
66
- timetravel(Date.today, 1, :next_day)
79
+ Date.today.next_day
67
80
  when /last month/
68
- timetravel(Date.today, 1, :prev_month)
81
+ Date.today.prev_month
69
82
  when /next month/
70
- timetravel(Date.today, 1, :next_month)
83
+ Date.today.next_month
71
84
  when /last year/
72
- timetravel(Date.today, 1, :prev_year)
85
+ Date.today.prev_year
73
86
  when /next year/
74
- timetravel(Date.today, 1, :next_year)
87
+ Date.today.next_year
75
88
  when /\s*\d+\s+month(s)?\s+ago\s*?/
76
89
  number_of_months = value.match(/\d+/)[0].to_i
77
- timetravel(Date.today, number_of_months, :prev_month)
90
+ Date.today.prev_month(number_of_months)
78
91
  when /\s*\d+\s+day(s)?\s+ago\s*/
79
92
  number_of_days = value.match(/\d+/)[0].to_i
80
- timetravel(Date.today, number_of_days, :prev_day)
93
+ Date.today.prev_day(number_of_days)
81
94
  when /\s*\d+\s+year(s)?\s+ago\s*/
82
95
  number_of_years = value.match(/\d+/)[0].to_i
83
- timetravel(Date.today, number_of_years, :prev_year)
96
+ Date.today.prev_year(number_of_years)
84
97
  when /\s*\d+\s+month(s)?\s+from now\s*?/
85
98
  number_of_months = value.match(/\d+/)[0].to_i
86
- timetravel(Date.today, number_of_months, :next_month)
99
+ Date.today.next_month(number_of_months)
87
100
  when /\s*\d+\s+day(s)?\s+from now\s*/
88
101
  number_of_days = value.match(/\d+/)[0].to_i
89
- timetravel(Date.today, number_of_days, :next_day)
102
+ Date.today.next_day(number_of_days)
90
103
  when /\s*\d+\s+year(s)?\s+from now\s*/
91
104
  number_of_years = value.match(/\d+/)[0].to_i
92
- timetravel(Date.today, number_of_years, :next_year)
105
+ Date.today.next_year(number_of_years)
93
106
  else
94
107
  placeholder
95
108
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squcumber-postgres
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefanie Grunwald
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-20 00:00:00.000000000 Z
11
+ date: 2021-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -166,8 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  requirements: []
169
- rubyforge_project:
170
- rubygems_version: 2.7.6
169
+ rubygems_version: 3.0.3
171
170
  signing_key:
172
171
  specification_version: 3
173
172
  summary: Define and execute SQL integration tests for Postgres databases