ardm 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +5 -13
  2. data/Gemfile +1 -2
  3. data/LICENSE +2 -2
  4. data/README.md +72 -16
  5. data/ardm.gemspec +1 -0
  6. data/lib/ardm.rb +2 -1
  7. data/lib/ardm/active_record.rb +8 -1
  8. data/lib/ardm/active_record/associations.rb +33 -4
  9. data/lib/ardm/active_record/base.rb +2 -0
  10. data/lib/ardm/active_record/collection.rb +5 -0
  11. data/lib/ardm/active_record/data_mapper_constant.rb +1 -0
  12. data/lib/ardm/active_record/data_mapper_constant_proxy.rb +24 -0
  13. data/lib/ardm/active_record/finalize.rb +18 -0
  14. data/lib/ardm/active_record/predicate_builder/array_handler.rb +10 -16
  15. data/lib/ardm/active_record/predicate_builder/rails3.rb +42 -15
  16. data/lib/ardm/active_record/predicate_builder/rails4.rb +39 -13
  17. data/lib/ardm/active_record/property.rb +24 -12
  18. data/lib/ardm/active_record/query.rb +9 -18
  19. data/lib/ardm/active_record/record.rb +54 -11
  20. data/lib/ardm/active_record/relation.rb +36 -6
  21. data/lib/ardm/active_record/repository.rb +6 -2
  22. data/lib/ardm/data_mapper.rb +2 -0
  23. data/lib/ardm/data_mapper/record.rb +3 -9
  24. data/lib/ardm/version.rb +1 -1
  25. data/spec/ardm/datamapper_constants_spec.rb +31 -0
  26. data/spec/fixtures/article.rb +2 -0
  27. data/spec/integration/api_key_spec.rb +3 -3
  28. data/spec/integration/bcrypt_hash_spec.rb +7 -7
  29. data/spec/integration/comma_separated_list_spec.rb +11 -11
  30. data/spec/integration/dirty_minder_spec.rb +23 -39
  31. data/spec/integration/enum_spec.rb +11 -11
  32. data/spec/integration/epoch_time_spec.rb +6 -6
  33. data/spec/integration/file_path_spec.rb +23 -23
  34. data/spec/integration/flag_spec.rb +11 -13
  35. data/spec/integration/ip_address_spec.rb +15 -15
  36. data/spec/integration/json_spec.rb +7 -7
  37. data/spec/integration/slug_spec.rb +6 -6
  38. data/spec/integration/uri_spec.rb +11 -11
  39. data/spec/integration/uuid_spec.rb +16 -16
  40. data/spec/integration/yaml_spec.rb +8 -8
  41. data/spec/public/model_spec.rb +193 -0
  42. data/spec/public/property/binary_spec.rb +4 -4
  43. data/spec/public/property/boolean_spec.rb +3 -3
  44. data/spec/public/property/class_spec.rb +2 -2
  45. data/spec/public/property/date_spec.rb +2 -2
  46. data/spec/public/property/date_time_spec.rb +2 -2
  47. data/spec/public/property/decimal_spec.rb +2 -2
  48. data/spec/public/property/discriminator_spec.rb +21 -20
  49. data/spec/public/property/float_spec.rb +2 -2
  50. data/spec/public/property/integer_spec.rb +2 -2
  51. data/spec/public/property/object_spec.rb +14 -13
  52. data/spec/public/property/serial_spec.rb +2 -2
  53. data/spec/public/property/string_spec.rb +2 -2
  54. data/spec/public/property/text_spec.rb +2 -2
  55. data/spec/public/property/time_spec.rb +2 -2
  56. data/spec/public/property_spec.rb +44 -48
  57. data/spec/public/resource_spec.rb +278 -0
  58. data/spec/schema.rb +33 -4
  59. data/spec/semipublic/property/boolean_spec.rb +5 -5
  60. data/spec/semipublic/property/class_spec.rb +3 -3
  61. data/spec/semipublic/property/date_spec.rb +8 -8
  62. data/spec/semipublic/property/date_time_spec.rb +9 -9
  63. data/spec/semipublic/property/decimal_spec.rb +16 -16
  64. data/spec/semipublic/property/float_spec.rb +16 -16
  65. data/spec/semipublic/property/integer_spec.rb +16 -16
  66. data/spec/semipublic/property/lookup_spec.rb +4 -4
  67. data/spec/semipublic/property/text_spec.rb +2 -2
  68. data/spec/semipublic/property/time_spec.rb +10 -10
  69. data/spec/semipublic/property_spec.rb +4 -4
  70. data/spec/shared/finder_shared_spec.rb +1151 -0
  71. data/spec/shared/flags_shared_spec.rb +6 -6
  72. data/spec/shared/identity_function_group.rb +1 -1
  73. data/spec/shared/public_property_spec.rb +26 -25
  74. data/spec/shared/resource_spec.rb +1218 -0
  75. data/spec/shared/semipublic_property_spec.rb +23 -22
  76. data/spec/spec_helper.rb +17 -0
  77. data/spec/unit/bcrypt_hash_spec.rb +15 -15
  78. data/spec/unit/csv_spec.rb +11 -11
  79. data/spec/unit/dirty_minder_spec.rb +3 -5
  80. data/spec/unit/enum_spec.rb +17 -17
  81. data/spec/unit/epoch_time_spec.rb +8 -8
  82. data/spec/unit/file_path_spec.rb +9 -9
  83. data/spec/unit/flag_spec.rb +9 -9
  84. data/spec/unit/ip_address_spec.rb +9 -9
  85. data/spec/unit/json_spec.rb +11 -11
  86. data/spec/unit/paranoid_boolean_spec.rb +19 -17
  87. data/spec/unit/paranoid_datetime_spec.rb +21 -19
  88. data/spec/unit/regexp_spec.rb +4 -4
  89. data/spec/unit/uri_spec.rb +8 -8
  90. data/spec/unit/yaml_spec.rb +9 -9
  91. metadata +35 -27
  92. data/lib/ardm/active_record/not_found.rb +0 -7
  93. data/lib/ardm/data_mapper/not_found.rb +0 -5
