workarea-core 3.4.20 → 3.4.21

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: 41997295c247cabcab6954794cc4fa0392b3f9553268588f4dde27bacd59565b
4
- data.tar.gz: fa08d0c4013f2d5a5d509f2263bbf04c9d7bcd00a82c76ba4545437f2ffea5da
3
+ metadata.gz: 43fdd50f2d9a692430643d0df84315a29540ffccb3d4f3bdf822555280a154be
4
+ data.tar.gz: 4fe3d5c333e3400b5855c63eeb83c92ca2d861a6b5dddd9ce9a5e13046ab8f34
5
5
  SHA512:
6
- metadata.gz: 6f0f192f913014b96436319712029c99c085b01252ecfdb756bf1e597769010543bac1be0f9ece10a1072bef45a113f337a11b23e649657635ed94d013058588
7
- data.tar.gz: 85660931331ec7eb09ffbaae8a6a342ee2fcc5f6d352d3beea02f3406e5ecd5dd69dc1a8441111842e22567c9c4a9dcc67ee5be296c3ff040a9f49f0c3b0dd73
6
+ metadata.gz: 8e86f64b2bdc446737cb257a6414bbdfc7788b66f354e6220c4a27edb26b279c7aa095117ea187ef121626f64d91f38e8c2a20f5dcb29bab8881a8c35de2e2f0
7
+ data.tar.gz: dbb29d99e58f970a2a6e85da982379d6675079c39bc61db6185b5aa9cad94272bc36b85494006bb04b7ec491ea019c2f4e5dc955b9cd0ea02f267d13718f623e
@@ -66,8 +66,37 @@ module Workarea
66
66
  serialize_hash(result, name, flatten_hash(value.as_json))
67
67
  end
68
68
 
69
+ def deserialize_time(hash, name, model)
70
+ return unless parsable_timestamp?(hash[name])
71
+ Time.parse(hash[name])
72
+ end
73
+
74
+ def deserialize_datetime(hash, name, model)
75
+ return unless parsable_timestamp?(hash[name])
76
+ DateTime.parse(hash[name])
77
+ end
78
+
79
+ def deserialize_date(hash, name, model)
80
+ return unless parsable_timestamp?(hash[name])
81
+ Date.parse(hash[name])
82
+ end
83
+
69
84
  private
70
85
 
86
+ # Mongoid uses ActiveSupport::TimeWithZone to mongoize strings into
87
+ # times and dates. TimeWithZone uses Date.parse, just as this method does,
88
+ # which can cause unpadded years to be returned. When parsing a CSV we
89
+ # can make sure the year is above a sensible threshold of 1970 to ensure
90
+ # marshalling data from mongoid models to elasticsearch does not cause
91
+ # errors.
92
+ #
93
+ def parsable_timestamp?(value)
94
+ return unless value.present?
95
+ Date.parse(value, false).year >= 1970
96
+ rescue ArgumentError
97
+ false
98
+ end
99
+
71
100
  def flatten_hash(hash, key = nil)
72
101
  return { key => hash } unless hash.is_a?(Hash)
73
102
 
@@ -17,6 +17,8 @@ module Workarea
17
17
  field :revenue, type: Float, default: 0.0
18
18
 
19
19
  index(reporting_on: 1, total_results: 1)
20
+ index(query_id: 1)
21
+
20
22
  scope :by_query_id, ->(id) { where(query_id: id) }
21
23
 
22
24
  def self.save_search(query_string, total_results, at: Time.current)
@@ -15,7 +15,7 @@ See https://docs.docker.com/compose/install/ for how to install.
15
15
  end
16
16
 
17
17
  def compose_file_path
18
- File.join(`bundle show workarea`, 'docker-compose.yml').gsub("\n", '')
18
+ File.join(Gem::Specification.find_by_name('workarea').gem_dir, 'docker-compose.yml')
19
19
  end
20
20
 
21
21
  def compose_env
@@ -2,7 +2,7 @@ module Workarea
2
2
  module VERSION
3
3
  MAJOR = 3
4
4
  MINOR = 4
