1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-11-28 09:24:24 +01:00

Enhanced rake task to create fixtures for test cases

This commit is contained in:
Sylvain 2020-07-22 09:45:20 +02:00
parent 14b0b2ac30
commit 19fb816d36
6 changed files with 53 additions and 31 deletions

View File

@ -2,6 +2,7 @@
- Display an asterisk on the phone input field, in the admin creation form, if the phone is configured as required - Display an asterisk on the phone input field, in the admin creation form, if the phone is configured as required
- Keep the history of footprints data for verification purposes - Keep the history of footprints data for verification purposes
- Enhanced rake task to create fixtures for test cases
- Fix a bug: unable to export reservations - Fix a bug: unable to export reservations
- Fix a bug: unable to receive mails in development - Fix a bug: unable to receive mails in development
- [TODO DEPLOY] `rails fablab:maintenance:save_footprint_data` - [TODO DEPLOY] `rails fablab:maintenance:save_footprint_data`

View File

@ -39,7 +39,7 @@ class FootprintService
columns = FootprintService.footprint_columns(klass) columns = FootprintService.footprint_columns(klass)
current = FootprintService.footprint_data(klass, item) current = FootprintService.footprint_data(klass, item)
saved = FootprintDebug.find_by(footprint: item.footprint, klass: klass) saved = FootprintDebug.find_by(footprint: item.footprint, klass: klass)
puts "Debug footprint for Invoice [ id: #{item.id} ]" puts "Debug footprint for #{klass} [ id: #{item.id} ]"
puts '-----------------------------------------' puts '-----------------------------------------'
puts "columns: [ #{columns.join(', ')} ]" puts "columns: [ #{columns.join(', ')} ]"
puts "current footprint: #{current}" puts "current footprint: #{current}"

View File

