<commit_before>require File.dirname(__FILE__) + '/../spec_helper'

describe CalendarDateSelect::FormHelpers do
  include ActionView::Helpers::FormHelper
  include ActionView::Helpers::JavaScriptHelper
  include ActionView::Helpers::AssetTagHelper
  include ActionView::Helpers::TagHelper
  include ActionView::Helpers::FormTagHelper

  include CalendarDateSelect::FormHelpers

  before(:each) do
    @controller = ActionController::Base.new
    @request = OpenStruct.new
    @controller.request = @request

    @model = OpenStruct.new
  end

  describe "mixed mode" do
    it "should not output a time when the value is a Date" do
      @model.start_datetime = Date.parse("January 2, 2007")
      output = calendar_date_select(:model, :start_datetime, :time => "mixed")
      output.should_not match(/12:00 AM/)
    end

    it "should output a time when the value is a Time" do
      @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
      output = calendar_date_select(:model, :start_datetime, :time => "mixed")
      output.should match(/12:00 AM/)
    end
  end

  it "should render a time when time is passed as 'true'" do
    @model.start_datetime = Date.parse("January 2, 2007")
    output = calendar_date_select(:model, :start_datetime, :time => "true")
    output.should match(/12:00 AM/)
  end

  it "should time_false__model_returns_time__should_render_without_time" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:model, :start_datetime)
    output.should_not match(/12:00 AM/)
  end

  it "should _nil_model__shouldnt_populate_value" do
    @model = nil
    output = calendar_date_select(:model, :start_datetime)

    output.should_not match(/value/)
  end

  it "should _vdc__should_auto_format_function" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:model,
      :start_datetime,
      :valid_date_check => "date < new Date()"
    )
    output.should include("valid_date_check:function(date) { return(date &lt; new Date()) }")

    output = calendar_date_select(:model,
      :start_datetime,
      :valid_date_check => "return(date < new Date())"
    )
    output.should include("valid_date_check:function(date) { return(date &lt; new Date()) }")
    output = calendar_date_select(:model,
      :start_datetime,
      :valid_date_check => "function(p) { return(date < new Date()) }"
    )
    output.should include("valid_date_check:function(p) { return(date &lt; new Date()) }")
  end

  it "should raise an error if the valid_date_check function is missing a return statement" do
    message = ":valid_date_check function is missing a 'return' statement.  Try something like: :valid_date_check => 'if (date > new(Date)) return true; else return false;'"
    lambda {
      output = calendar_date_select(:model,
        :start_datetime,
        :valid_date_check => "date = 5; date < new Date());"
      )
    }.should raise_error(ArgumentError, message)

    lambda {
      output = calendar_date_select(:model,
        :start_datetime,
        :valid_date_check => "function(p) { date = 5; date < new Date()); }"
      )
    }.should raise_error(ArgumentError, message)
  end

  it "should render the year_range argument correctly" do
    output = calendar_date_select(:model, :start_datetime)
    output.should include("year_range:10")
    output = calendar_date_select(:model, :start_datetime, :year_range => 2000..2010)
    output.should include("year_range:[2000, 2010]")
    output = calendar_date_select(:model, :start_datetime, :year_range => (15.years.ago..5.years.ago))
    output.should include("year_range:[#{15.years.ago.year}, #{5.years.ago.year}]")
  end

  it "should disregard the :object parameter when nil" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:model, :start_datetime, :time => true, :object => nil)
    output.should include(CalendarDateSelect.format_date(@model.start_datetime))
  end

  it "should regard :object parameter" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:lame_o, :start_datetime, :time => true, :object => @model)
    output.should include(CalendarDateSelect.format_date(@model.start_datetime))
  end

  it "should respect parameters provided in default_options" do
    new_options = CalendarDateSelect.default_options.merge(:popup => "force")
    CalendarDateSelect.stub!(:default_options).and_return(new_options)
    calendar_date_select_tag(:name, "").should include("popup:'force'")
  end

  it "should respect the :image option" do
    output = calendar_date_select_tag(:name, "Some String", :image => "boogy.png")
    output.should include("boogy.png")
  end

  it "should not pass the :image option as a javascript option" do
    output = calendar_date_select_tag(:name, "Some String", :image => "boogy.png")
    output.should_not include("image:")
  end

  it "should use the CSS class calendar_date_select_tag for popup selector icon" do
    output = calendar_date_select_tag(:name, "Some String", :image => "boogy.png")
    output.should include("calendar_date_select_popup_icon")
  end

  describe "calendar_date_select_tag" do
    before(:each) do
      @time = Time.parse("January 2, 2007 12:01:23 AM")
    end
    
    it "should use the string verbatim when provided" do
      output = calendar_date_select_tag(:name, "Some String")

      output.should include("Some String")
    end

    it "should not render the time when time is false (or nil)" do
      output = calendar_date_select_tag(:name, @time, :time => false)

      output.should_not match(/12:01 AM/)
      output.should include(CalendarDateSelect.format_date(@time.to_date))
    end

    it "should render the time when :time => true" do
      output = calendar_date_select_tag(:name, @time, :time => true)

      output.should include(CalendarDateSelect.format_date(@time))
    end

    it "should render the time when :time => 'mixed'" do
      output = calendar_date_select_tag(:name, @time, :time => 'mixed')
      output.should include(CalendarDateSelect.format_date(@time))
    end
    
    it "not include the image option in the result input tag" do
      output = calendar_date_select_tag(:name, @time, :time => 'mixed')
      output.should_not include("image=")
    end
  end
