spec/snuffle/source_file_spec.rb in snuffle-0.9.1 vs spec/snuffle/source_file_spec.rb in snuffle-0.10.1

- old
+ new

@@ -1,35 +1,53 @@ require 'spec_helper' require 'pry' describe Snuffle::SourceFile do - let(:program_2) {Snuffle::SourceFile.new(path_to_file: "spec/fixtures/program_2.rb") } - let(:program_3) {Snuffle::SourceFile.new(path_to_file: "spec/fixtures/program_3.rb") } + let(:program_2) { Snuffle::SourceFile.new(path_to_file: "spec/fixtures/program_2.rb") } + let(:program_3) { Snuffle::SourceFile.new(path_to_file: "spec/fixtures/program_3.rb") } + let(:program_4) { Snuffle::SourceFile.new(path_to_file: "spec/fixtures/program_4.rb") } - describe "#object_candidates" do + describe "#cohorts" do it "does not match hash values with non-hash values" do attr_accessor_args = ['city', 'postal_code', 'state'] - values = program_2.summary.object_candidates + values = program_2.summary.cohorts.map(&:values) expect(values.include?(attr_accessor_args)).to be_falsey end it "matches elements with the same type" do args = ['company_name', 'customer_name'] - values = program_3.summary.object_candidates + values = program_3.summary.cohorts.map(&:values) expect(values.include?(args)).to be_truthy end + xit "does not match loose class method calls" do + values = program_4.summary.cohorts.map(&:values) + expect(values.empty?).to be_truthy + end + end + describe "#name_from" do + + let(:program) { Snuffle::SourceFile.new(path_to_file: "spec/fixtures/latent_object_fixture.rb") } + let(:node) { program.send(:ast).children[2].children[1] } + + it "pulls the name of a method" do + expect(program.send(:name_from, node)).to eq('initialize') + end + + end + describe "#class_name" do - let(:top_level) { "require 'something'; class Foo; def bar; puts 'hi'; end; end"} + let(:top_level) { "require 'something'; class Foo; def bar; puts 'hi'; end; end"} let(:namespaced_1) { "require 'something'; class Foo::Bar; def bar; puts 'hi'; end; end"} let(:namespaced_2) { "require 'something'; module Foo; module Bar; class Baz; def bar; puts 'hi'; end; end; end; end"} - let(:source_file) { Snuffle::SourceFile.new } + let(:namespaced_3) { "class Foo; module Bar; class Baz; class << self; end; end; end; end" } + let(:source_file) { Snuffle::SourceFile.new } it "picks up a non-nested class name" do source_file.source = top_level expect(source_file.class_name).to eq("Foo") end @@ -42,9 +60,13 @@ it "picks up a class name inside nested modules" do source_file.source = namespaced_2 expect(source_file.class_name).to eq("Foo::Bar::Baz") end - end + xit "picks up crazily nested names" do + source_file.source = namespaced_3 + expect(source_file.class_name).to eq("Foo::Bar::Baz") + end + end end \ No newline at end of file