data/spec/schema.rb CHANGED
@@ -7,12 +7,19 @@
7
7
 
8
8
  create_table :articles, :force => true do |t|
9
9
  t.string :title
10
+ t.string :author
10
11
  t.text :body
11
12
  t.timestamps
12
13
  t.datetime :published_at
13
14
  t.boolean :deleted
14
15
  t.datetime :deleted_at
15
16
  t.string :slug
17
+ t.integer :original_id
18
+ end
19
+
20
+ create_table :article_publications, :force => true do |t|
21
+ t.integer :article_id
22
+ t.integer :publication_id
16
23
  end
17
24
 
18
25
  create_table :bookmarks, :force => true do |t|
@@ -22,9 +29,14 @@
22
29
  t.text :tags
23
30
  end
24
31
 
32
+ create_table :comments, :force => true do |t|
33
+ t.text :body
34
+ t.integer :user_id
35
+ t.timestamps
36
+ end
37
+
25
38
  create_table :images, :force => true, :id => false do |t|
26
39
  t.string :md5hash, :length => 32
27
- t.index :md5hash, :unique => true
28
40
  t.string :title
29
41
  t.text :description, :length => 1024
30
42
  t.integer :width
@@ -32,6 +44,7 @@
32
44
  t.string :format
33
45
  t.time :taken_at
34
46
  end
47
+ add_index :images, :md5hash, :unique => true
35
48
 
36
49
  create_table :network_nodes, :force => true do |t|
37
50
  t.string :ip_address
@@ -39,6 +52,12 @@
39
52
  t.string :node_uuid
40
53
  end
41
54
 
55
+ create_table :paragraphs, :force => true do |t|
56
+ t.string :text
57
+ t.integer :article_id
58
+ t.timestamps
59
+ end
60
+
42
61
  create_table :people, :force => true do |t|
43
62
  t.string :name
44
63
  t.text :positions
@@ -71,10 +90,10 @@
71
90
  t.string :name
72
91
  t.string :album
73
92
  t.string :musicbrainz_hash
74
- t.index [:artist, :album]
75
- t.index :name
76
- t.index :musicbrainz_hash, :unique => true
77
93
  end
94
+ add_index :tracks, [:artist, :album]
95
+ add_index :tracks, :name
96
+ add_index :tracks, :musicbrainz_hash, :unique => true
78
97
 
79
98
  create_table :tshirts, :force => true do |t|
80
99
  t.string :writing
