spec/inflector_spec.rb in command_kit-0.1.0 vs spec/inflector_spec.rb in command_kit-0.2.0

- old
+ new

@@ -26,38 +26,86 @@ expect(subject.demodularize(:"Foo::Bar")).to eq('Bar') end end end + ascii = (0..255).map(&:chr) + alpha = ('a'..'z').to_a + ('A'..'Z').to_a + numeric = ('0'..'9').to_a + describe ".underscore" do it "must convert CamelCase to camel_case" do expect(subject.underscore('CamelCase')).to eq('camel_case') end it "must convert camelCase to camel_case" do expect(subject.underscore('camelCase')).to eq('camel_case') end - it "must convert Camel to camel" do - expect(subject.underscore('Camel')).to eq('camel') + it "must convert Camelcase to camelcase" do + expect(subject.underscore('Camelcase')).to eq('camelcase') end - it "must convert CAMEL to camel" do - expect(subject.underscore('CAMEL')).to eq('camel') + it "must convert CAMELCASE to camelcase" do + expect(subject.underscore('CAMELCASE')).to eq('camelcase') end - context "when given a String containing '/' characters" do - it "must replace dashes with underscores" do - expect(subject.underscore('foo-bar')).to eq('foo_bar') - end + it "must convert CAMELCase to camel_case" do + expect(subject.underscore('CAMELCase')).to eq('camel_case') end + it "must convert CamelCASE to camel_case" do + expect(subject.underscore('CAMELCase')).to eq('camel_case') + end + + it "must convert FooBARBaz to foo_bar_baz" do + expect(subject.underscore('FooBARBaz')).to eq('foo_bar_baz') + end + + it "must convert foo_bar_baz to foo_bar_baz" do + expect(subject.underscore('foo_bar_baz')).to eq('foo_bar_baz') + end + + it "must convert foo___bar___baz to foo___bar___baz" do + expect(subject.underscore('foo___bar___baz')).to eq('foo___bar___baz') + end + + it "must convert foo-bar-baz to foo_bar_baz" do + expect(subject.underscore('foo-bar-baz')).to eq('foo_bar_baz') + end + + it "must convert foo---bar---baz to foo___bar___baz" do + expect(subject.underscore('foo---bar---baz')).to eq('foo___bar___baz') + end + + it "must convert foo_BAR_baz to foo_bar_baz" do + expect(subject.underscore('foo_BAR_baz')).to eq('foo_bar_baz') + end + + it "must convert foo-BAR-baz to foo_bar_baz" do + expect(subject.underscore('foo-BAR-baz')).to eq('foo_bar_baz') + end + context "when given a non-String" do it "must convert it to a String" do expect(subject.underscore(:CamelCase)).to eq('camel_case') end end + + separators = %w[_ -] + + (ascii - alpha - numeric - separators).each do |char| + context "when the given String contains a #{char.inspect} character" do + let(:string) { "Foo#{char}Bar" } + + it do + expect { + subject.underscore(string) + }.to raise_error(ArgumentError,"cannot convert string to underscored: #{string.inspect}") + end + end + end end describe ".dasherize" do it "must replace all underscores with dashes" do expect(subject.dasherize("foo_bar")).to eq('foo-bar') @@ -96,9 +144,23 @@ end context "when given a non-String" do it "must convert it to a String" do expect(subject.camelize(:foo_bar)).to eq('FooBar') + end + end + + separators = %w[_ - /] + + (ascii - alpha - numeric - separators).each do |char| + context "when the given String contains a #{char.inspect} character" do + let(:string) { "foo#{char}bar" } + + it do + expect { + subject.camelize(string) + }.to raise_error(ArgumentError,"cannot convert string to CamelCase: #{string.inspect}") + end end end end end