Skip to content
Snippets Groups Projects
Select Git revision
22 results Searching

aggregator_chainable_spec.rb

Blame
  • aggregator_chainable_spec.rb 6.18 KiB
    require "jsduck/aggregator"
    require "jsduck/source_file"
    require "jsduck/class"
    require "jsduck/relations"
    require "jsduck/return_values"
    
    describe JsDuck::Aggregator do
      def parse(string)
        agr = JsDuck::Aggregator.new
        agr.aggregate(JsDuck::SourceFile.new(string))
        relations = JsDuck::Relations.new(agr.result.map {|doc| JsDuck::Class.new(doc) })
        JsDuck::ReturnValues.auto_detect(relations)
        relations
      end
    
      describe "both @return this and @chainable in method doc" do
        let(:cls) do
          parse(<<-EOS)["MyClass"]
            /** */
            Ext.define("MyClass", {
                /**
                 * @return {MyClass} this The instance itself.
                 * @chainable
                 */
                bar: function() {}
            });
          EOS
        end
    
        it "detects method as chainable" do
          cls[:members][0][:meta][:chainable].should == true
        end
    
        it "keeps the original @return docs" do
          cls[:members][0][:return][:doc].should == "this The instance itself."
        end
      end
    
      describe "simple @chainable in method doc" do
        let(:cls) do
          parse(<<-EOS)["MyClass"]
            /** */
            Ext.define("MyClass", {
                /**
                 * @chainable
                 */
                bar: function() {}
            });
          EOS
        end
    
        it "detects method as chainable" do
          cls[:members][0][:meta][:chainable].should == true
        end
    
        it "adds @return {MyClass} this" do
          cls[:members][0][:return][:type].should == "MyClass"
          cls[:members][0][:return][:doc].should == "this"
        end
      end
    
      describe "an @return {MyClass} this in method doc" do
        let(:cls) do
          parse(<<-EOS)["MyClass"]
            /** */
            Ext.define("MyClass", {
                /**
                 * @return {MyClass} this
                 */
                bar: function() {}