end
<commit_msg>Added initial spec for default_time implementation.<commit_after>require File.dirname(__FILE__) + '/../spec_helper'

describe CalendarDateSelect::FormHelpers do
  include ActionView::Helpers::FormHelper
  include ActionView::Helpers::JavaScriptHelper
  include ActionView::Helpers::AssetTagHelper
  include ActionView::Helpers::TagHelper
  include ActionView::Helpers::FormTagHelper

  include CalendarDateSelect::FormHelpers

  before(:each) do
    @controller = ActionController::Base.new
    @request = OpenStruct.new
    @controller.request = @request

    @model = OpenStruct.new
  end

  describe "mixed mode" do
    it "should not output a time when the value is a Date" do
      @model.start_datetime = Date.parse("January 2, 2007")
      output = calendar_date_select(:model, :start_datetime, :time => "mixed")
      output.should_not match(/12:00 AM/)
    end

    it "should output a time when the value is a Time" do
      @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
      output = calendar_date_select(:model, :start_datetime, :time => "mixed")
      output.should match(/12:00 AM/)
    end
  end

  it "should render a time when time is passed as 'true'" do
    @model.start_datetime = Date.parse("January 2, 2007")
    output = calendar_date_select(:model, :start_datetime, :time => "true")
    output.should match(/12:00 AM/)
  end

  it "should time_false__model_returns_time__should_render_without_time" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:model, :start_datetime)
    output.should_not match(/12:00 AM/)
  end

  it "should _nil_model__shouldnt_populate_value" do
    @model = nil
    output = calendar_date_select(:model, :start_datetime)

    output.should_not match(/value/)
  end

  it "should wrap default date in javascript function when passed as string" do
    @model.start_datetime = Date.parse("January 2, 2007")
    output = calendar_date_select(:model, :start_datetime, :default_time => "new Date()")
    output.should include("function() { new Date() }")
  end

  it "should return formatted date when passed a time object" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:model, :start_datetime, :default_time => @model.start_datetime)
    output.should include("Date.parse('January 02, 2007 12:00 AM')")
  end

  it "should _vdc__should_auto_format_function" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:model,
      :start_datetime,
      :valid_date_check => "date < new Date()"
    )
    output.should include("valid_date_check:function(date) { return(date &lt; new Date()) }")

    output = calendar_date_select(:model,
      :start_datetime,
      :valid_date_check => "return(date < new Date())"
    )
    output.should include("valid_date_check:function(date) { return(date &lt; new Date()) }")
    output = calendar_date_select(:model,
      :start_datetime,
      :valid_date_check => "function(p) { return(date < new Date()) }"
    )
    output.should include("valid_date_check:function(p) { return(date &lt; new Date()) }")
  end

  it "should raise an error if the valid_date_check function is missing a return statement" do
    message = ":valid_date_check function is missing a 'return' statement.  Try something like: :valid_date_check => 'if (date > new(Date)) return true; else return false;'"
    lambda {
      output = calendar_date_select(:model,
        :start_datetime,
        :valid_date_check => "date = 5; date < new Date());"
      )
    }.should raise_error(ArgumentError, message)

    lambda {
      output = calendar_date_select(:model,
        :start_datetime,
        :valid_date_check => "function(p) { date = 5; date < new Date()); }"
      )
    }.should raise_error(ArgumentError, message)
  end

  it "should render the year_range argument correctly" do
    output = calendar_date_select(:model, :start_datetime)
    output.should include("year_range:10")
    output = calendar_date_select(:model, :start_datetime, :year_range => 2000..2010)
    output.should include("year_range:[2000, 2010]")
    output = calendar_date_select(:model, :start_datetime, :year_range => (15.years.ago..5.years.ago))
    output.should include("year_range:[#{15.years.ago.year}, #{5.years.ago.year}]")
  end

  it "should disregard the :object parameter when nil" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:model, :start_datetime, :time => true, :object => nil)
    output.should include(CalendarDateSelect.format_date(@model.start_datetime))
  end

  it "should regard :object parameter" do
    @model.start_datetime = Time.parse("January 2, 2007 12:00 AM")
    output = calendar_date_select(:lame_o, :start_datetime, :time => true, :object => @model)
    output.should include(CalendarDateSelect.format_date(@model.start_datetime))
  end

  it "should respect parameters provided in default_options" do
    new_options = CalendarDateSelect.default_options.merge(:popup => "force")
    CalendarDateSelect.stub!(:default_options).and_return(new_options)
    calendar_date_select_tag(:name, "").should include("popup:'force'")
  end

  it "should respect the :image option" do
    output = calendar_date_select_tag(:name, "Some String", :image => "boogy.png")
    output.should include("boogy.png")
  end

  it "should not pass the :image option as a javascript option" do
    output = calendar_date_select_tag(:name, "Some String", :image => "boogy.png")
    output.should_not include("image:")
  end

  it "should use the CSS class calendar_date_select_tag for popup selector icon" do
    output = calendar_date_select_tag(:name, "Some String", :image => "boogy.png")
    output.should include("calendar_date_select_popup_icon")
  end

  describe "calendar_date_select_tag" do
    before(:each) do
      @time = Time.parse("January 2, 2007 12:01:23 AM")
    end
    
    it "should use the string verbatim when provided" do
      output = calendar_date_select_tag(:name, "Some String")

      output.should include("Some String")
    end

    it "should not render the time when time is false (or nil)" do
      output = calendar_date_select_tag(:name, @time, :time => false)

      output.should_not match(/12:01 AM/)
      output.should include(CalendarDateSelect.format_date(@time.to_date))
    end

    it "should render the time when :time => true" do
      output = calendar_date_select_tag(:name, @time, :time => true)

      output.should include(CalendarDateSelect.format_date(@time))
    end

    it "should render the time when :time => 'mixed'" do
      output = calendar_date_select_tag(:name, @time, :time => 'mixed')
      output.should include(CalendarDateSelect.format_date(@time))
    end
    
    it "not include the image option in the result input tag" do
      output = calendar_date_select_tag(:name, @time, :time => 'mixed')
      output.should_not include("image=")
    end
  end
end

{'fraction_non_alphanumeric': 0.11660830042470754, 'fraction_numerical': 0.01847850383726995, 'mean_word_length': 4.068731117824774, 'pattern_counts': {'":': 2, '<': 13, '<?xml version=': 0, '>': 57, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6193864', 'n_tokens_mistral': 4304, 'n_tokens_neox': 3995, 'n_words': 1092}