magicka 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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