magicka 0.4.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81717f300e575454157f07d2e37f93b68a43aee24374cc84d49142f3815b26de
4
- data.tar.gz: f50c9807efb97e1fa9719f010c39d261eb6fe9ccf12d3a199c33521b515ea2ae
3
+ metadata.gz: 05ffde0ed491999459ac688704b00c0ce07e2c93ae89aaa75f78a1c6b8acabba
4
+ data.tar.gz: 6d08209c27862a6791917a32e322775bfc801a00dcb666924d7b0b387c92f03b
5
5
  SHA512:
6
- metadata.gz: ede839d74d03176271d66aaf5ac672cdf0774e3be38edcf7306414de16f64fea51f73b3390c184f684c1c9189978bc045d51f8f0a1dc7d5e408432fd7b3863fa
7
- data.tar.gz: e67ed028a79ef8dbfdb1ed0c16e592df1749941429002cc5f83522bb744b16a20fee771004326a853165d25d11beb7376bd7fee5243d4e398556426c256e1fcd
6
+ metadata.gz: 4d2aa6d343fe5104e275dc9257fb838c650f0353406452b217fb17f40978ea4152838c56181300bec3f1da208f28764790e947619f5137426545206c540e5952
7
+ data.tar.gz: 91036aeff9fbefe61eacc3b93005e8f51e9c6cf86ce7cb618e5360ea8059c7ba6df680c4bd5cebf9c57cb3a8154058b63aa1aeb1c362261b4613e4707cf41ca0
@@ -7,8 +7,12 @@ workflows:
7
7
  filters:
8
8
  tags:
9
9
  only: /.*/
10
+ - checks:
11
+ filters:
12
+ tags:
13
+ only: /.*/
10
14
  - build-and-release:
11
- requires: [test]
15
+ requires: [test, checks]
12
16
  filters:
13
17
  tags:
14
18
  only: /\d+\.\d+\.\d+/
@@ -18,7 +22,7 @@ workflows:
18
22
  jobs:
19
23
  test:
20
24
  docker:
21
- - image: darthjee/circleci_rails_gems:0.5.4
25
+ - image: darthjee/circleci_rails_gems:0.6.0
22
26
  environment:
23
27
  PROJECT: magicka
24
28
  steps:
@@ -32,12 +36,22 @@ jobs:
32
36
  - run:
33
37
  name: RSpec
34
38
  command: bundle exec rspec
35
- - run:
36
- name: Rubocop
37
- command: rubocop
38
39
  - run:
39
40
  name: Coverage Test Report
40
41
  command: cc-test-reporter after-build --exit-code $?
42
+ checks:
43
+ docker:
44
+ - image: darthjee/circleci_rails_gems:0.6.0
45
+ environment:
46
+ PROJECT: magicka
47
+ steps:
48
+ - checkout
49
+ - run:
50
+ name: Bundle Install
51
+ command: bundle install
52
+ - run:
53
+ name: Rubocop
54
+ command: rubocop
41
55
  - run:
42
56
  name: Yardstick coverage check
43
57
  command: bundle exec rake verify_measurements
data/README.md CHANGED
@@ -11,7 +11,7 @@ Magicka
11
11
 
12
12
  Yard Documentation
13
13
  -------------------