@@ -83,4 +102,14 @@
83
102
  t.text :color
84
103
  t.text :size
85
104
  end
105
+
106
+ create_table :users, :force => true, :id => false, :primary_key => :name do |t|
107
+ t.string :name
108
+ t.integer :age
109
+ t.text :summary
110
+ t.text :description
111
+ t.boolean :admin
112
+ t.integer :parent_id
113
+ t.string :referrer_id
114
+ end
86
115
  end
@@ -15,13 +15,13 @@ describe Ardm::Property::Boolean do
15
15
  describe '#valid?' do
16
16
  [ true, false ].each do |value|
17
17
  it "returns true when value is #{value.inspect}" do
18
- property.valid?(value).should be(true)
18
+ expect(property.valid?(value)).to be(true)
19
19
  end
20
20
  end
21
21
 
22
22
  [ 'true', 'TRUE', '1', 1, 't', 'T', 'false', 'FALSE', '0', 0, 'f', 'F' ].each do |value|
23
23
  it "returns false for #{value.inspect}" do
24
- property.valid?(value).should be(false)
24
+ expect(property.valid?(value)).to be(false)
25
25
  end
26
26
  end
27
27
  end
@@ -29,19 +29,19 @@ describe Ardm::Property::Boolean do
29
29
  describe '#typecast' do
30
30
  [ true, 'true', 'TRUE', '1', 1, 't', 'T' ].each do |value|
31
31
  it "returns true when value is #{value.inspect}" do
32
- property.typecast(value).should be(true)
32
+ expect(property.typecast(value)).to be(true)
33
33
  end
34
34
  end
35
35
 
36
36
  [ false, 'false', 'FALSE', '0', 0, 'f', 'F' ].each do |value|
37
37
  it "returns false when value is #{value.inspect}" do
38
- property.typecast(value).should be(false)
38
+ expect(property.typecast(value)).to be(false)
39
39
  end
40
40
  end
41
41
 
42
42
  [ 'string', 2, 1.0, BigDecimal('1.0'), DateTime.now, Time.now, Date.today, Class, Object.new, ].each do |value|
43
43
  it "does not typecast value #{value.inspect}" do
44
- property.typecast(value).should equal(value)
44
+ expect(property.typecast(value)).to equal(value)
45
45
  end
46
46
  end
47
47
  end
@@ -22,15 +22,15 @@ describe Ardm::Property::Class do
22
22
 
23
23
  describe '#typecast' do
24
24
  it 'returns same value if a class' do
25
- property.typecast(model).should equal(model)
25
+ expect(property.typecast(model)).to equal(model)
26
26
  end
27
27
 
28
28
  it 'returns the class if found' do
29
- property.typecast(model.name).should eql(model)
29
+ expect(property.typecast(model.name)).to eql(model)
30
30
  end
31
31
 
32
32
  it 'does not typecast non-class values' do
33
- property.typecast('NoClass').should eql('NoClass')
33
+ expect(property.typecast('NoClass')).to eql('NoClass')
34
34
  end
35
35
  end
36
36
  end
@@ -21,24 +21,24 @@ describe Ardm::Property::Date do
21
21
  :day => '25'
22
22
  )
23
23
 
24
- result.should be_kind_of(Date)
25
- result.year.should eql(2007)
26
- result.month.should eql(3)
27
- result.day.should eql(25)
24
+ expect(result).to be_kind_of(Date)
25
+ expect(result.year).to eql(2007)
26
+ expect(result.month).to eql(3)
27
+ expect(result.day).to eql(25)
28
28
  end
29
29
  end
30
30
 
31
31
  describe 'and value is a string' do
32
32
  it 'parses the string' do
33
33
  result = property.typecast('Dec 20th, 2006')
34
- result.month.should == 12
35
- result.day.should == 20
36
- result.year.should == 2006
34
+ expect(result.month).to eq(12)
35
+ expect(result.day).to eq(20)
36
+ expect(result.year).to eq(2006)
37
37
  end
38
38
  end
39
39
 
40
40
  it 'does not typecast non-date values' do
41
- property.typecast('not-date').should eql('not-date')
41
+ expect(property.typecast('not-date')).to eql('not-date')
42
42
  end
43
43
  end
44
44
  end
@@ -24,24 +24,24 @@ describe Ardm::Property::DateTime do
24
24
  :sec => '0'
