unidom-geo 1.5.7 → 2.0.1

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
- SHA1:
3
- metadata.gz: '04091f3b47716f81dabccd033d78edfb71c9e2ea'
4
- data.tar.gz: 30d6f758f78fbcddc14fb9bd0e656d6e58fcd27f
2
+ SHA256:
3
+ metadata.gz: 8e25f98615ec3a1877be55ce5ed52791f17183ea7015be3fde6cc34b5c53ff85
4
+ data.tar.gz: 544c24cc4572a0ab12d915cfa87361701fcdc8df0ad9a698c0568419515b7dd1
5
5
  SHA512:
6
- metadata.gz: 61f026168f11f4f82cdb65c5e1c2a3c9312773ccab006ed2dd26499bc5c798fedd439dcb027f4725b47bfa88a6ceb406bf33870d7e79a938ee93586af139801f
7
- data.tar.gz: 63ce8db98d6fdfcec255eeeacfb8e533f0a511f95cb349eb5b545eec6cf248d42d1a8e27c8789a1231467cf85dc3c5d23a4af73a3762dfb5d973a785d57d373c
6
+ metadata.gz: 497a1c2ab5885baa1352b6f32a2c26e44b135f00ad277204c94cb8cc09f14b416942c4add9795b0a2ec4ff5178e1417cfa6660bb0111b714351ccc8f725819d4
7
+ data.tar.gz: 40dc6aaf39d6eb245eb4f82174790b2fc6b7a1faee8e0f4495d41e3083ab170385fae1563e9a468e733238067385b8390a8ce675b763d7c931477ce0e84df21c
data/README.md CHANGED
@@ -121,6 +121,10 @@ require 'unidom/geo/validators_rspec'
121
121
  # lib/unidom.rb
122
122
  def initialize_unidom
123
123
 
124
+ Unidom::Party::Person.class_eval do
125
+ include Unidom::Geo::Concerns::AsLocator
126
+ end
127
+
124
128
  Unidom::Party::Shop.class_eval do
125
129
  include Unidom::Geo::Concerns::AsLocated
126
130
  end
@@ -138,6 +142,26 @@ initialize_unidom
138
142
  # spec/support/unidom_rspec_shared_examples.rb
139
143
  require 'unidom/geo/rspec_shared_examples'
140
144
 
145
+ # spec/models/unidom/party/person_spec.rb
146
+ describe Unidom::Party::Person, type: :model do
147
+
148
+ context do
149
+
150
+ model_attributes = {
151
+ name: 'Tim'
152
+ }
153
+
154
+ located_attributes = {
155
+ name: 'Walmart'
156
+ }
157
+ located = Unidom::Party::Shop.create! located_attributes
158
+
159
+ it_behaves_like 'Unidom::Geo::Concerns::AsLocator', model_attributes, located
160
+
161
+ end
162
+
163
+ end
164
+
141
165
  # spec/models/unidom/party/shop_spec.rb
142
166
  describe Unidom::Party::Shop, type: :model do
143
167
 
@@ -11,7 +11,13 @@ module Unidom::Geo::Concerns::AsLocator
11
11
  has_many :locations, through: :locatings, source: :location
12
12
 
13
13
  def locate!(it, to: nil, at: Time.now)
14
+
15
+ assert_present! :it, it
16
+ assert_present! :to, to
17
+ assert_present! :at, at
18
+
14
19
  locatings.location_is(to).located_is(it).valid_at(now: at).alive.first_or_create! opened_at: at
20
+
15
21
  end
16
22
 
17
23
  end
@@ -1,4 +1,4 @@
1
- class CreateUnidomLocations < ActiveRecord::Migration
1
+ class CreateUnidomLocations < ActiveRecord::Migration[6.0]
2
2
 
3
3
  def change
4
4
 
@@ -20,9 +20,9 @@ class CreateUnidomLocations < ActiveRecord::Migration
20
20
 
21
21
  t.column :accuarcy_code, 'char(1)', null: false, default: 'N'
22
22
 
23
- t.column :state, 'char(1)', null: false, default: 'C'
24
- t.datetime :opened_at, null: false, default: ::Time.utc(1970)
25
- t.datetime :closed_at, null: false, default: ::Time.utc(3000)
23
+ t.column :state, 'char(1)', null: false, default: Unidom::Common::STATE
24
+ t.datetime :opened_at, null: false, default: Unidom::Common::OPENED_AT
25
+ t.datetime :closed_at, null: false, default: Unidom::Common::CLOSED_AT
26
26
  t.boolean :defunct, null: false, default: false
27
27
  t.jsonb :notation, null: false, default: {}
28
28
 
@@ -1,4 +1,4 @@
1
- class CreateUnidomLocatings < ActiveRecord::Migration
1
+ class CreateUnidomLocatings < ActiveRecord::Migration[6.0]
2
2
 
3
3
  def change
4
4
 
@@ -10,9 +10,9 @@ class CreateUnidomLocatings < ActiveRecord::Migration
10
10
  t.references :locator, type: :uuid, null: false,
