spec/moblues_spec.rb in moblues-0.1.0 vs spec/moblues_spec.rb in moblues-0.2.0
- old
+ new
@@ -3,30 +3,64 @@
describe Moblues do
subject { described_class }
describe '#generate' do
- let(:options) { %w{--model=model/path --human=human/path --machine=machine/path} }
-
let(:model) { 'model/path' }
- let(:human) { 'human/path' }
- let(:machine) { 'machine/path' }
+ let(:human_dir) { 'human/path' }
+ let(:machine_dir) { 'machine/path' }
+ let(:human) { nil }
+ let(:machine) { nil }
+ let(:params) { { human_dir: human_dir, machine_dir: machine_dir, human: human, machine: machine} }
+
let(:model_reader) { double(Moblues::Reader::Model) }
- let(:model_generator) { double(Moblues::Generator::Model) }
+ let(:model_generator) { double(Moblues::Generator::Base::Model) }
let(:entities) { [build(:entity)] }
before do
allow(Moblues::Reader::Model).to receive(:new) { model_reader }
- allow(Moblues::Generator::Model).to receive(:new) { model_generator }
+ allow(Moblues::Generator::Base::Model).to receive(:new).with(params) { model_generator }
end
- it 'created the directories reads the model and generates the files' do
- expect(Dir).to receive(:mkdir).with('human/path').once
- expect(Dir).to receive(:mkdir).with('machine/path').once
- expect(model_reader).to receive(:model).with('model/path').once { entities }
- expect(model_generator).to receive(:generate).with(entities).once
+ shared_examples_for 'generate' do |lang|
+ it 'creates the directories reads the model and generates the files' do
+ expect(Dir).to receive(:mkdir).with('human/path').once
+ expect(Dir).to receive(:mkdir).with('machine/path').once
+ expect(model_reader).to receive(:model).with('model/path').once { entities }
+ expect(model_generator).to receive(:generate).with(entities).once
- subject.generate(model, human, machine)
+ subject.generate(model, human_dir, machine_dir, lang)
+ end
+ end
+
+ context 'when lang is swift' do
+ let(:human) { double(Moblues::Generator::Swift::Human) }
+ let(:machine) { double(Moblues::Generator::Swift::Machine) }
+
+ before do
+ allow(Moblues::Generator::Swift::Human).to receive(:new) { human }
+ allow(Moblues::Generator::Swift::Machine).to receive(:new) { machine }
+ end
+
+ it_behaves_like 'generate', :swift
+ end
+
+ context 'when lang is objc' do
+ let(:human) { double(Moblues::Generator::Objc::Human) }
+ let(:machine) { double(Moblues::Generator::Objc::Machine) }
+
+ before do
+ allow(Moblues::Generator::Objc::Human).to receive(:new) { human }
+ allow(Moblues::Generator::Objc::Machine).to receive(:new) { machine }
+ end
+
+ it_behaves_like 'generate', :objc
+ end
+
+ context 'when lang is unknown' do
+ it 'raises an error' do
+ expect { subject.generate(model, human_dir, machine_dir, :unknown) }.to raise_exception
+ end
end
end
end