5
- PATCH = 20
5
+ PATCH = 21
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
@@ -0,0 +1,96 @@
1
+ require 'test_helper'
2
+
3
+ module Workarea
4
+ module DataFile
5
+ class CsvFieldsTest < TestCase
6
+ class FooModel
7
+ include Mongoid::Document
8
+
9
+ field :test_time, type: Time
10
+ field :test_datetime, type: DateTime
11
+ field :test_date, type: Date
12
+ end
13
+
14
+ def test_deserialize_time
15
+ field = FooModel.fields['test_time']
16
+ model = FooModel.new
17
+
18
+ date = '10/10/2020 15:30:00'
19
+ assert(
20
+ Time.parse(date),
21
+ CsvFields.deserialize_from({ 'test_time' => date }, field: field, model: model)
22
+ )
23
+
24
+ date = '2020/10/30 15:30:00'
25
+ assert(
26
+ Time.parse(date),
27
+ CsvFields.deserialize_from({ 'test_time' => date }, field: field, model: model)
28
+ )
29
+
30
+ date = '10/30/2020 15:30:00'
31
+ assert_nil(
32
+ CsvFields.deserialize_from({ 'test_time' => date }, field: field, model: model)
33
+ )
34
+
35
+ date = '10/10/20 15:30:00'
36
+ assert_nil(
37
+ CsvFields.deserialize_from({ 'test_time' => date }, field: field, model: model)
38
+ )
39
+ end
40
+
41
+ def test_deserialize_datetime
42
+ field = FooModel.fields['test_datetime']
43
+ model = FooModel.new
44
+
45
+ date = '10/10/2020 15:30:00'
46
+ assert(
47
+ Time.parse(date),
48
+ CsvFields.deserialize_from({ 'test_datetime' => date }, field: field, model: model)
49
+ )
50
+
51
+ date = '2020/10/30 15:30:00'
52
+ assert(
53
+ Time.parse(date),
54
+ CsvFields.deserialize_from({ 'test_datetime' => date }, field: field, model: model)
55
+ )
56
+
57
+ date = '10/30/2020 15:30:00'
58
+ assert_nil(
59
+ CsvFields.deserialize_from({ 'test_datetime' => date }, field: field, model: model)
60
+ )
61
+
62
+ date = '10/10/20 15:30:00'
63
+ assert_nil(
64
+ CsvFields.deserialize_from({ 'test_datetime' => date }, field: field, model: model)
65
+ )
66
+ end
67
+
68
+ def test_deserialize_date
69
+ field = FooModel.fields['test_date']
70
+ model = FooModel.new
71
+
72
+ date = '10/10/2020 15:30:00'
73
+ assert(
74
+ Time.parse(date),
75
+ CsvFields.deserialize_from({ 'test_date' => date }, field: field, model: model)
76
+ )
77
+
78
+ date = '2020/10/30 15:30:00'
79
+ assert(
80
+ Time.parse(date),
81
+ CsvFields.deserialize_from({ 'test_date' => date }, field: field, model: model)
82
+ )
83
+
84
+ date = '10/30/2020 15:30:00'
85
+ assert_nil(
86
+ CsvFields.deserialize_from({ 'test_date' => date }, field: field, model: model)
87
+ )
88
+
89
+ date = '10/10/20 15:30:00'
90
+ assert_nil(
91
+ CsvFields.deserialize_from({ 'test_date' => date }, field: field, model: model)
92
+ )
93
+ end
94
+ end
95
+ end
96
+ end
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency 'bundler', '>= 1.8.0' # 1.8.0 added env variable for secrets
18
18
  s.add_dependency 'rails', '~> 5.2.0'
19
19
  s.add_dependency 'mongoid', '~> 6.4.0'
20
- s.add_dependency 'bson', '~> 4.3.0'
21
20
  s.add_dependency 'bcrypt', '~> 3.1.10'
22
21
  s.add_dependency 'money-rails', '~> 1.12.0'
23
22
  s.add_dependency 'mongoid-audit_log', '>= 0.5.0'
@@ -35,7 +34,7 @@ Gem::Specification.new do |s|
35
34
  s.add_dependency 'sidekiq-throttled', '~> 0.8.2'
36
35
  s.add_dependency 'geocoder', '~> 1.4.4'
37
36
  s.add_dependency 'redis-rails', '~> 5.0.0'
38
- s.add_dependency 'redis-rack-cache', '~> 2.0.2'
37
+ s.add_dependency 'redis-rack-cache', '~> 2.2.0'
39
38
  s.add_dependency 'easymon', '~> 1.4.0'
40
39
  s.add_dependency 'image_optim', '~> 0.26.0'
41
40
  s.add_dependency 'image_optim_pack', '0.5.0.20171101'
@@ -91,7 +90,7 @@ Gem::Specification.new do |s|
91
90
  s.add_dependency 'referer-parser', '~> 0.3.0'
92
91
  s.add_dependency 'serviceworker-rails', '~> 0.5.5'
93
92
  s.add_dependency 'logstasher', '~> 1.2.2'
94
- s.add_dependency 'chartkick', '~> 3.2.0'
93
+ s.add_dependency 'chartkick', '~> 3.3.0'
95
94
  s.add_dependency 'puma', '~> 4.0'
96
95
 
97
96
  # HACK for vendoring active_shipping
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: workarea-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.20
4
+ version: 3.4.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Crouse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-30 00:00:00.000000000 Z
11
+ date: 2019-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 6.4.0
55
- - !ruby/object:Gem::Dependency
56
- name: bson
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 4.3.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 4.3.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: bcrypt
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -310,14 +296,14 @@ dependencies:
310
296
  requirements:
311
297
  - - "~>"
312
298
  - !ruby/object:Gem::Version
313
- version: 2.0.2
299
+ version: 2.2.0
314
300
  type: :runtime
315
301
  prerelease: false
316
302
  version_requirements: !ruby/object:Gem::Requirement
317
303
  requirements:
318
304
  - - "~>"
319
305
  - !ruby/object:Gem::Version
320
- version: 2.0.2
306
+ version: 2.2.0
321
307
  - !ruby/object:Gem::Dependency
322
308
  name: easymon
323
309
  requirement: !ruby/object:Gem::Requirement
@@ -1100,14 +1086,14 @@ dependencies:
1100
1086
  requirements:
1101
1087
  - - "~>"
1102
1088
  - !ruby/object:Gem::Version
1103
- version: 3.2.0
1089
+ version: 3.3.0
1104
1090
  type: :runtime
1105
1091
  prerelease: false
1106
1092
  version_requirements: !ruby/object:Gem::Requirement
1107
1093
  requirements:
1108
1094
  - - "~>"
1109
1095
  - !ruby/object:Gem::Version
1110
- version: 3.2.0
1096
+ version: 3.3.0
1111
1097
  - !ruby/object:Gem::Dependency
1112
1098
  name: puma
1113
1099
  requirement: !ruby/object:Gem::Requirement
@@ -2068,6 +2054,7 @@ files:
2068
2054
  - test/models/workarea/content/fields/products_test.rb
2069
2055
  - test/models/workarea/content/page_test.rb
2070
2056
  - test/models/workarea/content_test.rb
2057
+ - test/models/workarea/data_file/csv_fields_test.rb
2071
2058
  - test/models/workarea/data_file/csv_test.rb
2072
2059
  - test/models/workarea/data_file/export_test.rb
2073
2060
  - test/models/workarea/data_file/format_test.rb