diff options
| -rw-r--r-- | lib/model_attribute.rb | 17 | ||||
| -rw-r--r-- | spec/lib/model_attribute_spec.rb | 16 |
2 files changed, 33 insertions, 0 deletions
diff --git a/lib/model_attribute.rb b/lib/model_attribute.rb new file mode 100644 index 000000000..be5caea94 --- /dev/null +++ b/lib/model_attribute.rb @@ -0,0 +1,17 @@ +class ModelAttribute + cattr_reader :all + + @@all = [] + + attr_reader :klass, :name, :data_type + + def self.define(klass, name, data_type) + @@all << new(klass, name, data_type) + end + + def initialize(klass, name, data_type) + @klass = klass + @name = name + @data_type = data_type + end +end diff --git a/spec/lib/model_attribute_spec.rb b/spec/lib/model_attribute_spec.rb new file mode 100644 index 000000000..88d3997b6 --- /dev/null +++ b/spec/lib/model_attribute_spec.rb @@ -0,0 +1,16 @@ +RSpec.describe ModelAttribute do + describe ".define" do + it "adds a new instance of ModelAttribute to @@all" do + ModelAttribute.define(:route, :name, :string) + + expect(ModelAttribute.all.length).to eq(1) + + model_attr = ModelAttribute.all.first + + expect(model_attr).to be_an_instance_of(ModelAttribute) + expect(model_attr.klass).to eq(:route) + expect(model_attr.name).to eq(:name) + expect(model_attr.data_type).to eq(:string) + end + end +end |
