File tree Expand file tree Collapse file tree 3 files changed +57
-0
lines changed Expand file tree Collapse file tree 3 files changed +57
-0
lines changed Original file line number Diff line number Diff line change
1
+ # frozen_string_literal: true
2
+
3
+ module MoneyRails
4
+ module ActiveJob
5
+ class MoneySerializer < ::ActiveJob ::Serializers ::ObjectSerializer
6
+ def serialize? ( argument )
7
+ argument . is_a? ( Money )
8
+ end
9
+
10
+ def serialize ( money )
11
+ super ( "cents" => money . cents , "currency" => money . currency . to_s )
12
+ end
13
+
14
+ def deserialize ( hash )
15
+ Money . new ( hash [ "cents" ] , hash [ "currency" ] )
16
+ end
17
+ end
18
+ end
19
+ end
Original file line number Diff line number Diff line change @@ -56,6 +56,17 @@ def self.init
56
56
require 'money-rails/helpers/action_view_extension'
57
57
::ActionView ::Base . send :include , MoneyRails ::ActionViewExtension
58
58
end
59
+
60
+ # For ActiveSupport
61
+ ActiveSupport . on_load ( :active_job ) do |v |
62
+ if defined? ( ::ActiveJob ::Serializers )
63
+ require 'money-rails/active_job/money_serializer'
64
+ Rails . application . config . active_job . tap do |config |
65
+ config . custom_serializers ||= [ ]
66
+ config . custom_serializers << MoneyRails ::ActiveJob ::MoneySerializer
67
+ end
68
+ end
69
+ end
59
70
end
60
71
end
61
72
end
Original file line number Diff line number Diff line change
1
+ require 'spec_helper'
2
+
3
+ if defined? ( ::ActiveJob ::Serializers )
4
+ describe MoneyRails ::ActiveJob ::MoneySerializer do
5
+ let ( :money ) { Money . new ( 1_00 , "EUR" ) }
6
+ let ( :serialized_money ) do
7
+ {
8
+ "_aj_serialized" => "MoneyRails::ActiveJob::MoneySerializer" ,
9
+ "cents" => 1_00 ,
10
+ "currency" => "EUR" ,
11
+ }
12
+ end
13
+
14
+ describe "#serialize?" do
15
+ it { expect ( described_class . serialize? ( money ) ) . to be_truthy }
16
+ it { expect ( described_class . serialize? ( 1_00 ) ) . not_to be_truthy }
17
+ end
18
+
19
+ describe "#serialize" do
20
+ it { expect ( described_class . serialize ( money ) ) . to eq ( serialized_money ) }
21
+ end
22
+
23
+ describe "#deserialize" do
24
+ it { expect ( described_class . deserialize ( serialized_money ) ) . to eq ( money ) }
25
+ end
26
+ end
27
+ end
You can’t perform that action at this time.
0 commit comments