magicka 1.0.0 → 1.1.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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -0
  3. data/README.md +3 -3
  4. data/config/check_specs.yml +0 -2
  5. data/config/yardstick.yml +8 -2
  6. data/lib/magicka/aggregator/method_builder.rb +35 -28
  7. data/lib/magicka/aggregator.rb +16 -8
  8. data/lib/magicka/display.rb +1 -1
  9. data/lib/magicka/element/class_methods.rb +2 -0
  10. data/lib/magicka/element.rb +4 -2
  11. data/lib/magicka/helper/aggregator_options.rb +64 -0
  12. data/lib/magicka/helper/class_methods.rb +10 -2
  13. data/lib/magicka/helper/method_builder.rb +10 -6
  14. data/lib/magicka/helper.rb +12 -6
  15. data/lib/magicka/version.rb +1 -1
  16. data/magicka.gemspec +1 -1
  17. data/spec/dummy/app/controllers/application_controller.rb +1 -0
  18. data/spec/dummy/app/controllers/documents_controller.rb +9 -0
  19. data/spec/dummy/app/models/document.rb +5 -0
  20. data/spec/dummy/app/models/magicka/data_entry.rb +7 -0
  21. data/spec/dummy/app/models/magicka/data_table.rb +6 -0
  22. data/spec/dummy/app/views/documents/show.html.erb +6 -0
  23. data/spec/dummy/app/views/templates/display/_data_entry.html.erb +2 -0
  24. data/spec/dummy/config/environments/development.rb +1 -0
  25. data/spec/dummy/config/initializers/magicka.rb +7 -0
  26. data/spec/dummy/config/routes.rb +1 -0
  27. data/spec/dummy/db/schema.rb +5 -0
  28. data/spec/integration/yard/magicka/helper_spec.rb +33 -0
  29. data/spec/lib/magicka/aggregator/class_methods_spec.rb +352 -0
  30. data/spec/lib/magicka/aggregator/method_builder_spec.rb +29 -0
  31. data/spec/lib/magicka/aggregator_spec.rb +0 -221
  32. data/spec/lib/magicka/helper/aggregator_options_spec.rb +99 -0
  33. data/spec/lib/magicka/helper/class_methods_spec.rb +101 -0
  34. data/spec/lib/magicka/helper_spec.rb +2 -18
  35. data/spec/support/factories/document.rb +7 -0
  36. data/spec/support/factory_bot.rb +7 -0
  37. data/spec/support/models/custom_aggregator.rb +12 -0
  38. data/spec/support/models/my_element.rb +6 -0
  39. metadata +21 -4
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Magicka::Helper::ClassMethods do
6
+ subject(:object) { klass.new }
7
+
8
+ let(:model) { Object.new }
9
+
10
+ let(:helper_class) { Magicka::Helper }
11
+ let(:klass) do
12
+ Class.new do
13
+ include Magicka::Helper
14
+ end
15
+ end
16
+
17
+ describe '#with' do
18
+ let(:aggregator_class) do
19
+ Class.new(Magicka::Aggregator) do
20
+ def self.name
21
+ 'Magicka::MyClass'
22
+ end
23
+ end
24
+ end
25
+
26
+ context 'when passing a class' do
27
+ it do
28
+ expect { helper_class.with(aggregator_class) }
29
+ .to add_method('magicka_my_class')
30
+ .to(object)
31
+ end
32
+
33
+ context 'when the method is called' do
34
+ before { helper_class.with(aggregator_class) }
35
+
36
+ it do
37
+ object.magicka_my_class(model) do |aggregator|
38
+ expect(aggregator).to be_a(aggregator_class)
39
+ end
40
+ end
41
+ end
42
+
43
+ context 'when an element is added in the block' do
44
+ before do
45
+ helper_class.with(aggregator_class) do
46
+ with_element(Magicka::Input, :my_input)
47
+ end
48
+ end
49
+
50
+ it do
51
+ object.magicka_my_class(model) do |aggregator|
52
+ expect(aggregator).to respond_to(:my_input)
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ context 'when passing a string as agregator' do
59
+ let(:aggregator_name) { :Test1Aggregator }
60
+ let(:aggregator_class_name) { "Magicka::#{aggregator_name}" }
61
+
62
+ it do
63
+ expect { helper_class.with(aggregator_class_name, :test1_aggregator) }
64
+ .to add_method('magicka_test1_aggregator')
65
+ .to(object)
66
+ end
67
+
68
+ context 'when the method is called' do
69
+ before do
70
+ helper_class.with(aggregator_class_name, :test1_aggregator)
71
+
72
+ Magicka.const_set(aggregator_name, aggregator_class)
73
+ end
74
+
75
+ it do
76
+ object.magicka_test1_aggregator(model) do |aggregator|
77
+ expect(aggregator).to be_a(aggregator_class)
78
+ end
79
+ end
80
+ end
81
+
82
+ context 'when an element is added in the block' do
83
+ let(:aggregator_name) { :Test2Aggregator }
84
+
85
+ before do
86
+ helper_class.with(aggregator_class_name, :test2_aggregator) do
87
+ with_element(Magicka::Input, :my_input)
88
+ end
89
+
90
+ Magicka.const_set(aggregator_name, aggregator_class)
91
+ end
92
+
93
+ it do
94
+ object.magicka_test2_aggregator(model) do |aggregator|
95
+ expect(aggregator).to respond_to(:my_input)
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -5,30 +5,14 @@ require 'spec_helper'
5
5
  describe Magicka::Helper do
