require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")

describe BaseScaffold do

  context "simple model name" do
    before(:each) do
      @base = BaseScaffold.new("client")
    end

    it "should know model class name" do
      @base.class_name.should eql("Client")
    end

    it "should know model test class name" do
      @base.test_class_name.should eql("ClientTest")
    end

    it "should know repository class name impl" do
      @base.repository_impl_name.should eql("ClientRepositoryImpl")
    end

    it "should know repository interface name" do
      @base.repository_interface_name.should eql("ClientRepository")
    end

    it "should know repository test class name" do
      @base.repository_test_class_name.should eql("ClientRepositoryImplTest")
    end

    it "should know controller class name" do
      @base.controller_class_name.should eql("ClientController")
    end

    it "should know controller test class name" do
      @base.controller_test_class_name.should eql("ClientControllerTest")
    end

    it "should know path" do
      @base.base_path.should eql("clients")
    end

    it "should know model parameter name with scaffold given with first letter uppercased" do
      base = BaseScaffold.new("Client")
      base.model_parameter_name.should eql("client")
    end
  end

  context "compound model name" do
    it "should know class name to 'orderItem'" do
      BaseScaffold.new("orderItem").class_name.should eql("OrderItem")
    end

    it "should know class name to 'OrderItem'" do
      BaseScaffold.new("OrderItem").class_name.should eql("OrderItem")
    end

    it "should know parameter name to 'OrderItem'" do
      BaseScaffold.new("OrderItem").model_parameter_name.should eql("orderItem")
    end

    it "should know parameter name to 'OrderItem'" do
      BaseScaffold.new("orderItem").model_parameter_name.should eql("orderItem")
    end

    it "should know path to 'orderItem'" do
      BaseScaffold.new("orderItem").base_path.should eql("orderItems")
    end

    it "should know path to 'OrderItem'" do
      BaseScaffold.new("OrderItem").base_path.should eql("orderItems")
    end
  end

  it "should not allow duplicate import" do
    @base = BaseScaffold.new("person", [Attribute.new("born", "date"), Attribute.new("death", "date")])
    @base.imports.one?.should be_true
  end

end