25
25
  )
26
26
 
27
- result.should be_kind_of(DateTime)
28
- result.year.should eql(2006)
29
- result.month.should eql(11)
30
- result.day.should eql(23)
31
- result.hour.should eql(12)
32
- result.min.should eql(0)
33
- result.sec.should eql(0)
27
+ expect(result).to be_kind_of(DateTime)
28
+ expect(result.year).to eql(2006)
29
+ expect(result.month).to eql(11)
30
+ expect(result.day).to eql(23)
31
+ expect(result.hour).to eql(12)
32
+ expect(result.min).to eql(0)
33
+ expect(result.sec).to eql(0)
34
34
  end
35
35
  end
36
36
 
37
37
  describe 'and value is a string' do
38
38
  it 'parses the string' do
39
- property.typecast('Dec, 2006').month.should == 12
39
+ expect(property.typecast('Dec, 2006').month).to eq(12)
40
40
  end
41
41
  end
42
42
 
43
43
  it 'does not typecast non-datetime values' do
44
- property.typecast('not-datetime').should eql('not-datetime')
44
+ expect(property.typecast('not-datetime')).to eql('not-datetime')
45
45
  end
46
46
  end
47
47
  end
@@ -15,68 +15,68 @@ describe Ardm::Property::Decimal do
15
15
  describe '#typecast' do
16
16
  it 'returns same value if a decimal' do
17
17
  @value = BigDecimal('24.0')
18
- property.typecast(@value).should equal(@value)
18
+ expect(property.typecast(@value)).to equal(@value)
19
19
  end
20
20
 
21
21
  it 'returns decimal representation of a zero string integer' do
22
- property.typecast('0').should eql(BigDecimal('0.0'))
22
+ expect(property.typecast('0')).to eql(BigDecimal('0.0'))
23
23
  end
24
24
 
25
25
  it 'returns decimal representation of a positive string integer' do
26
- property.typecast('24').should eql(BigDecimal('24.0'))
26
+ expect(property.typecast('24')).to eql(BigDecimal('24.0'))
27
27
  end
28
28
 
29
29
  it 'returns decimal representation of a negative string integer' do
30
- property.typecast('-24').should eql(BigDecimal('-24.0'))
30
+ expect(property.typecast('-24')).to eql(BigDecimal('-24.0'))
31
31
  end
32
32
 
33
33
  it 'returns decimal representation of a zero string float' do
34
- property.typecast('0.0').should eql(BigDecimal('0.0'))
34
+ expect(property.typecast('0.0')).to eql(BigDecimal('0.0'))
35
35
  end
36
36
 
37
37
  it 'returns decimal representation of a positive string float' do
38
- property.typecast('24.35').should eql(BigDecimal('24.35'))
38
+ expect(property.typecast('24.35')).to eql(BigDecimal('24.35'))
39
39
  end
40
40
 
41
41
  it 'returns decimal representation of a negative string float' do
42
- property.typecast('-24.35').should eql(BigDecimal('-24.35'))
42
+ expect(property.typecast('-24.35')).to eql(BigDecimal('-24.35'))
43
43
  end
44
44
 
45
45
  it 'returns decimal representation of a zero string float, with no leading digits' do
46
- property.typecast('.0').should eql(BigDecimal('0.0'))
46
+ expect(property.typecast('.0')).to eql(BigDecimal('0.0'))
47
47
  end
48
48
 
49
49
  it 'returns decimal representation of a positive string float, with no leading digits' do
50
- property.typecast('.41').should eql(BigDecimal('0.41'))
50
+ expect(property.typecast('.41')).to eql(BigDecimal('0.41'))
51
51
  end
52
52
 
53
53
  it 'returns decimal representation of a zero integer' do
54
- property.typecast(0).should eql(BigDecimal('0.0'))
54
+ expect(property.typecast(0)).to eql(BigDecimal('0.0'))
55
55
  end
56
56
 
57
57
  it 'returns decimal representation of a positive integer' do
58
- property.typecast(24).should eql(BigDecimal('24.0'))
58
+ expect(property.typecast(24)).to eql(BigDecimal('24.0'))
59
59
  end
60
60
 
61
61
  it 'returns decimal representation of a negative integer' do
