unidom-accession 2.3 → 2.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/unidom/accession/concerns/as_post_fulfilled.rb +10 -0
- data/app/models/unidom/accession/concerns/as_post_fulfiller.rb +10 -0
- data/app/models/unidom/accession/post_fulfillment.rb +5 -1
- data/lib/rspec/models/unidom/accession/post_fulfillment_spec.rb +12 -23
- data/lib/unidom/accession/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe5f5dc574296af56843985c519c3b5e942702b6
|
4
|
+
data.tar.gz: 5604258d182b419dc86cc9d1c971581e3d014636
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a49645ecf78f4a07ce19d4b48be63aaaac7ab655163de2eefe29afa2373e162198d2d10f7d080c94e260d1c25bbde55bd65e783a492d61ad1e03c536bd5ac23
|
7
|
+
data.tar.gz: c469e50083172660c7d72b4ba5313e1217390fc12e17176f7ad0836431acac3f2e09120afb278fe9deb9b250a81282929ae7e8f8540a642c57261fb9ab6c27f0
|
@@ -10,12 +10,22 @@ module Unidom::Accession::Concerns::AsPostFulfilled
|
|
10
10
|
has_many :post_fulfillments, class_name: 'Unidom::Accession::PostFulfillment', as: :fulfilled
|
11
11
|
has_many :fulfiller_people, through: :post_fulfillments, source: :fulfiller, source_type: 'Unidom::Party::Person'
|
12
12
|
|
13
|
+
##
|
14
|
+
# 让当前岗位在指定时间 at 开始被指定的参与者 by 履行。指定时间缺省为当前时间。如:
|
15
|
+
# post.is_fulfilled_as_post! by: tom
|
16
|
+
# 或者
|
17
|
+
# post.is_fulfilled_as_post! by: tom, at: Time.now
|
13
18
|
def is_fulfilled_as_post!(by: nil, at: Time.now)
|
14
19
|
raise ArgumentError.new('The by argument is required.') if by.blank?
|
15
20
|
raise ArgumentError.new('The at argument is required.') if at.blank?
|
16
21
|
post_fulfillments.create! fulfiller: by, opened_at: at
|
17
22
|
end
|
18
23
|
|
24
|
+
##
|
25
|
+
# 判断当前岗位在指定时间 at 是否被指定的参与者 by 履行。指定时间缺省为当前时间。如:
|
26
|
+
# post.is_fulfilled_as_post? by: tom
|
27
|
+
# 或者
|
28
|
+
# post.is_fulfilled_as_post? by: tom, at: Time.now
|
19
29
|
def is_fulfilled_as_post?(by: nil, at: Time.now)
|
20
30
|
raise ArgumentError.new('The by argument is required.') if by.blank?
|
21
31
|
raise ArgumentError.new('The at argument is required.') if at.blank?
|
@@ -10,12 +10,22 @@ module Unidom::Accession::Concerns::AsPostFulfiller
|
|
10
10
|
has_many :post_fulfillments, class_name: 'Unidom::Accession::PostFulfillment', as: :fulfiller
|
11
11
|
has_many :fulfilled_posts, through: :post_fulfillments, source: :fulfilled, source_type: 'Unidom::Position::Post'
|
12
12
|
|
13
|
+
##
|
14
|
+
# 让当前参与者在指定时间 at 开始履行岗位 post 。指定时间缺省为当前时间。如:
|
15
|
+
# selected_person.fulfill_post! post
|
16
|
+
# 或者
|
17
|
+
# selected_person.fulfill_post! post, at: Time.now-1.day
|
13
18
|
def fulfill_post!(post, at: Time.now)
|
14
19
|
raise ArgumentError.new('The post argument is required.') if post.blank?
|
15
20
|
raise ArgumentError.new('The at argument is required.' ) if at.blank?
|
16
21
|
post_fulfillments.create! fulfilled: post, opened_at: at
|
17
22
|
end
|
18
23
|
|
24
|
+
##
|
25
|
+
# 判断当前参与者在指定时间 at 是否被履行制定的岗位 post 。指定时间缺省为当前时间。如:
|
26
|
+
# post.fulfill_post? post
|
27
|
+
# 或者
|
28
|
+
# post.fulfill_post? post, at: Time.now
|
19
29
|
def fulfill_post?(post, at: Time.now)
|
20
30
|
raise ArgumentError.new('The post argument is required.') if post.blank?
|
21
31
|
raise ArgumentError.new('The at argument is required.' ) if at.blank?
|
@@ -16,8 +16,12 @@ class Unidom::Accession::PostFulfillment < Unidom::Accession::ApplicationRecord
|
|
16
16
|
scope :part_time, ->(part_time = true) { where part_time: part_time }
|
17
17
|
scope :temporary, ->(temporary = true) { where temporary: temporary }
|
18
18
|
|
19
|
+
##
|
20
|
+
# 将工作岗位 fulfilled 和履行者 fulfiller 在给定的时间 opened_at 关联起来。 opened_at 缺省为当前时间。如:
|
21
|
+
# Unidom::Accession::PostFulfillment.fulfill! fulfilled: post, fulfiller: selected_person
|
19
22
|
def self.fulfill!(fulfilled: nil, fulfiller: nil, opened_at: Time.now)
|
20
|
-
|
23
|
+
assert_present! :fulfilled, fulfilled
|
24
|
+
#raise ArgumentError.new('Argument fulfilled is required.') if fulfilled.blank?
|
21
25
|
raise ArgumentError.new('Argument fulfiller is required.') if fulfiller.blank?
|
22
26
|
raise ArgumentError.new('Argument opened_at is required.') if opened_at.blank?
|
23
27
|
self.create! fulfiller: fulfiller, fulfilled: fulfilled, opened_at: opened_at
|
@@ -6,29 +6,6 @@ describe Unidom::Accession::PostFulfillment, type: :model do
|
|
6
6
|
after :each do
|
7
7
|
end
|
8
8
|
|
9
|
-
=begin
|
10
|
-
context '.validates' do
|
11
|
-
|
12
|
-
model_attributes = { name: 'Tim' }
|
13
|
-
|
14
|
-
it_behaves_like 'validates', model_attributes, :name,
|
15
|
-
{ } => 0,
|
16
|
-
{ name: nil } => 2,
|
17
|
-
{ name: '' } => 2,
|
18
|
-
{ name: 'A' } => 1,
|
19
|
-
{ name: 'AA' } => 0,
|
20
|
-
{ name: 'AAA' } => 0,
|
21
|
-
{ name: '0' } => 1,
|
22
|
-
{ name: '00' } => 0,
|
23
|
-
{ name: '000' } => 0,
|
24
|
-
{ name: 0 } => 1,
|
25
|
-
{ name: 'A'*(described_class.columns_hash['name'].limit-1) } => 0,
|
26
|
-
{ name: 'A'*described_class.columns_hash['name'].limit } => 0,
|
27
|
-
{ name: 'A'*(described_class.columns_hash['name'].limit+1) } => 1
|
28
|
-
|
29
|
-
end
|
30
|
-
=end
|
31
|
-
|
32
9
|
context do
|
33
10
|
|
34
11
|
model_attributes = {
|
@@ -40,6 +17,18 @@ describe Unidom::Accession::PostFulfillment, type: :model do
|
|
40
17
|
|
41
18
|
it_behaves_like 'Unidom::Common::Concerns::ModelExtension', model_attributes
|
42
19
|
|
20
|
+
it_behaves_like 'scope', :part_time, [
|
21
|
+
{ attributes_collection: [ model_attributes ], count_diff: 0, args: [ true ] },
|
22
|
+
{ attributes_collection: [ model_attributes ], count_diff: 1, args: [ false ] },
|
23
|
+
{ attributes_collection: [ model_attributes.merge(part_time: true) ], count_diff: 1, args: [ true ] },
|
24
|
+
{ attributes_collection: [ model_attributes.merge(part_time: true) ], count_diff: 0, args: [ false ] } ]
|
25
|
+
|
26
|
+
it_behaves_like 'scope', :temporary, [
|
27
|
+
{ attributes_collection: [ model_attributes ], count_diff: 0, args: [ true ] },
|
28
|
+
{ attributes_collection: [ model_attributes ], count_diff: 1, args: [ false ] },
|
29
|
+
{ attributes_collection: [ model_attributes.merge(temporary: true) ], count_diff: 1, args: [ true ] },
|
30
|
+
{ attributes_collection: [ model_attributes.merge(temporary: true) ], count_diff: 0, args: [ false ] } ]
|
31
|
+
|
43
32
|
end
|
44
33
|
|
45
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unidom-accession
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Topbit Du
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: unidom-common
|