workarea-core 3.4.20 → 3.4.21

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