62
- property.typecast(-24).should eql(BigDecimal('-24.0'))
62
+ expect(property.typecast(-24)).to eql(BigDecimal('-24.0'))
63
63
  end
64
64
 
65
65
  it 'returns decimal representation of a zero float' do
66
- property.typecast(0.0).should eql(BigDecimal('0.0'))
66
+ expect(property.typecast(0.0)).to eql(BigDecimal('0.0'))
67
67
  end
68
68
 
69
69
  it 'returns decimal representation of a positive float' do
70
- property.typecast(24.35).should eql(BigDecimal('24.35'))
70
+ expect(property.typecast(24.35)).to eql(BigDecimal('24.35'))
71
71
  end
72
72
 
73
73
  it 'returns decimal representation of a negative float' do
74
- property.typecast(-24.35).should eql(BigDecimal('-24.35'))
74
+ expect(property.typecast(-24.35)).to eql(BigDecimal('-24.35'))
75
75
  end
76
76
 
77
77
  [ Object.new, true, '0.', '-.0', 'string' ].each do |value|
78
78
  it "does not typecast non-numeric value #{value.inspect}" do
79
- property.typecast(value).should equal(value)
79
+ expect(property.typecast(value)).to equal(value)
80
80
  end
81
81
  end
82
82
  end
@@ -15,68 +15,68 @@ describe Ardm::Property::Float do
15
15
  describe '#typecast' do
16
16
  it 'returns same value if a float' do
17
17
  value = 24.0
18
- property.typecast(value).should equal(value)
18
+ expect(property.typecast(value)).to equal(value)
19
19
  end
20
20
 
21
21
  it 'returns float representation of a zero string integer' do
22
- property.typecast('0').should eql(0.0)
22
+ expect(property.typecast('0')).to eql(0.0)
23
23
  end
24
24
 
25
25
  it 'returns float representation of a positive string integer' do
26
- property.typecast('24').should eql(24.0)
26
+ expect(property.typecast('24')).to eql(24.0)
27
27
  end
28
28
 
29
29
  it 'returns float representation of a negative string integer' do
30
- property.typecast('-24').should eql(-24.0)
30
+ expect(property.typecast('-24')).to eql(-24.0)
31
31
  end
32
32
 
33
33
  it 'returns float representation of a zero string float' do
34
- property.typecast('0.0').should eql(0.0)
34
+ expect(property.typecast('0.0')).to eql(0.0)
35
35
  end
36
36
 
37
37
  it 'returns float representation of a positive string float' do
38
- property.typecast('24.35').should eql(24.35)
38
+ expect(property.typecast('24.35')).to eql(24.35)
39
39
  end
40
40
 
41
41
  it 'returns float representation of a negative string float' do
42
- property.typecast('-24.35').should eql(-24.35)
42
+ expect(property.typecast('-24.35')).to eql(-24.35)
43
43
  end
44
44
 
45
45
  it 'returns float representation of a zero string float, with no leading digits' do
46
- property.typecast('.0').should eql(0.0)
46
+ expect(property.typecast('.0')).to eql(0.0)
47
47
  end
48
48
 
49
49
  it 'returns float representation of a positive string float, with no leading digits' do
50
- property.typecast('.41').should eql(0.41)
50
+ expect(property.typecast('.41')).to eql(0.41)
51
51
  end
52
52
 
53
53
  it 'returns float representation of a zero integer' do
54
- property.typecast(0).should eql(0.0)
54
+ expect(property.typecast(0)).to eql(0.0)
55
55
  end
56
56
 
57
57
  it 'returns float representation of a positive integer' do
58
- property.typecast(24).should eql(24.0)
58
+ expect(property.typecast(24)).to eql(24.0)
59
59
  end
60
60
 
61
61
  it 'returns float representation of a negative integer' do
62
- property.typecast(-24).should eql(-24.0)
62
+ expect(property.typecast(-24)).to eql(-24.0)
63
63
  end
64
64
 
65
65
  it 'returns float representation of a zero decimal' do
66
- property.typecast(BigDecimal('0.0')).should eql(0.0)
66
+ expect(property.typecast(BigDecimal('0.0'))).to eql(0.0)
67
67
  end
68
68
 
69
69
  it 'returns float representation of a positive decimal' do
70
- property.typecast(BigDecimal('24.35')).should eql(24.35)
70
+ expect(property.typecast(BigDecimal('24.35'))).to eql(24.35)
71
71
  end