6
6
  subject(:object) { klass.new }
7
7
 
8
+ let(:model) { Object.new }
9
+
8
10
  let(:klass) do
9
11
  Class.new do
10
12
  include Magicka::Helper
11
13
  end
12
14
  end
13
15
 
14
- let(:model) { 'model' }
15
-
16
- describe '.with' do
17
- let(:aggregator_class) do
18
- Class.new(Magicka::Aggregator) do
19
- def self.name
20
- 'Magicka::MyClass'
21
- end
22
- end
23
- end
24
-
25
- it do
26
- expect { described_class.with(aggregator_class) }
27
- .to add_method('magicka_my_class')
28
- .to(object)
29
- end
30
- end
31
-
32
16
  describe '#magicka_display' do
33
17
  it do
34
18
  object.magicka_display(model) do |display|
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :document, class: '::Document' do
5
+ sequence(:name) { |n| "Name-#{n}" }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.configure do |config|
4
+ config.include FactoryBot::Syntax::Methods
5
+ end
6
+
7
+ FactoryBot.find_definitions
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magicka
4
+ class CustomAggregator < Aggregator
5
+ with_element(Input)
6
+ with_element(Select)
7
+
8
+ def button(**args)
9
+ Button.render(renderer: renderer, **args)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magicka
4
+ class MyElement < Element
5
+ end
6
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magicka
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DarthJee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-13 00:00:00.000000000 Z
11
+ date: 2023-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.0
33
+ version: 2.0.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.0
40
+ version: 2.0.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: actionpack
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -436,6 +436,7 @@ files:
436
436
  - lib/magicka/form.rb
437
437
  - lib/magicka/form_element.rb
438
438
  - lib/magicka/helper.rb
439
+ - lib/magicka/helper/aggregator_options.rb
439
440
  - lib/magicka/helper/class_methods.rb
440
441
  - lib/magicka/helper/method_builder.rb
441
442
  - lib/magicka/input.rb
@@ -456,14 +457,20 @@ files:
456
457
  - spec/dummy/app/channels/application_cable/connection.rb
457
458
  - spec/dummy/app/controllers/application_controller.rb
458
459
  - spec/dummy/app/controllers/concerns/.keep
460
+ - spec/dummy/app/controllers/documents_controller.rb
459
461
  - spec/dummy/app/helpers/application_helper.rb
460
462
  - spec/dummy/app/jobs/application_job.rb
461
463
  - spec/dummy/app/mailers/application_mailer.rb
462
464
  - spec/dummy/app/models/application_record.rb
463
465
  - spec/dummy/app/models/concerns/.keep
466
+ - spec/dummy/app/models/document.rb
467
+ - spec/dummy/app/models/magicka/data_entry.rb
468
+ - spec/dummy/app/models/magicka/data_table.rb
469
+ - spec/dummy/app/views/documents/show.html.erb
464
470
  - spec/dummy/app/views/layouts/application.html.erb
465
471
  - spec/dummy/app/views/layouts/mailer.html.erb
466
472
  - spec/dummy/app/views/layouts/mailer.text.erb
473
+ - spec/dummy/app/views/templates/display/_data_entry.html.erb
467
474
  - spec/dummy/bin/bundle
468
475
  - spec/dummy/bin/rails
469
476
  - spec/dummy/bin/rake
@@ -486,6 +493,7 @@ files:
486
493
  - spec/dummy/config/initializers/cookies_serializer.rb
487
494
  - spec/dummy/config/initializers/filter_parameter_logging.rb
488
495
  - spec/dummy/config/initializers/inflections.rb
496
+ - spec/dummy/config/initializers/magicka.rb
489
497
  - spec/dummy/config/initializers/mime_types.rb
490
498
  - spec/dummy/config/initializers/wrap_parameters.rb
491
499
  - spec/dummy/config/locales/en.yml
@@ -505,6 +513,9 @@ files:
505
513
  - spec/dummy/storage/.keep
506
514
  - spec/integration/readme/.keep
507
515
  - spec/integration/yard/.keep
516
+ - spec/integration/yard/magicka/helper_spec.rb
517
+ - spec/lib/magicka/aggregator/class_methods_spec.rb
518
+ - spec/lib/magicka/aggregator/method_builder_spec.rb
508
519
  - spec/lib/magicka/aggregator_spec.rb
509
520
  - spec/lib/magicka/button_spec.rb
510
521
  - spec/lib/magicka/display_spec.rb
@@ -513,12 +524,18 @@ files:
513
524
  - spec/lib/magicka/element_spec.rb
514
525
  - spec/lib/magicka/form_element_spec.rb
515
526
  - spec/lib/magicka/form_spec.rb
527
+ - spec/lib/magicka/helper/aggregator_options_spec.rb
528
+ - spec/lib/magicka/helper/class_methods_spec.rb
516
529
  - spec/lib/magicka/helper_spec.rb
517
530
  - spec/lib/magicka/input_spec.rb
518
531
  - spec/lib/magicka/select_spec.rb
519
532
  - spec/lib/magicka/text_spec.rb
520
533
  - spec/spec_helper.rb
534
+ - spec/support/factories/document.rb
535
+ - spec/support/factory_bot.rb
521
536
  - spec/support/models/.keep
537
+ - spec/support/models/custom_aggregator.rb
538
+ - spec/support/models/my_element.rb
522
539
  - spec/support/shared_examples/.keep
523
540
  homepage: https://github.com/darthjee/magicka
524
541
  licenses: []