external_services 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTMzNjZiMzVmOWQ1ZTkyODNlM2VmYjIxZTEyNzMzMTI3Y2Q1ODJkNg==
4
+ YWNlM2UzYTQxZGE4ZmNiMDVmMTA3ZTc3ZjI3OTc1MjE5MWViYmNiYg==
5
5
  data.tar.gz: !binary |-
6
- ODY1OGRhMDUxM2Q1M2U0ZjNmMGQ4YzJlZDEyODY5ZGM0MDY0M2Y4NA==
6
+ Mjg2YmE2MmIzZDcwYTdmYTY3OGY5NWE1NmZkY2QyM2RkMmFkOWE5OA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZjE5NDU2YTBkMjNhMGFiZjkwZDY1M2E3ZDc1ZDFlMzk2OTc4MjQ5YzA5ZGRi
10
- Njc0M2JmN2RlOTM3ZTc2NjA2NjVmMmQ1OTZkMDQyN2I2ODM0NjFjZjZlZjU3
11
- M2Y3ZmFiNTMxYjUzMjc3ZDQ4YjhhNjhhOTNmNDViNzk4OGM2NTE=
9
+ NTMzOGQzZTdmMmZjZDg0ODY1NzM3MmVlNTliM2Y4ZDk1ZGI5ZDI1ZGM0NDlh
10
+ MGM1NGQ3MmRjYTgwN2RhMmYxM2QwNDVlZDdjZTdiZjhlNTFjNzhhOGQ0ZjNl
11
+ NGIxMTdjZmEzYjdhZTA0NTg3MzhkOGZlODMwZmVmZTI3MjI1ZDM=
12
12
  data.tar.gz: !binary |-
13
- NmVkZDYwMDY3NDRhYjYyOGE2MDU2NDA4YzYxOTRlMDRjMzRkYmQ5YTI1ODEw
14
- ZDY4N2YyNTI4YWVlN2JhYTNkNzM2YzlmOGM4OWEyNzlmMzhlNGJiMTUwZDJi
15
- ZmNjODM0YzU4OGI4ZjQ0YjlmYTgzZDUxODRkYzQ3ZjYwNWQxZDk=
13
+ ZmNmNDE2MTIzMzQ2ZjYzNWUyMTVmODdkMzU0ZGE0OWUyZDFlOTI4MWM3YzE1
14
+ ZjhjNDQwY2ZmNmQ2YzQ4MzMyYzVmZGQzNTY3NmE5YzcwOWFiYzI4MmY3OThi
15
+ MjA4YmQyZTMyYTM1YWM1Nzc4NjM5ZGQ3Mjk5YzUyYTllZjJmOTc=
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
17
- APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
17
+ APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)
18
18
 
19
19
  load 'rails/tasks/engine.rake'
20
20
 
@@ -0,0 +1,5 @@
1
+ en:
2
+ activerecord:
3
+ errors:
4
+ messages:
5
+ external_services_not_synced: "Not all external services are synced"
@@ -88,7 +88,7 @@ module ExternalServices
88
88
  end
89
89
  end
90
90
 
91
- # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
91
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
92
92
  def define_external_service_callbacks(name, options = {})
93
93
  service_assoc = :"#{name}_service"
94
94
  only_api_actions = (options[:only_api_actions] == true)
@@ -101,6 +101,9 @@ module ExternalServices
101
101
  before_save do
102
102
  public_send(:"build_#{service_assoc}") if public_send(service_assoc).blank?
103
103
  end
104
+
105
+ before_update :halt_on_external_services_unsynced
106
+ before_destroy :halt_on_external_services_unsynced
104
107
  end
105
108
 
106
109
  after_save :"#{name}_on_create", if: :id_changed?
@@ -130,8 +133,19 @@ module ExternalServices
130
133
  public_send(service_assoc).on_subject_revive(self) unless only_api_actions
131
134
  end
132
135
  protected :"#{name}_on_revive"
136
+
137
+ protected def halt_on_external_services_unsynced
138
+ unless external_services_synced?
139
+ errors.add :base, :external_services_not_synced
140
+ if ::ActiveRecord::VERSION::MAJOR < 5
141
+ return false
142
+ else
143
+ throw :abort
144
+ end
145
+ end
146
+ end
133
147
  end
134
- # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
148
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
135
149
 
136
150
  include callbacks_module
137
151
  end
@@ -60,7 +60,7 @@ module ExternalServices
60
60
  !connection
61
61
  end
62
62
 
63
- def fake_response_body(method, path, params = {})
63
+ def fake_response_body(method, _path, _params = {})
64
64
  (method == :post ? { 'id' => SecureRandom.hex } : {})
65
65
  end
66
66
 
@@ -1,3 +1,3 @@
1
1
  module ExternalServices
2
- VERSION = '0.1.4'.freeze
2
+ VERSION = '0.1.5'.freeze
3
3
  end
@@ -7,12 +7,11 @@ module ExternalServices
7
7
  class ServiceGenerator < ::Rails::Generators::NamedBase
8
8
  source_root File.expand_path('../templates/services', __FILE__)
9
9
 
10
-
11
10
  class_option(
12
11
  :only_api_actions,
13
12
  type: :boolean,
14
13
  default: false,
15
- desc: "Do not generate service model class"
14
+ desc: 'Do not generate service model class'
16
15
  )
17
16
 
18
17
  desc 'Generates specified model and API classes.'
@@ -5,14 +5,14 @@ module ExternalServices
5
5
 
6
6
  def add_external_service(name)
7
7
  Disabler.add_external_service name
8
-
8
+
9
9
  mod = Module.new do
10
10
  define_method :"describe_#{name}_api" do |object:, **kwargs, &blk|
11
11
  describe_external_service_api(object: object, api_name: name, **kwargs, &blk)
12
12
  end
13
13
  end
14
14
 
15
- self.extend mod
15
+ extend mod
16
16
  end
17
17
  end
18
18
  end
data/lib/rspec/helpers.rb CHANGED
@@ -65,6 +65,9 @@ module ExternalServices
65
65
 
66
66
  if :destroy.in? methods
67
67
  it 'creates action on delete' do
68
+ @api_object.send("#{@id_key}=", SecureRandom.hex)
69
+ @api_object.save
70
+
68
71
  if @api_object.respond_to?(:descendants)
69
72
  @api_object.reload.descendants.each(&:delete)
70
73
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: external_services
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Gnuskov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-03 00:00:00.000000000 Z
11
+ date: 2016-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -78,6 +78,7 @@ files:
78
78
  - app/models/external_services/api_action.rb
79
79
  - app/models/external_services/service.rb
80
80
  - bin/rails
81
+ - config/locales/en.yml
81
82
  - external_services.gemspec
82
83
  - lib/external_services.rb
83
84
  - lib/external_services/active_record.rb