@ -108,8 +108,8 @@ SET default_tablespace = '';
CREATE TABLE public.abuses ( CREATE TABLE public.abuses (
id integer NOT NULL, id integer NOT NULL,
signaled_type character varying,
signaled_id integer, signaled_id integer,
signaled_type character varying,
first_name character varying, first_name character varying,
last_name character varying, last_name character varying,
email character varying, email character varying,
@ -187,8 +187,8 @@ CREATE TABLE public.addresses (
locality character varying, locality character varying,
country character varying, country character varying,
postal_code character varying, postal_code character varying,
placeable_type character varying,
placeable_id integer, placeable_id integer,
placeable_type character varying,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone updated_at timestamp without time zone
); );
@ -263,8 +263,8 @@ CREATE TABLE public.ar_internal_metadata (
CREATE TABLE public.assets ( CREATE TABLE public.assets (
id integer NOT NULL, id integer NOT NULL,
viewable_type character varying,
viewable_id integer, viewable_id integer,
viewable_type character varying,
attachment character varying, attachment character varying,
type character varying, type character varying,
created_at timestamp without time zone, created_at timestamp without time zone,
@ -504,8 +504,8 @@ ALTER SEQUENCE public.coupons_id_seq OWNED BY public.coupons.id;
CREATE TABLE public.credits ( CREATE TABLE public.credits (
id integer NOT NULL, id integer NOT NULL,
creditable_type character varying,
creditable_id integer, creditable_id integer,
creditable_type character varying,
plan_id integer, plan_id integer,
hours integer, hours integer,
created_at timestamp without time zone, created_at timestamp without time zone,
@ -1046,8 +1046,8 @@ ALTER SEQUENCE public.invoice_items_id_seq OWNED BY public.invoice_items.id;
CREATE TABLE public.invoices ( CREATE TABLE public.invoices (
id integer NOT NULL, id integer NOT NULL,
invoiced_type character varying,
invoiced_id integer, invoiced_id integer,
invoiced_type character varying,
stp_invoice_id character varying, stp_invoice_id character varying,
total integer, total integer,
created_at timestamp without time zone, created_at timestamp without time zone,
@ -1226,15 +1226,15 @@ ALTER SEQUENCE public.machines_id_seq OWNED BY public.machines.id;
CREATE TABLE public.notifications ( CREATE TABLE public.notifications (
id integer NOT NULL, id integer NOT NULL,
receiver_id integer, receiver_id integer,
attached_object_type character varying,
attached_object_id integer, attached_object_id integer,
attached_object_type character varying,
notification_type_id integer, notification_type_id integer,
is_read boolean DEFAULT false, is_read boolean DEFAULT false,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone, updated_at timestamp without time zone,
receiver_type character varying, receiver_type character varying,
is_send boolean DEFAULT false, is_send boolean DEFAULT false,
meta_data jsonb DEFAULT '"{}"'::jsonb meta_data jsonb DEFAULT '{}'::jsonb
); );
@ -1575,8 +1575,8 @@ CREATE TABLE public.prices (
id integer NOT NULL, id integer NOT NULL,
group_id integer, group_id integer,
plan_id integer, plan_id integer,
priceable_type character varying,
priceable_id integer, priceable_id integer,
priceable_type character varying,
amount integer, amount integer,
created_at timestamp without time zone NOT NULL, created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL updated_at timestamp without time zone NOT NULL
@ -1891,8 +1891,8 @@ CREATE TABLE public.reservations (
message text, message text,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone, updated_at timestamp without time zone,
reservable_type character varying,
reservable_id integer, reservable_id integer,
reservable_type character varying,
nb_reserve_places integer, nb_reserve_places integer,
statistic_profile_id integer statistic_profile_id integer
); );
@ -1924,8 +1924,8 @@ ALTER SEQUENCE public.reservations_id_seq OWNED BY public.reservations.id;
CREATE TABLE public.roles ( CREATE TABLE public.roles (
id integer NOT NULL, id integer NOT NULL,
name character varying, name character varying,
resource_type character varying,
resource_id integer, resource_id integer,
resource_type character varying,
created_at timestamp without time zone, created_at timestamp without time zone,
updated_at timestamp without time zone updated_at timestamp without time zone
); );
@ -2859,8 +2859,8 @@ CREATE TABLE public.users_roles (
CREATE TABLE public.wallet_transactions ( CREATE TABLE public.wallet_transactions (
id integer NOT NULL, id integer NOT NULL,
wallet_id integer, wallet_id integer,
transactable_type character varying,
transactable_id integer, transactable_id integer,
transactable_type character varying,
transaction_type character varying, transaction_type character varying,
amount integer, amount integer,
created_at timestamp without time zone NOT NULL, created_at timestamp without time zone NOT NULL,
@ -3919,14 +3919,6 @@ ALTER TABLE ONLY public.roles
ADD CONSTRAINT roles_pkey PRIMARY KEY (id); ADD CONSTRAINT roles_pkey PRIMARY KEY (id);
--
-- Name: schema_migrations schema_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
ALTER TABLE ONLY public.schema_migrations
ADD CONSTRAINT schema_migrations_pkey PRIMARY KEY (version);
-- --
-- Name: settings settings_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- Name: settings settings_pkey; Type: CONSTRAINT; Schema: public; Owner: -
-- --
@ -4942,6 +4934,29 @@ CREATE INDEX profiles_lower_unaccent_last_name_trgm_idx ON public.profiles USING
CREATE INDEX projects_search_vector_idx ON public.projects USING gin (search_vector); CREATE INDEX projects_search_vector_idx ON public.projects USING gin (search_vector);
--
-- Name: unique_schema_migrations; Type: INDEX; Schema: public; Owner: -
--
CREATE UNIQUE INDEX unique_schema_migrations ON public.schema_migrations USING btree (version);
--
-- Name: accounting_periods accounting_periods_del_protect; Type: RULE; Schema: public; Owner: -
--
CREATE RULE accounting_periods_del_protect AS
ON DELETE TO public.accounting_periods DO INSTEAD NOTHING;
--
-- Name: accounting_periods accounting_periods_upd_protect; Type: RULE; Schema: public; Owner: -
--
CREATE RULE accounting_periods_upd_protect AS
ON UPDATE TO public.accounting_periods DO INSTEAD NOTHING;
-- --
-- Name: projects projects_search_content_trigger; Type: TRIGGER; Schema: public; Owner: - -- Name: projects projects_search_content_trigger; Type: TRIGGER; Schema: public; Owner: -
-- --
@ -5428,6 +5443,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20140605125131'), ('20140605125131'),
('20140605142133'), ('20140605142133'),
('20140605151442'), ('20140605151442'),
('20140606133116'),
('20140609092700'), ('20140609092700'),
('20140609092827'), ('20140609092827'),
('20140610153123'), ('20140610153123'),
@ -5496,12 +5512,14 @@ INSERT INTO "schema_migrations" (version) VALUES
('20150507075620'), ('20150507075620'),
('20150512123546'), ('20150512123546'),
('20150520132030'), ('20150520132030'),
('20150520133409'),
('20150526130729'), ('20150526130729'),
('20150527153312'), ('20150527153312'),
('20150529113555'), ('20150529113555'),
('20150601125944'), ('20150601125944'),
('20150603104502'), ('20150603104502'),
('20150603104658'), ('20150603104658'),
('20150603133050'),
('20150604081757'), ('20150604081757'),
('20150604131525'), ('20150604131525'),
('20150608142234'), ('20150608142234'),
@ -5583,6 +5601,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20160905142700'), ('20160905142700'),
('20160906094739'), ('20160906094739'),
('20160906094847'), ('20160906094847'),
('20160906145713'),
('20160915105234'), ('20160915105234'),
('20161123104604'), ('20161123104604'),
('20170109085345'), ('20170109085345'),

View File

@ -2,16 +2,17 @@
namespace :db do namespace :db do
desc 'Convert development DB to Rails test fixtures' desc 'Convert development DB to Rails test fixtures'
task to_fixtures: :environment do task :to_fixtures, [:table] => :environment do |_task, args|
TABLES_TO_SKIP = %w[ar_internal_metadata delayed_jobs schema_info schema_migrations].freeze TABLES_TO_SKIP = %w[ar_internal_metadata delayed_jobs schema_info schema_migrations].freeze
begin begin
ActiveRecord::Base.establish_connection ActiveRecord::Base.establish_connection
ActiveRecord::Base.connection.tables.each do |table_name| ActiveRecord::Base.connection.tables.each do |table_name|
next if TABLES_TO_SKIP.include?(table_name) next if TABLES_TO_SKIP.include?(table_name)
next if args.table && args.table != table_name
conter = '000' conter = '000'
file_path = "#{Rails.root}/test/fixtures/#{table_name}.yml" file_path = "#{Rails.root}/test/fixtures/test/#{table_name}.yml"
File.open(file_path, 'w') do |file| File.open(file_path, 'w') do |file|
rows = ActiveRecord::Base.connection.select_all("SELECT * FROM #{table_name}") rows = ActiveRecord::Base.connection.select_all("SELECT * FROM #{table_name}")
data = rows.each_with_object({}) do |record, hash| data = rows.each_with_object({}) do |record, hash|

View File

@ -35,15 +35,6 @@ namespace :fablab do
end end
end end
desc 'generate fixtures from db'
task generate_fixtures: :environment do
Rails.application.eager_load!
ActiveRecord::Base.descendants.reject { |c| [ActiveRecord::SchemaMigration, PartnerPlan].include? c }.each do |ar_base|
p "========== #{ar_base} =============="
ar_base.dump_fixtures
end
end
desc 'generate current code checksum' desc 'generate current code checksum'
task checksum: :environment do task checksum: :environment do
require 'checksum' require 'checksum'

10
test/fixtures/README.md vendored Normal file
View File

@ -0,0 +1,10 @@
# Test fixtures
Fixtures are test data.
Every time a new test is run, the database is filled with these data.
You can create fixtures manually or using the following task, to dump your current table/database to the YAML fixture files:
```bash
rails db:to_fixtures[table]
```
The parameter `table` is optional. If not specified, the whole database will be dumped.