14
- [https://www.rubydoc.info/gems/magicka/0.4.0](https://www.rubydoc.info/gems/magicka/0.4.0)
14
+ [https://www.rubydoc.info/gems/magicka/0.5.0](https://www.rubydoc.info/gems/magicka/0.5.0)
15
15
 
16
16
  Installation
17
17
  ---------------
@@ -1,3 +1,5 @@
1
1
  ignore:
2
2
  - lib/magicka/version.rb
3
3
  - lib/magicka.rb
4
+ - lib/magicka/aggregator.rb
5
+ - lib/magicka/aggregator/method_builder.rb
@@ -10,12 +10,12 @@ require 'sinclair'
10
10
  #
11
11
  # module holding herlper to render inputs
12
12
  module Magicka
13
- autoload :VERSION, 'magicka/version'
14
- autoload :Button, 'magicka/button'
15
- autoload :Element, 'magicka/element'
16
- autoload :FormElement, 'magicka/form_element'
17
- autoload :Form, 'magicka/form'
18
- autoload :Input, 'magicka/input'
19
- autoload :MethodBuilder, 'magicka/method_builder'
20
- autoload :Select, 'magicka/select'
13
+ autoload :VERSION, 'magicka/version'
14
+ autoload :Aggregator, 'magicka/aggregator'
15
+ autoload :Button, 'magicka/button'
16
+ autoload :Element, 'magicka/element'
17
+ autoload :FormElement, 'magicka/form_element'
18
+ autoload :Form, 'magicka/form'
19
+ autoload :Input, 'magicka/input'
20
+ autoload :Select, 'magicka/select'
21
21
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magicka
4
+ # @api public
5
+ #
6
+ # Class representing an element agregator, representing a model
7
+ class Aggregator
8
+ autoload :MethodBuilder, 'magicka/aggregator/method_builder'
9
+
10
+ class << self
11
+ def with_element(element_class, method_name = nil)
12
+ MethodBuilder
13
+ .new(self, element_class, method_name)
14
+ .prepare
15
+ .build
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magicka
4
+ class Aggregator
5
+ # @api private
6
+ #
7
+ # Class responsible for building an {Aggregator} method
8
+ class MethodBuilder < Sinclair
9
+ def initialize(klass, element_class, method_name = nil)
10
+ super(klass)
11
+
12
+ @element_class = element_class
13
+ @method_name = method_name
14
+ end
15
+
16
+ def prepare
17
+ element_klass = element_class
18
+
19
+ add_method(method_name) do |field, model: self.model, **args|
20
+ element_klass.render(
21
+ renderer: renderer, field: field, model: model, **args
22
+ )
23
+ end
24
+
25
+ self
26
+ end
27
+
28
+ private
29
+
30
+ attr_reader :element_class
31
+
32
+ def method_name
33
+ @method_name ||= element_class
34
+ .name
35
+ .underscore
36
+ .gsub(%r{.*/}, '')
37
+ end
38
+ end
39
+ end
40
+ end
@@ -5,7 +5,8 @@ module Magicka
5
5
  #
6
6
  # Base class for element rendering
7
7
  class Element < Sinclair::Options
8
- autoload :ClassMethods, 'magicka/element/class_methods'
8
+ autoload :ClassMethods, 'magicka/element/class_methods'
9
+ autoload :MethodBuilder, 'magicka/element/method_builder'
9
10
 
10
11
  skip_validation
11
12
 
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Magicka
4
+ class Element
5
+ # @api private
6
+ #
7
+ # class responsible for building methods on {Magicka::Element}
8
+ class MethodBuilder < Sinclair
9
+ # adds a mehtod +#template+
10
+ #
11
+ # The method will always return the template given in the params
12
+ #
13
+ # @param template [String] path to template file
14
+ #
15
+ # @return [Array<Sinclair::MethodDefinition>]
16
+ def add_template(template)
17
+ add_method(:template) do
18
+ template
19
+ end
20
+
21
+ build
22
+ end
23
+
24
+ # adds a mehtod +#template_folder+
25
+ #
26
+ # The method will always return the template folder given in the params
27
+ #
28
+ # @param template_folder [String] path to template folder
29
+ #
30
+ # @return [Array<Sinclair::MethodDefinition>]
31
+ def add_template_folder(folder)
32
+ add_method(:template_folder) do
33
+ folder
34
+ end
35
+
36
+ build
37
+ end
38
+ end
39
+ end
40
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Magicka
4
4
  # Class responsible for controlling one object form
5
- class Form
5
+ class Form < Aggregator
6
6
  attr_reader :model
7
7
 
8
8
  def initialize(renderer, model)
@@ -10,13 +10,8 @@ module Magicka
10
10
  @model = model
11
11
  end
12
12
 
13
- def input(field, model: self.model, **args)
14
- Input.render(renderer: renderer, field: field, model: model, **args)
15
- end
16
-
17
- def select(field, model: self.model, **args)
18
- Select.render(renderer: renderer, field: field, model: model, **args)
19
- end
13
+ with_element(Input)
14
+ with_element(Select)
20
15
 
21
16
  def button(**args)
22
17
  Button.render(renderer: renderer, **args)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Magicka
4
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0'
5
5
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- describe Magicka::MethodBuilder do
5
+ describe Magicka::Element::MethodBuilder do
6
6
  subject(:builder) { described_class.new(klass) }
7
7
 
8
8
  let(:klass) { Class.new }
@@ -35,8 +35,7 @@ describe Magicka::Form do
35
35
  let(:arguments) do
36
36
  {
37
37
  label: label,
38
- placeholder: placeholder,
39
- model: model
38
+ placeholder: placeholder
40
39
  }
41
40
  end
42
41
 
@@ -45,6 +44,24 @@ describe Magicka::Form do
45
44
 
46
45
  expect(renderer).to have_received(:render)
47
46
  end
47
+
48
+ context 'when passing a custom model' do
49
+ let(:locals) do
50
+ {
51
+ field: field,
52
+ label: label,
53
+ ng_errors: 'my_custom_model.errors.field',
54
+ ng_model: 'my_custom_model.field',
55
+ placeholder: placeholder
56
+ }
57
+ end
58
+
59
+ it 'renders an input' do
60
+ form.input(field, model: 'my_custom_model', **arguments)
61
+
62
+ expect(renderer).to have_received(:render)
63
+ end
64
+ end
48
65
  end
49
66
 
50
67
  describe '#select' do
@@ -66,16 +83,33 @@ describe Magicka::Form do
66
83
  let(:arguments) do
67
84
  {
68
85
  label: label,
69
- model: model,
70
86
  options: options
71
87
  }
72
88
  end
73
89
 
74
- it 'renders an input' do
90
+ it 'renders a select' do
75
91
  form.select(field, arguments)
76
92
 
77
93
  expect(renderer).to have_received(:render)
78
94
  end
95
+
96
+ context 'when passing a custom model' do
97
+ let(:locals) do
98
+ {
99
+ field: field,
100
+ label: label,
101
+ ng_errors: 'my_custom_model.errors.field',
102
+ ng_model: 'my_custom_model.field',
103
+ options: options
104
+ }
105
+ end
106
+
107
+ it 'renders a select' do
108
+ form.select(field, model: 'my_custom_model', **arguments)
109
+
110
+ expect(renderer).to have_received(:render)
111
+ end
112
+ end
79
113
  end
80
114
 
81
115
  describe '#button' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magicka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DarthJee
@@ -397,13 +397,15 @@ files:
397
397
  - config/yardstick.yml
398
398
  - docker-compose.yml
399
399
  - lib/magicka.rb
400
+ - lib/magicka/aggregator.rb
401
+ - lib/magicka/aggregator/method_builder.rb
400
402
  - lib/magicka/button.rb
401
403
  - lib/magicka/element.rb
402
404
  - lib/magicka/element/class_methods.rb
405
+ - lib/magicka/element/method_builder.rb
403
406
  - lib/magicka/form.rb
404
407
  - lib/magicka/form_element.rb
405
408
  - lib/magicka/input.rb
406
- - lib/magicka/method_builder.rb
407
409
  - lib/magicka/select.rb
408
410
  - lib/magicka/version.rb
409
411
  - magicka.gemspec
@@ -471,11 +473,11 @@ files:
471
473
  - spec/integration/yard/.keep
472
474
  - spec/lib/magicka/button_spec.rb
473
475
  - spec/lib/magicka/element/class_methods_spec.rb
476
+ - spec/lib/magicka/element/method_builder_spec.rb
474
477
  - spec/lib/magicka/element_spec.rb
475
478
  - spec/lib/magicka/form_element_spec.rb
476
479
  - spec/lib/magicka/form_spec.rb
477
480
  - spec/lib/magicka/input_spec.rb
478
- - spec/lib/magicka/method_builder_spec.rb
479
481
  - spec/lib/magicka/select_spec.rb
480
482
  - spec/spec_helper.rb
481
483
  - spec/support/models/.keep
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Magicka
4
- # @api private
5
- #
6
- # class responsible for building methods on {Magicka::Element}
7
- class MethodBuilder < Sinclair
8
- # adds a mehtod +#template+
9
- #
10
- # The method will always return the template given in the params
11
- #
12
- # @param template [String] path to template file
13
- #
14
- # @return [Array<Sinclair::MethodDefinition>]
15
- def add_template(template)
16
- add_method(:template) do
17
- template
18
- end
19
-
20
- build
21
- end
22
-
23
- # adds a mehtod +#template_folder+
24
- #
25
- # The method will always return the template folder given in the params
26
- #
27
- # @param template_folder [String] path to template folder
28
- #
29
- # @return [Array<Sinclair::MethodDefinition>]
30
- def add_template_folder(folder)
31
- add_method(:template_folder) do
32
- folder
33
- end
34
-
35
- build
36
- end
37
- end
38
- end