squcumber-postgres 0.0.5 → 0.0.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c74c69c04c7b06dc21cf98c9fc940036cd29fe30034295ea81e7dbf11af2a33b
4
- data.tar.gz: edef6b6fb8b544916e05bbfa97d2057f6b5540234a38662304f73090f22e4a88
3
+ metadata.gz: 0c7e23adc852f610e1dccd53a19444e6be0bf6707c7a4243ef475ccce0abdb6e
4
+ data.tar.gz: 437eac476560aa4fb9b5187a5e05c8e08c11f16954c74d0c0084808011dcd668
5
5
  SHA512:
6
- metadata.gz: 5c54f1a70bc5f7d949e58686dedf27586372d353e8c032f99ddef7bb1f06c8cbff9cf0380cb78d06be75f693dc3ba97b540a73246d2f2d5970df7a39a015998f
7
- data.tar.gz: bfeddaac3fc25e521fedc2eb3560843b7942c0dc1730a9782230f827c9d975678b91e8a30ac64716c95785428987e772849767106670e4a8a56b87a43b36d223
6
+ metadata.gz: 2759e739f71e4d8f51f019b4cad5bbf0933f6ef032f348494baa9fc5bcf374b7df601893ead9bfa47a7db0a7d95243399a1c013e322e030a6f5ad8f157e571d3
7
+ data.tar.gz: 551a53568da31c1f83e9cb91b496aea019960830a6b4151fb535d45ad13f36174ec3d8c553f7f35e6b5012dd90df3fa5a6cce6be3b81a5841e2da5b01a9c734e
@@ -23,23 +23,127 @@ module MatcherHelpers
23
23
  def convert_mock_values(mock_data)
24
24
  mock_data.map do |entry|
25
25
  entry.each do |key, value|
26
- entry[key] = case value
27
- when /today/
28
- Date.today.to_s
29
- when /yesterday/
30
- Date.today.prev_day.to_s
31
- when /\s*\d+\s+month(s)?\s+ago\s*/
32
- number_of_months = value.match(/\d+/)[0].to_i
33
- timetravel(Date.today, number_of_months, :prev_month).to_s
34
- when /\s*\d+\s+day(s)?\s+ago\s*/
35
- number_of_days = value.match(/\d+/)[0].to_i
36
- timetravel(Date.today, number_of_days, :prev_day).to_s
37
- else
38
- value
39
- end
26
+ # Examples of valid values; all examples assume that today is 30th July 2017
27
+ #
28
+ # 1 month ago
29
+ # => '2017-06-30'
30
+ #
31
+ # 40 days ago (as month)
32
+ # => '6'
33
+ #
34
+ # 2 years ago (as year)
35
+ # => '2015'
36
+ #
37
+ # beginning of last month
38
+ # => '2017-06-01'
39
+ #
40
+ # end of last year
41
+ # => '2016-12-31'
42
+ #
43
+ # today (as custom '%Y-%m')
44
+ # => '2017-07'
45
+ #
46
+ entry[key] = convert_mock_value(value)
40
47
  end
41
48
  end
42
49
  end
50
+
51
+ def convert_mock_value(value)
52
+ value_parser_regexp = /\s*((?<modifier>(beginning|end))\s+of\s+(?<modifier_base>day|month|year))?\s*(?<placeholder>[^\(\)]+)\s*(\(as (?<format>day|month|year|(custom '[^']+'))\))?\s*/
53
+
54
+ parsed_value = value.match(value_parser_regexp)
55
+ placeholder = parsed_value[:placeholder]
56
+ format = parsed_value[:format]
57
+ modifier = parsed_value[:modifier]
58
+ modifier_base = parsed_value[:modifier_base]
59
+
60
+ new_value = case placeholder
61
+ when /today/
62
+ Date.today
63
+ when /yesterday/
64
+ timetravel(Date.today, 1, :prev_day)
65
+ when /tomorrow/
66
+ timetravel(Date.today, 1, :next_day)
67
+ when /last month/
68
+ timetravel(Date.today, 1, :prev_month)
69
+ when /next month/
70
+ timetravel(Date.today, 1, :next_month)
71
+ when /last year/
72
+ timetravel(Date.today, 1, :prev_year)
73
+ when /next year/
74
+ timetravel(Date.today, 1, :next_year)
75
+ when /\s*\d+\s+month(s)?\s+ago\s*?/
76
+ number_of_months = value.match(/\d+/)[0].to_i
77
+ timetravel(Date.today, number_of_months, :prev_month)
78
+ when /\s*\d+\s+day(s)?\s+ago\s*/
79
+ number_of_days = value.match(/\d+/)[0].to_i
80
+ timetravel(Date.today, number_of_days, :prev_day)
81
+ when /\s*\d+\s+year(s)?\s+ago\s*/
82
+ number_of_years = value.match(/\d+/)[0].to_i
83
+ timetravel(Date.today, number_of_years, :prev_year)
84
+ when /\s*\d+\s+month(s)?\s+from now\s*?/
85
+ number_of_months = value.match(/\d+/)[0].to_i
86
+ timetravel(Date.today, number_of_months, :next_month)
87
+ when /\s*\d+\s+day(s)?\s+from now\s*/
88
+ number_of_days = value.match(/\d+/)[0].to_i
89
+ timetravel(Date.today, number_of_days, :next_day)
90
+ when /\s*\d+\s+year(s)?\s+from now\s*/
91
+ number_of_years = value.match(/\d+/)[0].to_i
92
+ timetravel(Date.today, number_of_years, :next_year)
93
+ else
94
+ placeholder
95
+ end
96
+
97
+ if new_value.is_a?(Date)
98
+ modified_new_value = case modifier
99
+ when nil
100
+ new_value
101
+ when 'beginning'
102
+ case modifier_base
103
+ when 'day'
104
+ new_value
105
+ when 'month'
106
+ Date.new(new_value.year, new_value.month, 1)
107
+ when 'year'
108
+ Date.new(new_value.year, 1, 1)
109
+ else
110
+ raise "Invalid date modifier provided: #{modifier} #{modifier_base}"
111
+ end
112
+ when 'end'
113
+ case modifier_base
114
+ when 'day'
115
+ new_value
116
+ when 'month'
117
+ Date.new(new_value.next_month.year, new_value.next_month.month, 1).prev_day
118
+ when 'year'
119
+ Date.new(new_value.next_year.year, 1, 1).prev_day
120
+ else
121
+ raise "Invalid date modifier provided: #{modifier} #{modifier_base}"
122
+ end
123
+ else
124
+ raise "Invalid date modifier provided: #{modifier} #{modifier_base}"
125
+ end
126
+
127
+ formatted_new_value = case format
128
+ when nil
129
+ puts "NO FORMAT"
130
+ modified_new_value.to_s
131
+ when 'day', 'month', 'year'
132
+ modified_new_value.send(format.to_sym)
133
+ when /custom '[^']+'/
134
+ parsed_format = format.match(/custom '(?<format_string>[^']+)'/)
135
+ modified_new_value.strftime(parsed_format[:format_string])
136
+ else
137
+ raise "Invalid date format provided: #{format}"
138
+ end
139
+
140
+ formatted_new_value
141
+ else
142
+ new_value
143
+ end
144
+ end
43
145
  end
44
146
 
45
- World(MatcherHelpers)
147
+ if defined?(World)
148
+ World(MatcherHelpers)
149
+ 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.5
4
+ version: 0.0.6
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-09-05 00:00:00.000000000 Z
11
+ date: 2018-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg