| Age | Commit message (Collapse) | Author | 
|---|
|  |  | 
|  |  | 
|  | validation, compliance_control module | 
|  | Refs #4687 | 
|  | Thanks to Robert for this suggestion, of course it makes a lot of sense
to verify class equivalence when checking equality.
Refs #4401 | 
|  | Call `#uniq` right after mapping over the `klass` attribute.
Recommendation from Robert (thanks!). This means there are less elements
to deal with in the subsequent maps.
Refs #4401 | 
|  | Enables finding a `ModelAttribute` by a string code combining klass and
name.
Refs #4401 | 
|  | This returns all defined `ModelAttribute`s as a hash of class keys
containing lists of the attributes they contain.
Refs #4401 | 
|  | This allows people to get a list of the classes defined in
`ModelAttribute`. The classes are turned into constant-cased strings.
Not sure if that's useful, but this is how it was described in the
ticket.
Refs #4401 | 
|  | This enables filtering by class like `.methods_by_class` and
additionally only selecting attributes matching a certain data type.
Refs #4401 | 
|  | Didn't like how `#initialize` takes a different type for `klass` than
`.methods_by_class`. Make these types and values uniform. If we need to
change it, we should make a separate mechanism to do so. I think.
Refs #4401 | 
|  | Allows us to get all `ModelAttribute`s given a certain class name.
Needed an `#==` method to be able to test object equality more easily so
I added one in.
I don't like that the `klass` is a lowercase symbol and the `klass`
attribute to `.methods_by_class` is a constantized string. Want to
correct that and make them uniform. Only did it this way because that's
how it was suggested in the ticket.
Refs #4401 | 
|  | Robert argues that the class variable is not ideal because its value
gets shared with subclasses, violating the Liskov substitution
principle:
    17:44:23 < robert> ```133] pry(main)> class A; @@greeting = :hello end
    17:44:23 < robert> => :hello
    17:44:23 < robert> [134] pry(main)> class B < A; end
    17:44:23 < robert> => nil
    17:44:23 < robert> [135] pry(main)> B.class_variable_get '@@greeting'
    17:44:23 < robert> => :hello
Instead, go with his suggestion to use a class instance variable
instead, which gives us the same amount of availability of the `all`
list while not sharing it indiscriminately and making it easier to test.
Refs #4401 | 
|  | A method that returns a string representation of the attribute, in the
form `:class#:name".
This will be used to store a reference to the attribute in the database.
For example, a validation will reference a `ModelAttribute` in a
database column using this `#code` string.
Refs #4401 | 
|  | We want to define `ModelAttribute`s for an initial set of `Chouette`
models:
* Chouette::Route
* Chouette::JourneyPattern
* Chouette::VehicleJourney
* Chouette::Footnote
* Chouette::TimeTable
* Chouette::RoutingConstraintZone
I added these by looking at the `schema.rb` as well as some form views
for these models. Given that information, I made some guesses about what
attributes it might make sense to add here.
We want to end up with a collection of only editable attributes for
these models, so this excludes things like `created_at`, foreign keys,
and programmatically set fields.
This is my guess at what those fields are. We can refine the list later.
We'll be using this list for Compliance Control to get a set of fields
of a given type in order to create custom validations using those
fields.
Refs #4401 | 
|  | When `ModelAttribute` instances are added to `@@all` directly in the
class, the test breaks. Make it a little more robust by checking change
in array size instead of total size.
Refs #4401 | 
|  | This new class will allow us to generate a list of all editable fields
in all our models including the type of each field.
We need this for Compliance Control, in order to get a list of fields or
models & fields that can be selected to validate a given model
validation check. The crucial bits here are the models, fields, and the
types of those fields. These need to be defined (manually at least to
begin with), accessible, and filterable.
Refs #4401 |