squcumber-postgres 0.0.5 → 0.0.6

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: 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