Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 77 lines (58 sloc) 2.037 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
require 'spec_helper'
require 'helpers/project'

require 'dm-visualizer/visualization'

describe DataMapper::Visualizer::Visualization do
  let(:lib_dir) { File.join(project_dir('library'),'lib') }

  before(:all) do
    $LOAD_PATH << lib_dir
    require 'blog'
  end

  context "defaults" do
    it "should return the class names of Classes" do
      subject.class_name(Blog::User).should == 'User'
    end

    it "should return the class names of Objects" do
      subject.class_name(Blog::Post.body).should == 'Text'
    end

    it "should return the names of properties" do
      subject.property_name(Blog::Post.body).should == 'body'
    end

    it "should return the names of models" do
      subject.model_name(Blog::User).should == 'User'
    end
  end

  context "with repository names" do
    subject { described_class.new(:repository_names => {:default => 'blogdb'}) }

    it "should map the DataMapper repository names" do
      subject.model_repository_name(Blog::User).should == 'blogdb'
    end
  end

  context "with schema naming convention" do
    subject do
      described_class.new(
        :repository_names => {:default => 'blogdb'},
        :naming => :schema
      )
    end

    it "should return the database and table names for a model name" do
      subject.model_name(Blog::User).should == 'blogdb.blog_users'
    end
  end

  context "with full names" do
    subject { described_class.new(:full_names => true) }

    it "should not demodulize the names of Classes" do
      subject.class_name(Blog::User).should == 'Blog::User'
    end

    it "should not demodulize the names of Objects" do
      object = Blog::Post.new

      subject.class_name(object).should == 'Blog::Post'
    end

    it "should not demodulize property type names" do
      subject.property_type_name(Blog::Post.body).should =~ /::Text$/
    end

    it "should not demodulize model names" do
      subject.model_name(Blog::User).should == 'Blog::User'
    end
  end

  after(:all) { $LOAD_PATH.delete(lib_dir) }
end
Something went wrong with that request. Please try again.