tax_generator 0.0.1
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 +7 -0
- data/.gitignore +21 -0
- data/.inch.yml +10 -0
- data/.reek +10 -0
- data/.rspec +1 -0
- data/.rubocop.yml +72 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +154 -0
- data/LICENSE +20 -0
- data/README.md +131 -0
- data/Rakefile +26 -0
- data/bin/tax_generator +7 -0
- data/data/input/.gitignore +25 -0
- data/data/input/destinations.xml +1073 -0
- data/data/input/taxonomy.xml +78 -0
- data/data/output/.gitignore +4 -0
- data/init.rb +1 -0
- data/lib/tax_generator/all.rb +26 -0
- data/lib/tax_generator/application.rb +125 -0
- data/lib/tax_generator/classes/destination.rb +103 -0
- data/lib/tax_generator/classes/file_creator.rb +100 -0
- data/lib/tax_generator/classes/processor.rb +270 -0
- data/lib/tax_generator/classes/taxonomy_tree.rb +97 -0
- data/lib/tax_generator/cli.rb +14 -0
- data/lib/tax_generator/helpers/application_helper.rb +154 -0
- data/lib/tax_generator/version.rb +27 -0
- data/lib/tax_generator.rb +1 -0
- data/spec/lib/tax_generator/application_spec.rb +0 -0
- data/spec/lib/tax_generator/classes/destination_spec.rb +62 -0
- data/spec/lib/tax_generator/classes/file_creator_spec.rb +96 -0
- data/spec/lib/tax_generator/classes/processor_spec.rb +30 -0
- data/spec/lib/tax_generator/classes/taxonomy_tree_spec.rb +0 -0
- data/spec/lib/tax_generator/cli_spec.rb +0 -0
- data/spec/lib/tax_generator/helpers/application_helper_spec.rb +0 -0
- data/spec/spec_helper.rb +60 -0
- data/tax_generator.gemspec +40 -0
- data/templates/static/all.css +586 -0
- data/templates/template.html.erb +91 -0
- metadata +452 -0
@@ -0,0 +1,96 @@
|
|
1
|
+
# encoding:utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
describe TaxGenerator::FileCreator do
|
4
|
+
let(:default_processor) {TaxGenerator::Processor.new}
|
5
|
+
let(:output_folder) {"some_other_path" }
|
6
|
+
let(:destinations_file_path) { "some_path" }
|
7
|
+
let(:destination_xml) { "some_xml" }
|
8
|
+
let(:subject) { TaxGenerator::FileCreator.new }
|
9
|
+
let(:first_destination) { "some destination" }
|
10
|
+
|
11
|
+
let(:fake_node) { FakeNode.new('something') }
|
12
|
+
|
13
|
+
let(:atlas_id_value) { 'some atlas id value' }
|
14
|
+
let(:atlas_id) { AtlasID.new(atlas_id_value) }
|
15
|
+
let(:fake_tilt) {FakeTilt.new}
|
16
|
+
let(:fake_condition) {FakeCelluloidCondition.new}
|
17
|
+
|
18
|
+
let(:job) { { atlas_id: atlas_id_value, taxonomy: fake_node, destination: first_destination, output_folder: output_folder } }
|
19
|
+
before(:each) do
|
20
|
+
destination_xml.stubs(:at_xpath).returns(fake_node)
|
21
|
+
destination_xml.stubs(:xpath).returns([fake_node])
|
22
|
+
subject.stubs(:start_work).returns(true)
|
23
|
+
subject.stubs(:log_message).returns(true)
|
24
|
+
default_processor.stubs(:register_worker_for_job).returns(true)
|
25
|
+
File.stubs(:open).returns(true)
|
26
|
+
Tilt.stubs(:new).returns(fake_tilt)
|
27
|
+
fake_tilt.stubs(:render).returns(true)
|
28
|
+
subject.stubs(:mark_job_completed).returns(true)
|
29
|
+
default_processor.stubs(:condition).returns(fake_condition)
|
30
|
+
default_processor.stubs(:all_workers_finished).returns(false)
|
31
|
+
fake_condition.stubs(:signal).returns(true)
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'checks the job keys' do
|
35
|
+
before(:each) do
|
36
|
+
subject.work(job, default_processor)
|
37
|
+
end
|
38
|
+
|
39
|
+
specify { expect(subject.job).to eq job.stringify_keys }
|
40
|
+
specify { expect(subject.processor).to eq default_processor }
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'processes the job' do
|
44
|
+
before(:each) do
|
45
|
+
subject.process_job(job)
|
46
|
+
end
|
47
|
+
|
48
|
+
specify { expect(subject.job_id).to eq atlas_id_value }
|
49
|
+
specify { expect(subject.destination).to eq first_destination }
|
50
|
+
specify { expect(subject.output_folder).to eq(output_folder) }
|
51
|
+
specify { expect(subject.taxonomy).to eq(fake_node) }
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'gets the template name' do
|
55
|
+
File.expects(:join).with(root, 'templates', 'template.html.erb')
|
56
|
+
subject.template_name
|
57
|
+
end
|
58
|
+
|
59
|
+
context "job related " do
|
60
|
+
|
61
|
+
before(:each) do
|
62
|
+
subject.work(job, default_processor)
|
63
|
+
default_processor.stubs(:register_worker_for_job).returns(true)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'gets start work' do
|
67
|
+
details = {details: fake_node, root: root}
|
68
|
+
Actor.stubs(:current).returns(subject)
|
69
|
+
subject.stubs(:fetch_atlas_details).returns(details)
|
70
|
+
fake_tilt.stubs(:render).with(subject,details).returns(true)
|
71
|
+
subject.start_work
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'mark_job_completed' do
|
75
|
+
default_processor.jobs.expects(:[]).with(subject.job_id).returns(job)
|
76
|
+
job.expects(:[]=).with('status', 'finished')
|
77
|
+
default_processor.expects(:all_workers_finished).returns(false)
|
78
|
+
subject.mark_job_completed
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'mark_job_completed and signals complete' do
|
82
|
+
default_processor.expects(:all_workers_finished).returns(true)
|
83
|
+
fake_condition.stubs(:signal).with('completed')
|
84
|
+
subject.mark_job_completed
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'fetch_atlas_details' do
|
88
|
+
subject.taxonomy.expects(:[]).with(subject.job_id).returns(fake_node)
|
89
|
+
TaxGenerator::Destination.expects(:new).with(first_destination).returns(first_destination)
|
90
|
+
first_destination.stubs(:to_hash).returns({})
|
91
|
+
actual = subject.fetch_atlas_details
|
92
|
+
expect(actual).to eq({details: fake_node, root: root})
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding:utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
describe TaxGenerator::Processor do
|
4
|
+
let(:subject) {TaxGenerator::Processor.new}
|
5
|
+
|
6
|
+
# it 'parses the xml' do
|
7
|
+
# subject.expects(:nokogiri_xml).with(destinations_file_path).returns(destination_xml)
|
8
|
+
# actual = subject.destinations
|
9
|
+
# expect(actual).to eq destination_xml
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
# it 'generates the files with 0' do
|
13
|
+
# subject.expects(:create_file).with(0, taxonomy, nil).returns(true)
|
14
|
+
# subject.generate_files(taxonomy)
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# it 'searches the destinations' do
|
18
|
+
# subject.destinations.expects(:xpath).with('//destination').returns([])
|
19
|
+
# subject.generate_files(taxonomy)
|
20
|
+
# end
|
21
|
+
#
|
22
|
+
# it 'tries to create all the files for all destinations' do
|
23
|
+
# destination_xml.xpath('//destination').each do |destination|
|
24
|
+
# destination.expects(:attributes).returns('atlas_id' => atlas_id)
|
25
|
+
# subject.expects(:create_file).with(atlas_id.value, taxonomy, destination).returns(true)
|
26
|
+
# end
|
27
|
+
# subject.generate_files(taxonomy)
|
28
|
+
# end
|
29
|
+
|
30
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
# Configure Rails Envinronment
|
2
|
+
ENV['RAILS_ENV'] = 'test'
|
3
|
+
|
4
|
+
require 'simplecov'
|
5
|
+
require 'simplecov-summary'
|
6
|
+
|
7
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(SimpleCov::Formatter::HTMLFormatter)
|
8
|
+
|
9
|
+
SimpleCov.start 'rails' do
|
10
|
+
add_filter 'spec'
|
11
|
+
|
12
|
+
at_exit {}
|
13
|
+
end
|
14
|
+
|
15
|
+
# fake class to use for elements that need atlas id as attribute
|
16
|
+
AtlasID = Struct.new(:value)
|
17
|
+
|
18
|
+
# fake class to use for elements that need atlas id as attribute
|
19
|
+
FakeNode = Struct.new(:value)
|
20
|
+
|
21
|
+
#fake class for tilt
|
22
|
+
class FakeTilt
|
23
|
+
|
24
|
+
def render(*args) end
|
25
|
+
end
|
26
|
+
|
27
|
+
require 'bundler/setup'
|
28
|
+
require 'tax_generator'
|
29
|
+
require_relative '../lib/tax_generator/helpers/application_helper'
|
30
|
+
require 'rspec'
|
31
|
+
# fake class for actors
|
32
|
+
class Actor
|
33
|
+
def self.current
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class FakeCelluloidCondition
|
38
|
+
|
39
|
+
def signal
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
RSpec.configure do |config|
|
44
|
+
require 'rspec/expectations'
|
45
|
+
config.include RSpec::Matchers
|
46
|
+
config.include TaxGenerator::ApplicationHelper
|
47
|
+
|
48
|
+
config.mock_with :mocha
|
49
|
+
|
50
|
+
|
51
|
+
config.after(:suite) do
|
52
|
+
if SimpleCov.running
|
53
|
+
SimpleCov::Formatter::HTMLFormatter.new.format(SimpleCov.result)
|
54
|
+
|
55
|
+
SimpleCov::Formatter::SummaryFormatter.new.format(SimpleCov.result)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
Celluloid.logger = nil
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path('../lib/tax_generator/version', __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'tax_generator'
|
5
|
+
s.version = TaxGenerator.gem_version
|
6
|
+
s.platform = Gem::Platform::RUBY
|
7
|
+
s.description = 'Tax generator is a simple XML processor and generator of HTMl files and uses celluloid to generate files in asyncronous way'
|
8
|
+
s.email = 'raoul_ice@yahoo.com'
|
9
|
+
s.homepage = 'http://github.com/bogdanRada/tax_generator/'
|
10
|
+
s.summary = 'Tax generator is a simple XML processor and generator of HTMl files and generates files asynchronously'
|
11
|
+
s.authors = ['bogdanRada']
|
12
|
+
s.date = Date.today
|
13
|
+
|
14
|
+
s.licenses = ['MIT']
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = s.files.grep(/^(spec)/)
|
17
|
+
s.require_paths = ['lib']
|
18
|
+
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
|
20
|
+
s.add_runtime_dependency 'nokogiri', '~> 1.6', '>= 1.6.7'
|
21
|
+
s.add_runtime_dependency 'celluloid', '~> 0.16', '~> 0.16.0'
|
22
|
+
s.add_runtime_dependency 'celluloid-pmap', '~> 0.2', '~> 0.2.2'
|
23
|
+
s.add_runtime_dependency 'slop', '~> 4.2', '>= 4.2.1'
|
24
|
+
s.add_runtime_dependency 'activesupport', '~> 4.2', '>= 4.2.5'
|
25
|
+
s.add_runtime_dependency 'rubytree', '~> 0.9', '>= 0.9.6'
|
26
|
+
s.add_runtime_dependency 'tilt', '~> 1.4', '>= 1.4.1'
|
27
|
+
|
28
|
+
s.add_development_dependency 'rake', '~> 10.4', '>= 10.4.2'
|
29
|
+
s.add_development_dependency 'rspec', '~> 3.3', '>= 3.3'
|
30
|
+
s.add_development_dependency 'simplecov', '~> 0.10', '>= 0.10'
|
31
|
+
s.add_development_dependency 'simplecov-summary', '~> 0.0.4', '>= 0.0.4'
|
32
|
+
s.add_development_dependency 'mocha', '~> 1.1', '>= 1.1'
|
33
|
+
|
34
|
+
s.add_development_dependency 'rubocop', '~> 0.33', '>= 0.33'
|
35
|
+
s.add_development_dependency 'reek', '~> 3.7', '>= 3.7'
|
36
|
+
s.add_development_dependency 'yard', '~> 0.8', '>= 0.8.7'
|
37
|
+
s.add_development_dependency 'yard-rspec', '~> 0.1', '>= 0.1'
|
38
|
+
s.add_development_dependency 'redcarpet', '~> 3.3', '>= 3.3'
|
39
|
+
s.add_development_dependency 'github-markup', '~> 1.3', '>= 1.3.3'
|
40
|
+
end
|