diff --git a/Gemfile b/Gemfile index a62907b..186b377 100644 --- a/Gemfile +++ b/Gemfile @@ -54,6 +54,7 @@ end group :development do # Use console on exceptions pages [https://github.com/rails/web-console] gem "web-console" + gem "rails-erd" end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index e8f3f8f..1f6ed98 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -96,6 +96,7 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) + choice (0.2.0) concurrent-ruby (1.3.5) connection_pool (2.5.4) crass (1.0.6) @@ -235,6 +236,11 @@ GEM activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) + rails-erd (1.7.2) + activerecord (>= 4.2) + activesupport (>= 4.2) + choice (~> 0.2.0) + ruby-graphviz (~> 1.2) rails-html-sanitizer (1.6.2) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) @@ -284,6 +290,8 @@ GEM rubocop (>= 1.72) rubocop-performance (>= 1.24) rubocop-rails (>= 2.30) + ruby-graphviz (1.2.5) + rexml ruby-progressbar (1.13.0) rubyzip (3.1.1) securerandom (0.4.1) @@ -384,6 +392,7 @@ DEPENDENCIES propshaft puma (>= 5.0) rails (~> 8.0.3) + rails-erd rubocop-rails-omakase selenium-webdriver solid_cable diff --git a/app/models/access_controller.rb b/app/models/access_controller.rb new file mode 100644 index 0000000..ec725f8 --- /dev/null +++ b/app/models/access_controller.rb @@ -0,0 +1,3 @@ +class AccessController < ApplicationRecord + belongs_to :sector +end diff --git a/app/models/access_path.rb b/app/models/access_path.rb new file mode 100644 index 0000000..ef5dee8 --- /dev/null +++ b/app/models/access_path.rb @@ -0,0 +1,2 @@ +class AccessPath < ApplicationRecord +end diff --git a/app/models/access_rule_set.rb b/app/models/access_rule_set.rb new file mode 100644 index 0000000..4298db5 --- /dev/null +++ b/app/models/access_rule_set.rb @@ -0,0 +1,2 @@ +class AccessRuleSet < ApplicationRecord +end diff --git a/app/models/building.rb b/app/models/building.rb new file mode 100644 index 0000000..f1959a2 --- /dev/null +++ b/app/models/building.rb @@ -0,0 +1,2 @@ +class Building < ApplicationRecord +end diff --git a/app/models/credential.rb b/app/models/credential.rb new file mode 100644 index 0000000..a8d612d --- /dev/null +++ b/app/models/credential.rb @@ -0,0 +1,4 @@ +class Credential < ApplicationRecord + belongs_to :person + belongs_to :credential_type +end diff --git a/app/models/credential_format.rb b/app/models/credential_format.rb new file mode 100644 index 0000000..f50b74d --- /dev/null +++ b/app/models/credential_format.rb @@ -0,0 +1,2 @@ +class CredentialFormat < ApplicationRecord +end diff --git a/app/models/credential_format_field.rb b/app/models/credential_format_field.rb new file mode 100644 index 0000000..b387ade --- /dev/null +++ b/app/models/credential_format_field.rb @@ -0,0 +1,2 @@ +class CredentialFormatField < ApplicationRecord +end diff --git a/app/models/credential_format_field_bit.rb b/app/models/credential_format_field_bit.rb new file mode 100644 index 0000000..db910a6 --- /dev/null +++ b/app/models/credential_format_field_bit.rb @@ -0,0 +1,3 @@ +class CredentialFormatFieldBit < ApplicationRecord + belongs_to :credential_format_field +end diff --git a/app/models/credential_format_parity_bit.rb b/app/models/credential_format_parity_bit.rb new file mode 100644 index 0000000..64ab11f --- /dev/null +++ b/app/models/credential_format_parity_bit.rb @@ -0,0 +1,2 @@ +class CredentialFormatParityBit < ApplicationRecord +end diff --git a/app/models/credential_format_parity_bit_range.rb b/app/models/credential_format_parity_bit_range.rb new file mode 100644 index 0000000..9b677d4 --- /dev/null +++ b/app/models/credential_format_parity_bit_range.rb @@ -0,0 +1,3 @@ +class CredentialFormatParityBitRange < ApplicationRecord + belongs_to :credential_format_parity +end diff --git a/app/models/credential_type.rb b/app/models/credential_type.rb new file mode 100644 index 0000000..95d2ca9 --- /dev/null +++ b/app/models/credential_type.rb @@ -0,0 +1,2 @@ +class CredentialType < ApplicationRecord +end diff --git a/app/models/entry_way.rb b/app/models/entry_way.rb new file mode 100644 index 0000000..2c26465 --- /dev/null +++ b/app/models/entry_way.rb @@ -0,0 +1,4 @@ +class EntryWay < ApplicationRecord + belongs_to :sector + belongs_to :access_controller +end diff --git a/app/models/group.rb b/app/models/group.rb new file mode 100644 index 0000000..a8e77b5 --- /dev/null +++ b/app/models/group.rb @@ -0,0 +1,2 @@ +class Group < ApplicationRecord +end diff --git a/app/models/person.rb b/app/models/person.rb new file mode 100644 index 0000000..853c6cd --- /dev/null +++ b/app/models/person.rb @@ -0,0 +1,3 @@ +class Person < ApplicationRecord + belongs_to :group +end diff --git a/app/models/reader.rb b/app/models/reader.rb new file mode 100644 index 0000000..24cf8d6 --- /dev/null +++ b/app/models/reader.rb @@ -0,0 +1,4 @@ +class Reader < ApplicationRecord + belongs_to :access_controller + belongs_to :entry_way +end diff --git a/app/models/sector.rb b/app/models/sector.rb new file mode 100644 index 0000000..109ca43 --- /dev/null +++ b/app/models/sector.rb @@ -0,0 +1,4 @@ +class Sector < ApplicationRecord + belongs_to :building + belongs_to :parent +end diff --git a/app/models/sensor.rb b/app/models/sensor.rb new file mode 100644 index 0000000..c982027 --- /dev/null +++ b/app/models/sensor.rb @@ -0,0 +1,4 @@ +class Sensor < ApplicationRecord + belongs_to :access_controller + belongs_to :entry_way +end diff --git a/db/migrate/20251002155507_create_buildings.rb b/db/migrate/20251002155507_create_buildings.rb new file mode 100644 index 0000000..9e205cd --- /dev/null +++ b/db/migrate/20251002155507_create_buildings.rb @@ -0,0 +1,15 @@ +class CreateBuildings < ActiveRecord::Migration[8.0] + def change + create_table :buildings do |t| + t.string :name + t.string :address + t.string :address_2 + t.string :city + t.string :region + t.string :country + t.string :postal_code + + t.timestamps + end + end +end diff --git a/db/migrate/20251002155745_create_sectors.rb b/db/migrate/20251002155745_create_sectors.rb new file mode 100644 index 0000000..be4c150 --- /dev/null +++ b/db/migrate/20251002155745_create_sectors.rb @@ -0,0 +1,11 @@ +class CreateSectors < ActiveRecord::Migration[8.0] + def change + create_table :sectors do |t| + t.string :name + t.references :building, null: false, foreign_key: true + t.references :parent, null: true, foreign_key: { to_table: :sectors } + + t.timestamps + end + end +end diff --git a/db/migrate/20251002160131_create_access_paths.rb b/db/migrate/20251002160131_create_access_paths.rb new file mode 100644 index 0000000..c74f95a --- /dev/null +++ b/db/migrate/20251002160131_create_access_paths.rb @@ -0,0 +1,9 @@ +class CreateAccessPaths < ActiveRecord::Migration[8.0] + def change + create_table :access_paths do |t| + t.string :name + + t.timestamps + end + end +end diff --git a/db/migrate/20251002160746_create_access_controllers.rb b/db/migrate/20251002160746_create_access_controllers.rb new file mode 100644 index 0000000..bff8d3a --- /dev/null +++ b/db/migrate/20251002160746_create_access_controllers.rb @@ -0,0 +1,15 @@ +class CreateAccessControllers < ActiveRecord::Migration[8.0] + def change + create_table :access_controllers do |t| + t.string :name + t.string :model + t.string :brand + t.json :metadata + t.json :public_metadata + t.references :sector, null: false, foreign_key: true + t.boolean :is_virtual + + t.timestamps + end + end +end diff --git a/db/migrate/20251002160910_create_entry_ways.rb b/db/migrate/20251002160910_create_entry_ways.rb new file mode 100644 index 0000000..bc4a13b --- /dev/null +++ b/db/migrate/20251002160910_create_entry_ways.rb @@ -0,0 +1,11 @@ +class CreateEntryWays < ActiveRecord::Migration[8.0] + def change + create_table :entry_ways do |t| + t.string :name + t.references :sector, null: false, foreign_key: true + t.references :access_controller, null: false, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/migrate/20251002161415_create_readers.rb b/db/migrate/20251002161415_create_readers.rb new file mode 100644 index 0000000..8400f43 --- /dev/null +++ b/db/migrate/20251002161415_create_readers.rb @@ -0,0 +1,16 @@ +class CreateReaders < ActiveRecord::Migration[8.0] + def change + create_table :readers do |t| + t.string :name + t.string :brand + t.string :model + t.string :serial_number + t.references :access_controller, null: false, foreign_key: true + t.string :last_known_state + t.datetime :last_state_update + t.references :entry_way, null: false, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/migrate/20251002161515_create_groups.rb b/db/migrate/20251002161515_create_groups.rb new file mode 100644 index 0000000..66e9c8e --- /dev/null +++ b/db/migrate/20251002161515_create_groups.rb @@ -0,0 +1,9 @@ +class CreateGroups < ActiveRecord::Migration[8.0] + def change + create_table :groups do |t| + t.string :name + + t.timestamps + end + end +end diff --git a/db/migrate/20251002161628_create_people.rb b/db/migrate/20251002161628_create_people.rb new file mode 100644 index 0000000..dec8ab8 --- /dev/null +++ b/db/migrate/20251002161628_create_people.rb @@ -0,0 +1,15 @@ +class CreatePeople < ActiveRecord::Migration[8.0] + def change + create_table :people do |t| + t.string :first_name + t.string :last_name + t.string :title + t.string :phone_number + t.string :email + t.references :group, null: false, foreign_key: true + t.json :metadata + + t.timestamps + end + end +end diff --git a/db/migrate/20251002161732_create_sensors.rb b/db/migrate/20251002161732_create_sensors.rb new file mode 100644 index 0000000..c1caf91 --- /dev/null +++ b/db/migrate/20251002161732_create_sensors.rb @@ -0,0 +1,16 @@ +class CreateSensors < ActiveRecord::Migration[8.0] + def change + create_table :sensors do |t| + t.string :name + t.string :brand + t.string :model + t.string :serial_number + t.references :access_controller, null: false, foreign_key: true + t.references :entry_way, null: false, foreign_key: true + t.string :last_known_state + t.datetime :last_state_update + + t.timestamps + end + end +end diff --git a/db/migrate/20251002162628_create_credential_formats.rb b/db/migrate/20251002162628_create_credential_formats.rb new file mode 100644 index 0000000..791f923 --- /dev/null +++ b/db/migrate/20251002162628_create_credential_formats.rb @@ -0,0 +1,10 @@ +class CreateCredentialFormats < ActiveRecord::Migration[8.0] + def change + create_table :credential_formats do |t| + t.string :name + t.integer :length + + t.timestamps + end + end +end diff --git a/db/migrate/20251002162752_create_credential_format_fields.rb b/db/migrate/20251002162752_create_credential_format_fields.rb new file mode 100644 index 0000000..79433e6 --- /dev/null +++ b/db/migrate/20251002162752_create_credential_format_fields.rb @@ -0,0 +1,9 @@ +class CreateCredentialFormatFields < ActiveRecord::Migration[8.0] + def change + create_table :credential_format_fields do |t| + t.string :name + + t.timestamps + end + end +end diff --git a/db/migrate/20251002163403_create_credential_format_field_bits.rb b/db/migrate/20251002163403_create_credential_format_field_bits.rb new file mode 100644 index 0000000..0d3a02b --- /dev/null +++ b/db/migrate/20251002163403_create_credential_format_field_bits.rb @@ -0,0 +1,11 @@ +class CreateCredentialFormatFieldBits < ActiveRecord::Migration[8.0] + def change + create_table :credential_format_field_bits do |t| + t.integer :index + t.references :credential_format_field, null: false, foreign_key: true + t.integer :position + + t.timestamps + end + end +end diff --git a/db/migrate/20251002163501_create_credential_format_parity_bits.rb b/db/migrate/20251002163501_create_credential_format_parity_bits.rb new file mode 100644 index 0000000..79fbda6 --- /dev/null +++ b/db/migrate/20251002163501_create_credential_format_parity_bits.rb @@ -0,0 +1,10 @@ +class CreateCredentialFormatParityBits < ActiveRecord::Migration[8.0] + def change + create_table :credential_format_parity_bits do |t| + t.string :kind + t.string :index + + t.timestamps + end + end +end diff --git a/db/migrate/20251002163557_create_credential_format_parity_bit_ranges.rb b/db/migrate/20251002163557_create_credential_format_parity_bit_ranges.rb new file mode 100644 index 0000000..c5e17b4 --- /dev/null +++ b/db/migrate/20251002163557_create_credential_format_parity_bit_ranges.rb @@ -0,0 +1,11 @@ +class CreateCredentialFormatParityBitRanges < ActiveRecord::Migration[8.0] + def change + create_table :credential_format_parity_bit_ranges do |t| + t.references :credential_format_parity, null: false, foreign_key: true + t.integer :index + t.integer :position + + t.timestamps + end + end +end diff --git a/db/migrate/20251002164322_create_credential_types.rb b/db/migrate/20251002164322_create_credential_types.rb new file mode 100644 index 0000000..8636dda --- /dev/null +++ b/db/migrate/20251002164322_create_credential_types.rb @@ -0,0 +1,11 @@ +class CreateCredentialTypes < ActiveRecord::Migration[8.0] + def change + create_table :credential_types do |t| + t.string :kind + t.string :frequency + t.string :protocol + + t.timestamps + end + end +end diff --git a/db/migrate/20251002165720_create_credentials.rb b/db/migrate/20251002165720_create_credentials.rb new file mode 100644 index 0000000..4ab7d27 --- /dev/null +++ b/db/migrate/20251002165720_create_credentials.rb @@ -0,0 +1,10 @@ +class CreateCredentials < ActiveRecord::Migration[8.0] + def change + create_table :credentials do |t| + t.references :person, null: false, foreign_key: true + t.references :credential_type, null: false, foreign_key: true + + t.timestamps + end + end +end diff --git a/db/migrate/20251003152945_create_access_rule_sets.rb b/db/migrate/20251003152945_create_access_rule_sets.rb new file mode 100644 index 0000000..077c836 --- /dev/null +++ b/db/migrate/20251003152945_create_access_rule_sets.rb @@ -0,0 +1,9 @@ +class CreateAccessRuleSets < ActiveRecord::Migration[8.0] + def change + create_table :access_rule_sets do |t| + t.string :name + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000..4acacc6 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,183 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# This file is the source Rails uses to define your schema when running `bin/rails +# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema[8.0].define(version: 2025_10_02_165720) do + create_table "access_controllers", force: :cascade do |t| + t.string "name" + t.string "model" + t.string "brand" + t.json "metadata" + t.json "public_metadata" + t.integer "sector_id", null: false + t.boolean "is_virtual" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["sector_id"], name: "index_access_controllers_on_sector_id" + end + + create_table "access_paths", force: :cascade do |t| + t.string "name" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "buildings", force: :cascade do |t| + t.string "name" + t.string "address" + t.string "address_2" + t.string "city" + t.string "region" + t.string "country" + t.string "postal_code" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "credential_format_field_bits", force: :cascade do |t| + t.integer "index" + t.integer "credential_format_field_id", null: false + t.integer "position" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["credential_format_field_id"], name: "idx_on_credential_format_field_id_fb5865f3a1" + end + + create_table "credential_format_fields", force: :cascade do |t| + t.string "name" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "credential_format_parity_bit_ranges", force: :cascade do |t| + t.integer "credential_format_parity_id", null: false + t.integer "index" + t.integer "position" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["credential_format_parity_id"], name: "idx_on_credential_format_parity_id_aed47f38e7" + end + + create_table "credential_format_parity_bits", force: :cascade do |t| + t.string "kind" + t.string "index" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "credential_formats", force: :cascade do |t| + t.string "name" + t.integer "length" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "credential_types", force: :cascade do |t| + t.string "kind" + t.string "frequency" + t.string "protocol" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "credentials", force: :cascade do |t| + t.integer "person_id", null: false + t.integer "credential_type_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["credential_type_id"], name: "index_credentials_on_credential_type_id" + t.index ["person_id"], name: "index_credentials_on_person_id" + end + + create_table "entry_ways", force: :cascade do |t| + t.string "name" + t.integer "sector_id", null: false + t.integer "access_controller_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["access_controller_id"], name: "index_entry_ways_on_access_controller_id" + t.index ["sector_id"], name: "index_entry_ways_on_sector_id" + end + + create_table "groups", force: :cascade do |t| + t.string "name" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "people", force: :cascade do |t| + t.string "first_name" + t.string "last_name" + t.string "title" + t.string "phone_number" + t.string "email" + t.integer "group_id", null: false + t.json "metadata" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["group_id"], name: "index_people_on_group_id" + end + + create_table "readers", force: :cascade do |t| + t.string "name" + t.string "brand" + t.string "model" + t.string "serial_number" + t.integer "access_controller_id", null: false + t.string "last_known_state" + t.datetime "last_state_update" + t.integer "entry_way_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["access_controller_id"], name: "index_readers_on_access_controller_id" + t.index ["entry_way_id"], name: "index_readers_on_entry_way_id" + end + + create_table "sectors", force: :cascade do |t| + t.string "name" + t.integer "building_id", null: false + t.integer "parent_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["building_id"], name: "index_sectors_on_building_id" + t.index ["parent_id"], name: "index_sectors_on_parent_id" + end + + create_table "sensors", force: :cascade do |t| + t.string "name" + t.string "brand" + t.string "model" + t.string "serial_number" + t.integer "access_controller_id", null: false + t.integer "entry_way_id", null: false + t.string "last_known_state" + t.datetime "last_state_update" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["access_controller_id"], name: "index_sensors_on_access_controller_id" + t.index ["entry_way_id"], name: "index_sensors_on_entry_way_id" + end + + add_foreign_key "access_controllers", "sectors" + add_foreign_key "credential_format_field_bits", "credential_format_fields" + add_foreign_key "credential_format_parity_bit_ranges", "credential_format_parities" + add_foreign_key "credentials", "credential_types" + add_foreign_key "credentials", "people" + add_foreign_key "entry_ways", "access_controllers" + add_foreign_key "entry_ways", "sectors" + add_foreign_key "people", "groups" + add_foreign_key "readers", "access_controllers" + add_foreign_key "readers", "entry_ways" + add_foreign_key "sectors", "buildings" + add_foreign_key "sectors", "sectors", column: "parent_id" + add_foreign_key "sensors", "access_controllers" + add_foreign_key "sensors", "entry_ways" +end diff --git a/erd.pdf b/erd.pdf new file mode 100644 index 0000000..520a3a1 Binary files /dev/null and b/erd.pdf differ diff --git a/test/fixtures/access_controllers.yml b/test/fixtures/access_controllers.yml new file mode 100644 index 0000000..4e3b2f4 --- /dev/null +++ b/test/fixtures/access_controllers.yml @@ -0,0 +1,19 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + model: MyString + brand: MyString + metadata: + public_metadata: + sector: one + is_virtual: false + +two: + name: MyString + model: MyString + brand: MyString + metadata: + public_metadata: + sector: two + is_virtual: false diff --git a/test/fixtures/access_paths.yml b/test/fixtures/access_paths.yml new file mode 100644 index 0000000..7d41224 --- /dev/null +++ b/test/fixtures/access_paths.yml @@ -0,0 +1,7 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + +two: + name: MyString diff --git a/test/fixtures/access_rule_sets.yml b/test/fixtures/access_rule_sets.yml new file mode 100644 index 0000000..7d41224 --- /dev/null +++ b/test/fixtures/access_rule_sets.yml @@ -0,0 +1,7 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + +two: + name: MyString diff --git a/test/fixtures/buildings.yml b/test/fixtures/buildings.yml new file mode 100644 index 0000000..426e8c3 --- /dev/null +++ b/test/fixtures/buildings.yml @@ -0,0 +1,19 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + address: MyString + address_2: MyString + city: MyString + region: MyString + country: MyString + postal_code: MyString + +two: + name: MyString + address: MyString + address_2: MyString + city: MyString + region: MyString + country: MyString + postal_code: MyString diff --git a/test/fixtures/credential_format_field_bits.yml b/test/fixtures/credential_format_field_bits.yml new file mode 100644 index 0000000..8060fc8 --- /dev/null +++ b/test/fixtures/credential_format_field_bits.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + index: 1 + credential_format_field: one + position: 1 + +two: + index: 1 + credential_format_field: two + position: 1 diff --git a/test/fixtures/credential_format_fields.yml b/test/fixtures/credential_format_fields.yml new file mode 100644 index 0000000..7d41224 --- /dev/null +++ b/test/fixtures/credential_format_fields.yml @@ -0,0 +1,7 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + +two: + name: MyString diff --git a/test/fixtures/credential_format_parity_bit_ranges.yml b/test/fixtures/credential_format_parity_bit_ranges.yml new file mode 100644 index 0000000..4244a33 --- /dev/null +++ b/test/fixtures/credential_format_parity_bit_ranges.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + credential_format_parity: one + index: 1 + position: 1 + +two: + credential_format_parity: two + index: 1 + position: 1 diff --git a/test/fixtures/credential_format_parity_bits.yml b/test/fixtures/credential_format_parity_bits.yml new file mode 100644 index 0000000..483d6e0 --- /dev/null +++ b/test/fixtures/credential_format_parity_bits.yml @@ -0,0 +1,9 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + kind: MyString + index: MyString + +two: + kind: MyString + index: MyString diff --git a/test/fixtures/credential_formats.yml b/test/fixtures/credential_formats.yml new file mode 100644 index 0000000..a469bf9 --- /dev/null +++ b/test/fixtures/credential_formats.yml @@ -0,0 +1,9 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + length: 1 + +two: + name: MyString + length: 1 diff --git a/test/fixtures/credential_types.yml b/test/fixtures/credential_types.yml new file mode 100644 index 0000000..827ea42 --- /dev/null +++ b/test/fixtures/credential_types.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + kind: MyString + frequency: MyString + protocol: MyString + +two: + kind: MyString + frequency: MyString + protocol: MyString diff --git a/test/fixtures/credentials.yml b/test/fixtures/credentials.yml new file mode 100644 index 0000000..95062e3 --- /dev/null +++ b/test/fixtures/credentials.yml @@ -0,0 +1,9 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + person: one + credential_type: one + +two: + person: two + credential_type: two diff --git a/test/fixtures/entry_ways.yml b/test/fixtures/entry_ways.yml new file mode 100644 index 0000000..8d402ea --- /dev/null +++ b/test/fixtures/entry_ways.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + sector: one + access_controller: one + +two: + name: MyString + sector: two + access_controller: two diff --git a/test/fixtures/groups.yml b/test/fixtures/groups.yml new file mode 100644 index 0000000..7d41224 --- /dev/null +++ b/test/fixtures/groups.yml @@ -0,0 +1,7 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + +two: + name: MyString diff --git a/test/fixtures/people.yml b/test/fixtures/people.yml new file mode 100644 index 0000000..94cad37 --- /dev/null +++ b/test/fixtures/people.yml @@ -0,0 +1,19 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + first_name: MyString + last_name: MyString + title: MyString + phone_number: MyString + email: MyString + group: one + metadata: + +two: + first_name: MyString + last_name: MyString + title: MyString + phone_number: MyString + email: MyString + group: two + metadata: diff --git a/test/fixtures/readers.yml b/test/fixtures/readers.yml new file mode 100644 index 0000000..d1e6065 --- /dev/null +++ b/test/fixtures/readers.yml @@ -0,0 +1,21 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + brand: MyString + model: MyString + serial_number: MyString + access_controller: one + last_known_state: MyString + last_state_update: 2025-10-02 12:14:15 + entry_way: one + +two: + name: MyString + brand: MyString + model: MyString + serial_number: MyString + access_controller: two + last_known_state: MyString + last_state_update: 2025-10-02 12:14:15 + entry_way: two diff --git a/test/fixtures/sectors.yml b/test/fixtures/sectors.yml new file mode 100644 index 0000000..20b91e7 --- /dev/null +++ b/test/fixtures/sectors.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + building: one + parent: one + +two: + name: MyString + building: two + parent: two diff --git a/test/fixtures/sensors.yml b/test/fixtures/sensors.yml new file mode 100644 index 0000000..1cd81fb --- /dev/null +++ b/test/fixtures/sensors.yml @@ -0,0 +1,21 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + brand: MyString + model: MyString + serial_number: MyString + access_controller: one + entry_way: one + last_known_state: MyString + last_state_update: 2025-10-02 12:17:32 + +two: + name: MyString + brand: MyString + model: MyString + serial_number: MyString + access_controller: two + entry_way: two + last_known_state: MyString + last_state_update: 2025-10-02 12:17:32 diff --git a/test/models/access_controller_test.rb b/test/models/access_controller_test.rb new file mode 100644 index 0000000..fb9d4cd --- /dev/null +++ b/test/models/access_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class AccessControllerTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/access_path_test.rb b/test/models/access_path_test.rb new file mode 100644 index 0000000..4330d13 --- /dev/null +++ b/test/models/access_path_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class AccessPathTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/access_rule_set_test.rb b/test/models/access_rule_set_test.rb new file mode 100644 index 0000000..30c0a66 --- /dev/null +++ b/test/models/access_rule_set_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class AccessRuleSetTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/building_test.rb b/test/models/building_test.rb new file mode 100644 index 0000000..179fec1 --- /dev/null +++ b/test/models/building_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class BuildingTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/credential_format_field_bit_test.rb b/test/models/credential_format_field_bit_test.rb new file mode 100644 index 0000000..e34034b --- /dev/null +++ b/test/models/credential_format_field_bit_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class CredentialFormatFieldBitTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/credential_format_field_test.rb b/test/models/credential_format_field_test.rb new file mode 100644 index 0000000..718a9fd --- /dev/null +++ b/test/models/credential_format_field_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class CredentialFormatFieldTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/credential_format_parity_bit_range_test.rb b/test/models/credential_format_parity_bit_range_test.rb new file mode 100644 index 0000000..d1ab27b --- /dev/null +++ b/test/models/credential_format_parity_bit_range_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class CredentialFormatParityBitRangeTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/credential_format_parity_bit_test.rb b/test/models/credential_format_parity_bit_test.rb new file mode 100644 index 0000000..6df1a2f --- /dev/null +++ b/test/models/credential_format_parity_bit_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class CredentialFormatParityBitTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/credential_format_test.rb b/test/models/credential_format_test.rb new file mode 100644 index 0000000..5864447 --- /dev/null +++ b/test/models/credential_format_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class CredentialFormatTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/credential_test.rb b/test/models/credential_test.rb new file mode 100644 index 0000000..3396384 --- /dev/null +++ b/test/models/credential_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class CredentialTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/credential_type_test.rb b/test/models/credential_type_test.rb new file mode 100644 index 0000000..9b51373 --- /dev/null +++ b/test/models/credential_type_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class CredentialTypeTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/entry_way_test.rb b/test/models/entry_way_test.rb new file mode 100644 index 0000000..1296dcc --- /dev/null +++ b/test/models/entry_way_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class EntryWayTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/group_test.rb b/test/models/group_test.rb new file mode 100644 index 0000000..eddbcc8 --- /dev/null +++ b/test/models/group_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class GroupTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/person_test.rb b/test/models/person_test.rb new file mode 100644 index 0000000..357c9af --- /dev/null +++ b/test/models/person_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class PersonTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/reader_test.rb b/test/models/reader_test.rb new file mode 100644 index 0000000..ae2a412 --- /dev/null +++ b/test/models/reader_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class ReaderTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/sector_test.rb b/test/models/sector_test.rb new file mode 100644 index 0000000..7ae4626 --- /dev/null +++ b/test/models/sector_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class SectorTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/sensor_test.rb b/test/models/sensor_test.rb new file mode 100644 index 0000000..08c495f --- /dev/null +++ b/test/models/sensor_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class SensorTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end