aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume2017-09-25 15:26:05 +0200
committerGuillaume2017-09-25 15:26:05 +0200
commit2fa5b41379f33b399121dca1149dd7b20cf6d00d (patch)
treeaf5e86983b3bd9a04cf064ed064fe73c76504ace
parent903cc58aa530385f6fc3ceba3bbbacf46f4cd316 (diff)
parent4e878caf4170f9be96f0c854761ed279b057e91c (diff)
downloadchouette-core-2fa5b41379f33b399121dca1149dd7b20cf6d00d.tar.bz2
Merge branch 'master' of https://github.com/af83/stif-boiv
-rw-r--r--lib/model_attribute.rb5
-rw-r--r--spec/lib/model_attribute_spec.rb46
2 files changed, 23 insertions, 28 deletions
diff --git a/lib/model_attribute.rb b/lib/model_attribute.rb
index 60580e306..4d246853a 100644
--- a/lib/model_attribute.rb
+++ b/lib/model_attribute.rb
@@ -12,9 +12,9 @@ class ModelAttribute
def self.classes
all
.map(&:klass)
+ .uniq
.map(&:to_s)
.map(&:camelize)
- .uniq
end
def self.group_by_class
@@ -93,7 +93,8 @@ class ModelAttribute
end
def ==(other)
- klass == other.klass &&
+ self.class === other &&
+ klass == other.klass &&
name == other.name &&
data_type == other.data_type
end
diff --git a/spec/lib/model_attribute_spec.rb b/spec/lib/model_attribute_spec.rb
index 427e01490..cdba87a90 100644
--- a/spec/lib/model_attribute_spec.rb
+++ b/spec/lib/model_attribute_spec.rb
@@ -1,4 +1,8 @@
RSpec.describe ModelAttribute do
+ before(:each) do
+ ModelAttribute.instance_variable_set(:@__all__, [])
+ end
+
describe ".define" do
it "adds a new instance of ModelAttribute to .all" do
expect do
@@ -16,11 +20,9 @@ RSpec.describe ModelAttribute do
describe ".classes" do
it "returns the list of classes of ModelAttributes in .all" do
- ModelAttribute.instance_variable_set(:@__all__, [
- ModelAttribute.new(:route, :name, :string),
- ModelAttribute.new(:journey_pattern, :name, :string),
- ModelAttribute.new(:time_table, :start_date, :date)
- ])
+ ModelAttribute.define(:route, :name, :string)
+ ModelAttribute.define(:journey_pattern, :name, :string)
+ ModelAttribute.define(:time_table, :start_date, :date)
expect(ModelAttribute.classes).to match_array([
'Route',
@@ -32,9 +34,7 @@ RSpec.describe ModelAttribute do
describe ".from_code" do
it "returns a ModelAttribute from a given code" do
- ModelAttribute.instance_variable_set(:@__all__, [
- ModelAttribute.new(:journey_pattern, :name, :string)
- ])
+ ModelAttribute.define(:journey_pattern, :name, :string)
expect(ModelAttribute.from_code('journey_pattern#name')).to eq(
ModelAttribute.new(:journey_pattern, :name, :string)
@@ -44,12 +44,10 @@ RSpec.describe ModelAttribute do
describe ".group_by_class" do
it "returns all ModelAttributes grouped by klass" do
- ModelAttribute.instance_variable_set(:@__all__, [
- ModelAttribute.new(:route, :name, :string),
- ModelAttribute.new(:route, :published_name, :string),
- ModelAttribute.new(:journey_pattern, :name, :string),
- ModelAttribute.new(:vehicle_journey, :number, :integer)
- ])
+ ModelAttribute.define(:route, :name, :string)
+ ModelAttribute.define(:route, :published_name, :string)
+ ModelAttribute.define(:journey_pattern, :name, :string)
+ ModelAttribute.define(:vehicle_journey, :number, :integer)
expect(ModelAttribute.group_by_class).to eq({
route: [
@@ -68,12 +66,10 @@ RSpec.describe ModelAttribute do
describe ".methods_by_class" do
it "returns all ModelAttributes for a given class" do
- ModelAttribute.instance_variable_set(:@__all__, [
- ModelAttribute.new(:route, :name, :string),
- ModelAttribute.new(:route, :published_name, :string),
- ModelAttribute.new(:route, :direction, :string),
- ModelAttribute.new(:journey_pattern, :name, :string)
- ])
+ ModelAttribute.define(:route, :name, :string)
+ ModelAttribute.define(:route, :published_name, :string)
+ ModelAttribute.define(:route, :direction, :string)
+ ModelAttribute.define(:journey_pattern, :name, :string)
expect(ModelAttribute.methods_by_class(:route)).to match_array([
ModelAttribute.new(:route, :name, :string),
@@ -85,12 +81,10 @@ RSpec.describe ModelAttribute do
describe ".methods_by_class_and_type" do
it "returns ModelAttributes of a certain class and type" do
- ModelAttribute.instance_variable_set(:@__all__, [
- ModelAttribute.new(:route, :name, :string),
- ModelAttribute.new(:route, :checked_at, :date),
- ModelAttribute.new(:journey_pattern, :name, :string),
- ModelAttribute.new(:journey_pattern, :section_status, :integer)
- ])
+ ModelAttribute.define(:route, :name, :string)
+ ModelAttribute.define(:route, :checked_at, :date)
+ ModelAttribute.define(:journey_pattern, :name, :string)
+ ModelAttribute.define(:journey_pattern, :section_status, :integer)
expect(ModelAttribute.methods_by_class_and_type(:route, :string)).to match_array([
ModelAttribute.new(:route, :name, :string)