summaryrefslogtreecommitdiff
path: root/spec/ruby/core/data/define_spec.rb
blob: c0b4671e395ba9746ebe2fac44707bca9471ee44 (plain)
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
require_relative '../../spec_helper'
require_relative 'fixtures/classes'

describe "Data.define" do
  it "accepts no arguments" do
    empty_data = Data.define
    empty_data.members.should == []
  end

  it "accepts symbols" do
    movie = Data.define(:title, :year)
    movie.members.should == [:title, :year]
  end

  it "accepts strings" do
    movie = Data.define("title", "year")
    movie.members.should == [:title, :year]
  end

  it "accepts a mix of strings and symbols" do
    movie = Data.define("title", :year, "genre")
    movie.members.should == [:title, :year, :genre]
  end

  it "accepts a block" do
    movie = Data.define(:title, :year) do
      def title_with_year
        "#{title} (#{year})"
      end
    end
    movie.members.should == [:title, :year]
    movie.new("Matrix", 1999).title_with_year.should == "Matrix (1999)"
  end
end