spec/lib/magicka/aggregator_spec.rb in magicka-1.0.0 vs spec/lib/magicka/aggregator_spec.rb in magicka-1.1.0

- old
+ new

@@ -9,230 +9,9 @@ let(:model) { :my_model } let(:renderer) { instance_double('renderer') } let(:template) { 'templates/forms/input' } let(:locals) { {} } - describe '.type' do - let(:type) { %w[form display other].sample } - - it 'sets aggregator type' do - expect { aggregator_class.type(type) } - .to change(aggregator_class, :type) - .from(nil).to(type.to_sym) - end - - context 'when type has not been set' do - let(:aggregator_class) do - Class.new(described_class) do - def self.name - 'Magicka::MyClass' - end - end - end - - it 'Uses class name as type' do - expect(aggregator_class.type) - .to eq(:my_class) - end - end - end - - describe '.with_element' do - context 'when seeting element class only' do - it do - expect { aggregator_class.with_element(Magicka::Input) } - .to add_method(:input) - .to(aggregator) - end - - context 'when built method is called' do - let(:template) { 'templates/forms/input' } - let(:field) { :field } - let(:label) { 'Label' } - let(:placeholder) { 'Value' } - - let(:locals) do - { - field: field, - label: label, - ng_errors: 'my_model.errors.field', - ng_model: 'my_model.field', - placeholder: placeholder - } - end - - let(:arguments) do - { - label: label, - placeholder: placeholder - } - end - - before do - aggregator_class.with_element(Magicka::Input) - - allow(renderer) - .to receive(:render) - .with(partial: template, locals: locals) - end - - it 'renders an input' do - aggregator.input(field, **arguments) - - expect(renderer).to have_received(:render) - end - - context 'when passing a custom model' do - let(:locals) do - { - field: field, - label: label, - ng_errors: 'my_custom_model.errors.field', - ng_model: 'my_custom_model.field', - placeholder: placeholder - } - end - - it 'renders an input' do - aggregator.input(field, model: 'my_custom_model', **arguments) - - expect(renderer).to have_received(:render) - end - end - end - end - - context 'when seeting element class and method' do - it do - expect { aggregator_class.with_element(Magicka::Input, :my_input) } - .to add_method(:my_input) - .to(aggregator) - end - - context 'when built method is called' do - let(:template) { 'templates/forms/input' } - let(:field) { :field } - let(:label) { 'Label' } - let(:placeholder) { 'Value' } - - let(:locals) do - { - field: field, - label: label, - ng_errors: 'my_model.errors.field', - ng_model: 'my_model.field', - placeholder: placeholder - } - end - - let(:arguments) do - { - label: label, - placeholder: placeholder - } - end - - before do - aggregator_class.with_element(Magicka::Input, :my_input) - - allow(renderer) - .to receive(:render) - .with(partial: template, locals: locals) - end - - it 'renders an input' do - aggregator.my_input(field, **arguments) - - expect(renderer).to have_received(:render) - end - - context 'when passing a custom model' do - let(:locals) do - { - field: field, - label: label, - ng_errors: 'my_custom_model.errors.field', - ng_model: 'my_custom_model.field', - placeholder: placeholder - } - end - - it 'renders an input' do - aggregator.my_input(field, model: 'my_custom_model', **arguments) - - expect(renderer).to have_received(:render) - end - end - end - end - - context 'when seeting element class and template' do - it do - expect do - aggregator_class.with_element(Magicka::Input, template: template) - end - .to add_method(:input) - .to(aggregator) - end - - context 'when built method is called' do - let(:template) { 'my_templates/my_input' } - let(:field) { :field } - let(:label) { 'Label' } - let(:placeholder) { 'Value' } - - let(:locals) do - { - field: field, - label: label, - ng_errors: 'my_model.errors.field', - ng_model: 'my_model.field', - placeholder: placeholder - } - end - - let(:arguments) do - { - label: label, - placeholder: placeholder - } - end - - before do - aggregator_class.with_element(Magicka::Input, template: template) - - allow(renderer) - .to receive(:render) - .with(partial: template, locals: locals) - end - - it 'renders an input' do - aggregator.input(field, **arguments) - - expect(renderer).to have_received(:render) - end - - context 'when passing a custom model' do - let(:locals) do - { - field: field, - label: label, - ng_errors: 'my_custom_model.errors.field', - ng_model: 'my_custom_model.field', - placeholder: placeholder - } - end - - it 'renders an input' do - aggregator.input(field, model: 'my_custom_model', **arguments) - - expect(renderer).to have_received(:render) - end - end - end - end - end - describe '#with_model' do let(:expected_aggregator) do aggregator_class.new(renderer, 'my_model.inner') end