state_machines-activerecord 0.9.0 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +16 -3
  4. data/lib/state_machines/integrations/active_record/locale.rb +12 -9
  5. data/lib/state_machines/integrations/active_record/version.rb +3 -1
  6. data/lib/state_machines/integrations/active_record.rb +71 -109
  7. data/lib/state_machines-activerecord.rb +2 -0
  8. metadata +36 -142
  9. data/test/files/en.yml +0 -5
  10. data/test/files/models/post.rb +0 -11
  11. data/test/integration_test.rb +0 -25
  12. data/test/machine_by_default_test.rb +0 -16
  13. data/test/machine_errors_test.rb +0 -19
  14. data/test/machine_multiple_test.rb +0 -17
  15. data/test/machine_nested_action_test.rb +0 -38
  16. data/test/machine_unmigrated_test.rb +0 -14
  17. data/test/machine_with_aliased_attribute_test.rb +0 -23
  18. data/test/machine_with_callbacks_test.rb +0 -172
  19. data/test/machine_with_column_state_attribute_test.rb +0 -44
  20. data/test/machine_with_complex_pluralization_scopes_test.rb +0 -16
  21. data/test/machine_with_conflicting_predicate_test.rb +0 -18
  22. data/test/machine_with_conflicting_state_name_test.rb +0 -29
  23. data/test/machine_with_custom_attribute_test.rb +0 -21
  24. data/test/machine_with_default_scope_test.rb +0 -18
  25. data/test/machine_with_different_column_default_test.rb +0 -27
  26. data/test/machine_with_different_integer_column_default_test.rb +0 -29
  27. data/test/machine_with_dirty_attribute_and_custom_attributes_during_loopback_test.rb +0 -24
  28. data/test/machine_with_dirty_attribute_and_state_events_test.rb +0 -20
  29. data/test/machine_with_dirty_attributes_and_custom_attribute_test.rb +0 -32
  30. data/test/machine_with_dirty_attributes_during_loopback_test.rb +0 -22
  31. data/test/machine_with_dirty_attributes_test.rb +0 -35
  32. data/test/machine_with_dynamic_initial_state_test.rb +0 -99
  33. data/test/machine_with_event_attributes_on_autosave_test.rb +0 -48
  34. data/test/machine_with_event_attributes_on_custom_action_test.rb +0 -41
  35. data/test/machine_with_event_attributes_on_save_bang_test.rb +0 -82
  36. data/test/machine_with_event_attributes_on_save_test.rb +0 -244
  37. data/test/machine_with_event_attributes_on_validation_test.rb +0 -143
  38. data/test/machine_with_events_test.rb +0 -13
  39. data/test/machine_with_failed_action_test.rb +0 -40
  40. data/test/machine_with_failed_after_callbacks_test.rb +0 -35
  41. data/test/machine_with_failed_before_callbacks_test.rb +0 -36
  42. data/test/machine_with_initialized_state_test.rb +0 -41
  43. data/test/machine_with_internationalization_test.rb +0 -180
  44. data/test/machine_with_loopback_test.rb +0 -22
  45. data/test/machine_with_non_column_state_attribute_defined_test.rb +0 -29
  46. data/test/machine_with_same_column_default_test.rb +0 -26
  47. data/test/machine_with_same_integer_column_default_test.rb +0 -30
  48. data/test/machine_with_scopes_and_joins_test.rb +0 -38
  49. data/test/machine_with_scopes_and_owner_subclass_test.rb +0 -27
  50. data/test/machine_with_scopes_test.rb +0 -70
  51. data/test/machine_with_state_driven_validations_test.rb +0 -30
  52. data/test/machine_with_states_test.rb +0 -13
  53. data/test/machine_with_static_initial_state_test.rb +0 -167
  54. data/test/machine_with_transactions_test.rb +0 -26
  55. data/test/machine_with_validations_and_custom_attribute_test.rb +0 -21
  56. data/test/machine_with_validations_test.rb +0 -47
  57. data/test/machine_without_database_test.rb +0 -20
  58. data/test/machine_without_transactions_test.rb +0 -26
  59. data/test/model_test.rb +0 -12
  60. data/test/test_helper.rb +0 -58