11
11
  polymorphic: { null: false, default: '', limit: 200 }
12
12
 
13
- t.column :state, 'char(1)', null: false, default: 'C'
14
- t.datetime :opened_at, null: false, default: ::Time.utc(1970)
15
- t.datetime :closed_at, null: false, default: ::Time.utc(3000)
13
+ t.column :state, 'char(1)', null: false, default: Unidom::Common::STATE
14
+ t.datetime :opened_at, null: false, default: Unidom::Common::OPENED_AT
15
+ t.datetime :closed_at, null: false, default: Unidom::Common::CLOSED_AT
16
16
  t.boolean :defunct, null: false, default: false
17
17
  t.jsonb :notation, null: false, default: {}
18
18
 
@@ -26,4 +26,4 @@ class CreateUnidomLocatings < ActiveRecord::Migration
26
26
 
27
27
  end
28
28
 
29
- end
29
+ end
@@ -0,0 +1,39 @@
1
+ shared_examples 'Unidom::Geo::Concerns::AsLocator' do |model_attributes, located|
2
+
3
+ context do
4
+
5
+ locating_1_attribtues = {
6
+ location_id: SecureRandom.uuid,
7
+ located_id: SecureRandom.uuid,
8
+ located_type: 'Unidom::Geo::Located::Mock'
9
+ }
10
+
11
+ locating_2_attribtues = {
12
+ location_id: SecureRandom.uuid,
13
+ located_id: SecureRandom.uuid,
14
+ located_type: 'Unidom::Geo::Located::Mock'
15
+ }
16
+
17
+ it_behaves_like 'has_many', model_attributes, :locatings, Unidom::Geo::Locating, [ locating_1_attribtues, locating_2_attribtues ]
18
+
19
+ model = described_class.create! model_attributes
20
+
21
+ location_attributes = {
22
+ region_id: SecureRandom.uuid,
23
+ region_type: 'Unidom::Geo::Region::Mock',
24
+ longitude: 21.000000,
25
+ latitude: 31.000000,
26
+ postal_address: 'Some Address',
27
+ postal_code: '100000',
28
+ minimum_longitude: 19.900000,
29
+ minimum_latitude: 30.900000,
30
+ maximum_longitude: 21.100000,
31
+ maximum_latitude: 31.100000,
32
+ }
33
+ location = Unidom::Geo::Location.first_or_create! location_attributes
34
+
35
+ it_behaves_like 'assert_present!', model, :locate!, [ located, { to: location, at: Time.now } ], [ { 0 => :it }, :to, :at ]
36
+
37
+ end
38
+
39
+ end
@@ -1,2 +1,3 @@
1
1
  require 'rspec/models/unidom/geo/concerns/as_located_shared_examples'
2
+ require 'rspec/models/unidom/geo/concerns/as_locator_shared_examples'
2
3
  require 'rspec/models/unidom/geo/concerns/as_region_shared_examples'
@@ -1,5 +1,5 @@
1
1
  module Unidom
2
2
  module Geo
3
- VERSION = '1.5.7'.freeze
3
+ VERSION = '2.0.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unidom-geo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.7
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Topbit Du
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-30 00:00:00.000000000 Z
11
+ date: 2021-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unidom-common
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.9'
19
+ version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.9'
26
+ version: '2.0'
27
27
  description: Unidom (UNIfied Domain Object Model) is a series of domain model engines.
28
28
  The Geo domain model engine includes Region, Town, and Location models. Unidom (统一领域对象模型)是一系列的领域模型引擎。地理领域模型引擎包括行政区划、乡镇和街道地址的模型。
29
29
  email:
@@ -53,6 +53,7 @@ files:
53
53
  - db/migrate/20010401000000_create_unidom_locations.rb
54
54
  - db/migrate/20010402000000_create_unidom_locatings.rb
55
55
  - lib/rspec/models/unidom/geo/concerns/as_located_shared_examples.rb
56
+ - lib/rspec/models/unidom/geo/concerns/as_locator_shared_examples.rb
56
57
  - lib/rspec/models/unidom/geo/concerns/as_region_shared_examples.rb
57
58
  - lib/rspec/models/unidom/geo/locating_spec.rb
58
59
  - lib/rspec/models/unidom/geo/location_spec.rb
@@ -68,7 +69,7 @@ homepage: https://github.com/topbitdu/unidom-geo
68
69
  licenses:
69
70
  - MIT
70
71
  metadata: {}
71
- post_install_message:
72
+ post_install_message:
72
73
  rdoc_options: []
73
74
  require_paths:
74
75
  - lib
@@ -83,9 +84,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
84
  - !ruby/object:Gem::Version
84
85
  version: '0'
85
86
  requirements: []
86
- rubyforge_project:
87
- rubygems_version: 2.6.4
88
- signing_key:
87
+ rubygems_version: 3.2.3
88
+ signing_key:
89
89
  specification_version: 4
90
90
  summary: Unidom Geo Domain Model Engine 地理领域模型引擎
91
91
  test_files: []