test/lib/railroady/models_diagram_spec.rb in railroady-1.4.0 vs test/lib/railroady/models_diagram_spec.rb in railroady-1.4.1

- old
+ new

@@ -10,11 +10,11 @@ it 'should include concerns if specified' do options = OptionsStruct.new(include_concerns: true) ad = ModelsDiagram.new(options) files = ad.get_files('test/file_fixture/') - files.size.must_equal 4 + files.size.must_equal 5 end it 'should exclude a specific file' do options = OptionsStruct.new(exclude: ['test/file_fixture/app/models/dummy1.rb']) md = ModelsDiagram.new(options) @@ -55,9 +55,45 @@ options = OptionsStruct.new(engine_models: true) md = ModelsDiagram.new(options) engines = [OpenStruct.new(root: 'test/file_fixture/lib')] md.stub(:engines, engines) do md.get_files.must_include('test/file_fixture/lib/app/models/dummy1.rb') + end + end + end + + describe '#extract_class_name' do + describe 'class can be found' do + describe 'module without namespace' do + module AuthorSettings + end + + it 'does not take every models subdirectory as a namespace' do + md = ModelsDiagram.new(OptionsStruct.new) + + md.extract_class_name('test/file_fixture/app/models/concerns/author_settings.rb').must_equal 'AuthorSettings' + end + end + + describe 'module with parent namespace / class' do + class User + module Authentication + end + end + + it 'does not take every models subdirectory as a namespace' do + md = ModelsDiagram.new(OptionsStruct.new) + + md.extract_class_name('test/file_fixture/app/models/concerns/user/authentication.rb').must_equal 'User::Authentication' + end + end + end + + describe 'class cannot be found' do + it 'returns the full class name' do + md = ModelsDiagram.new(OptionsStruct.new) + + md.extract_class_name('test/file_fixture/app/models/concerns/dummy.rb').must_equal 'Concerns::Dummy' end end end end