72
72
 
73
73
  it 'returns float representation of a negative decimal' do
74
- property.typecast(BigDecimal('-24.35')).should eql(-24.35)
74
+ expect(property.typecast(BigDecimal('-24.35'))).to eql(-24.35)
75
75
  end
76
76
 
77
77
  [ Object.new, true, '0.', '-.0', 'string' ].each do |value|
78
78
  it "does not typecast non-numeric value #{value.inspect}" do
79
- property.typecast(value).should equal(value)
79
+ expect(property.typecast(value)).to equal(value)
80
80
  end
81
81
  end
82
82
  end
@@ -15,68 +15,68 @@ describe Ardm::Property::Integer do
15
15
  describe '#typecast' do
16
16
  it 'returns same value if an integer' do
17
17
  value = 24
18
- property.typecast(value).should equal(value)
18
+ expect(property.typecast(value)).to equal(value)
19
19
  end
20
20
 
21
21
  it 'returns integer representation of a zero string integer' do
22
- property.typecast('0').should eql(0)
22
+ expect(property.typecast('0')).to eql(0)
23
23
  end
24
24
 
25
25
  it 'returns integer representation of a positive string integer' do
26
- property.typecast('24').should eql(24)
26
+ expect(property.typecast('24')).to eql(24)
27
27
  end
28
28
 
29
29
  it 'returns integer representation of a negative string integer' do
30
- property.typecast('-24').should eql(-24)
30
+ expect(property.typecast('-24')).to eql(-24)
31
31
  end
32
32
 
33
33
  it 'returns integer representation of a zero string float' do
34
- property.typecast('0.0').should eql(0)
34
+ expect(property.typecast('0.0')).to eql(0)
35
35
  end
36
36
 
37
37
  it 'returns integer representation of a positive string float' do
38
- property.typecast('24.35').should eql(24)
38
+ expect(property.typecast('24.35')).to eql(24)
39
39
  end
40
40
 
41
41
  it 'returns integer representation of a negative string float' do
42
- property.typecast('-24.35').should eql(-24)
42
+ expect(property.typecast('-24.35')).to eql(-24)
43
43
  end
44
44
 
45
45
  it 'returns integer representation of a zero string float, with no leading digits' do
46
- property.typecast('.0').should eql(0)
46
+ expect(property.typecast('.0')).to eql(0)
47
47
  end
48
48
 
49
49
  it 'returns integer representation of a positive string float, with no leading digits' do
50
- property.typecast('.41').should eql(0)
50
+ expect(property.typecast('.41')).to eql(0)
51
51
  end
52
52
 
53
53
  it 'returns integer representation of a zero float' do
54
- property.typecast(0.0).should eql(0)
54
+ expect(property.typecast(0.0)).to eql(0)
55
55
  end
56
56
 
57
57
  it 'returns integer representation of a positive float' do
58
- property.typecast(24.35).should eql(24)
58
+ expect(property.typecast(24.35)).to eql(24)
59
59
  end
60
60
 
61
61
  it 'returns integer representation of a negative float' do
62
- property.typecast(-24.35).should eql(-24)
62
+ expect(property.typecast(-24.35)).to eql(-24)
63
63
  end
64
64
 
65
65
  it 'returns integer representation of a zero decimal' do
66
- property.typecast(BigDecimal('0.0')).should eql(0)
66
+ expect(property.typecast(BigDecimal('0.0'))).to eql(0)
67
67
  end
68
68
 
69
69
  it 'returns integer representation of a positive decimal' do
70
- property.typecast(BigDecimal('24.35')).should eql(24)
70
+ expect(property.typecast(BigDecimal('24.35'))).to eql(24)
71
71
  end
72
72
 
73
73
  it 'returns integer representation of a negative decimal' do
74
- property.typecast(BigDecimal('-24.35')).should eql(-24)
74
+ expect(property.typecast(BigDecimal('-24.35'))).to eql(-24)
75
75
  end
76
76
 
77
77
  [ Object.new, true, '0.', '-.0', 'string' ].each do |value|
78
78
  it "does not typecast non-numeric value #{value.inspect}" do
79
- property.typecast(value).should equal(value)
79
+ expect(property.typecast(value)).to equal(value)
80
80
  end
81
81
  end
82
82
  end