@@ -1,47 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class MachineWithValidationsTest < BaseTestCase
4
- def setup
5
- @model = new_model
6
- @machine = StateMachines::Machine.new(@model)
7
- @machine.state :parked
8
-
9
- @record = @model.new
10
- end
11
-
12
- def test_should_invalidate_using_errors
13
- I18n.backend = I18n::Backend::Simple.new
14
- @record.state = 'parked'
15
-
16
- @machine.invalidate(@record, :state, :invalid_transition, [[:event, 'park']])
17
- assert_equal ['State cannot transition via "park"'], @record.errors.full_messages
18
- end
19
-
20
- def test_should_auto_prefix_custom_attributes_on_invalidation
21
- @machine.invalidate(@record, :event, :invalid)
22
-
23
- assert_equal ['State event is invalid'], @record.errors.full_messages
24
- end
25
-
26
- def test_should_clear_errors_on_reset
27
- @record.state = 'parked'
28
- @record.errors.add(:state, 'is invalid')
29
-
30
- @machine.reset(@record)
31
- assert_equal [], @record.errors.full_messages
32
- end
33
-
34
- def test_should_be_valid_if_state_is_known
35
- @record.state = 'parked'
36
-
37
- assert @record.valid?
38
- end
39
-
40
- def test_should_not_be_valid_if_state_is_unknown
41
- @record.state = 'invalid'
42
-
43
- refute @record.valid?
44
- assert_equal ['State is invalid'], @record.errors.full_messages
45
- end
46
- end
47
-
@@ -1,20 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class MachineWithoutDatabaseTest < BaseTestCase
4
- def setup
5
- @model = new_model(false) do
6
- # Simulate the database not being available entirely
7
- def self.connection
8
- raise ActiveRecord::ConnectionNotEstablished
9
- end
10
-
11
- def self.connected?
12
- false
13
- end
14
- end
15
- end
16
-
17
- def test_should_allow_machine_creation
18
- assert_nothing_raised { StateMachines::Machine.new(@model) }
19
- end
20
- end
@@ -1,26 +0,0 @@
1
- require_relative 'test_helper'
2
-
3
- class MachineWithoutTransactionsTest < BaseTestCase
4
- def setup
5
- @model = new_model
6
- @machine = StateMachines::Machine.new(@model, :use_transactions => false)
7
- end
8
-
9
- def test_should_not_rollback_transaction_if_false
10
- @machine.within_transaction(@model.new) do
11
- @model.create
12
- false
13
- end
14
-
15
- assert_equal 1, @model.count
16
- end
17
-
18
- def test_should_not_rollback_transaction_if_true
19
- @machine.within_transaction(@model.new) do
20
- @model.create
21
- true
22
- end
23
-
24
- assert_equal 1, @model.count
25
- end
26
- end
data/test/model_test.rb DELETED
@@ -1,12 +0,0 @@
1
- require_relative 'test_helper'
2
- require_relative 'files/models/post'
3
-
4
- class ModelTest < ActiveSupport::TestCase
5
- def test_should_have_draft_state_in_defaut_machine
6
- assert_equal 'draft', Post.new.state
7
- end
8
-
9
- def test_should_have_the_correct_integration
10
- assert_equal StateMachines::Integrations::ActiveRecord, StateMachines::Integrations.match(Post)
11
- end
12
- end
data/test/test_helper.rb DELETED
@@ -1,58 +0,0 @@
1
- begin
2
- require 'pry-byebug'
3
- rescue LoadError
4
- end
5
- require 'minitest/reporters'
6
- Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new)
7
- require 'state_machines-activerecord'
8
- require 'minitest/autorun'
9
- require 'securerandom'
10
-
11
- # Establish database connection
12
- ActiveRecord::Base.establish_connection('adapter' => 'sqlite3', 'database' => ':memory:')
13
- ActiveRecord::Base.logger = Logger.new("#{File.dirname(__FILE__)}/../log/active_record.log")
14
- ActiveSupport.test_order = :random
15
-
16
- class BaseTestCase < ActiveSupport::TestCase
17
- protected
18
- # Creates a new ActiveRecord model (and the associated table)
19
- def new_model(create_table = :foo, &block)
20
- name = create_table || :foo
21
- table_name = "#{name}_#{SecureRandom.hex(6)}"
22
-
23
- model = Class.new(ActiveRecord::Base) do
24
- self.table_name = table_name.to_s
25
- connection.create_table(table_name, :force => true) { |t| t.string(:state) } if create_table
26
-
27
- define_method(:abort_from_callback) do
28
- throw :abort
29
- end
30
-
31
- (
32
- class << self;
33
- self;
34
- end).class_eval do
35
- define_method(:name) { "#{name.to_s.capitalize}" }
36
- end
37
- end
38
- model.class_eval(&block) if block_given?
39
- model.reset_column_information if create_table
40
- model
41
- end
42
-
43
- def clear_active_support_dependencies
44
- return unless defined?(ActiveSupport::Dependencies)
45
-
46
- if ActiveSupport::Dependencies.respond_to?(:autoloader=)
47
- ActiveSupport::Dependencies.autoloader ||= stubbed_autoloader
48
- end
49
-
50
- ActiveSupport::Dependencies.clear
51
- end
52
-
53
- def stubbed_autoloader
54
- Object.new.tap do |obj|
55
- obj.define_singleton_method(:reload) {}
56
- end
57
- end
58
- end