From 783f28762ffb3a9de911438257df451819cf7510 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 28 Jun 2021 08:38:48 +0200 Subject: [PATCH 1/3] run non interactively --- CHANGELOG.md | 2 ++ lib/tasks/fablab/chain.rake | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a3df5c60..16f139073 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog Fab-manager +- Ability to run `fablab:chain:all` non interactively + ## v5.0.7 2021 June 24 - Fix a bug: unable to export members list if no subscriptions was taken diff --git a/lib/tasks/fablab/chain.rake b/lib/tasks/fablab/chain.rake index 43bc22bd4..324ae3fe4 100644 --- a/lib/tasks/fablab/chain.rake +++ b/lib/tasks/fablab/chain.rake @@ -3,8 +3,8 @@ namespace :fablab do namespace :chain do desc 'assign all footprints to existing records' - task all: :environment do - if Invoice.where.not(footprint: nil).count.positive? + task :all, [:force] => :environment do |_task, args| + if Invoice.where.not(footprint: nil).count.positive? && args.force != 'force' print 'All footprints will be regenerated. Are you sure? (y/n) ' confirm = STDIN.gets.chomp next unless confirm == 'y' From 66ba8e565c99824de01d3e5e3bfcf3776792b2fd Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 28 Jun 2021 09:50:37 +0200 Subject: [PATCH 2/3] Full test coverage of the OpenAPI Also: fix related bugs --- CHANGELOG.md | 4 ++ .../open_api/v1/invoices_controller.rb | 1 + app/doc/open_api/v1/reservations_doc.rb | 2 +- app/models/invoice.rb | 1 + .../open_api/v1/events/index.json.jbuilder | 10 ++-- .../7/FabManager_invoice-3_10062015.pdf | Bin 0 -> 99700 bytes .../open_api_calls_count_tracings.yml | 0 test/fixtures/open_api_clients.yml | 7 +++ .../open_api/bookable_machines_test.rb | 21 +++++++ test/integration/open_api/events_test.rb | 36 ++++++++++++ test/integration/open_api/invoices_test.rb | 37 +++++++++++++ test/integration/open_api/machines_test.rb | 52 ++++++++++++++++++ .../integration/open_api/reservations_test.rb | 41 ++++++++++++++ test/integration/open_api/trainings_test.rb | 17 ++++++ test/integration/open_api/users_test.rb | 31 +++++++++++ .../payment_schedules_test.rb} | 2 +- test/test_helper.rb | 4 ++ 17 files changed, 260 insertions(+), 6 deletions(-) create mode 100644 test/fixtures/files/invoices/7/FabManager_invoice-3_10062015.pdf create mode 100644 test/fixtures/open_api_calls_count_tracings.yml create mode 100644 test/fixtures/open_api_clients.yml create mode 100644 test/integration/open_api/bookable_machines_test.rb create mode 100644 test/integration/open_api/events_test.rb create mode 100644 test/integration/open_api/invoices_test.rb create mode 100644 test/integration/open_api/machines_test.rb create mode 100644 test/integration/open_api/reservations_test.rb create mode 100644 test/integration/open_api/trainings_test.rb create mode 100644 test/integration/open_api/users_test.rb rename test/{controllers/payment_schedules_controller_test.rb => integration/payment_schedules_test.rb} (83%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16f139073..204f226f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog Fab-manager - Ability to run `fablab:chain:all` non interactively +- Full test coverage of the OpenAPI +- Fix a bug: unable to get the Events without images from the OpenAPI +- Fix a bug: unable to get the Space reservations from the OpenAPI +- Fix a bug: unable to get invoices from the OpenAPI ## v5.0.7 2021 June 24 diff --git a/app/controllers/open_api/v1/invoices_controller.rb b/app/controllers/open_api/v1/invoices_controller.rb index 373e18910..f7254863d 100644 --- a/app/controllers/open_api/v1/invoices_controller.rb +++ b/app/controllers/open_api/v1/invoices_controller.rb @@ -8,6 +8,7 @@ class OpenAPI::V1::InvoicesController < OpenAPI::V1::BaseController def index @invoices = Invoice.order(created_at: :desc) + .includes(invoicing_profile: :user) .references(:invoicing_profiles) @invoices = @invoices.where('invoicing_profiles.user_id = ?', params[:user_id]) if params[:user_id].present? diff --git a/app/doc/open_api/v1/reservations_doc.rb b/app/doc/open_api/v1/reservations_doc.rb index f56458ec7..977e1c7e0 100644 --- a/app/doc/open_api/v1/reservations_doc.rb +++ b/app/doc/open_api/v1/reservations_doc.rb @@ -16,7 +16,7 @@ class OpenAPI::V1::ReservationsDoc < OpenAPI::V1::BaseDoc description 'Index of reservations made by users, with optional pagination. Order by *created_at* descendant.' param_group :pagination param :user_id, [Integer, Array], optional: true, desc: 'Scope the request to one or various users.' - param :reservable_type, %w[Event Machine Training], optional: true, desc: 'Scope the request to a specific type of reservable.' + param :reservable_type, %w[Event Machine Space Training], optional: true, desc: 'Scope the request to a specific type of reservable.' param :reservable_id, [Integer, Array], optional: true, desc: 'Scope the request to one or various reservables.' example <<-RESERVATIONS diff --git a/app/models/invoice.rb b/app/models/invoice.rb index 6db1212f3..37e5aa6cd 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -27,6 +27,7 @@ class Invoice < PaymentDocument def file dir = "invoices/#{invoicing_profile.id}" + dir = "test/fixtures/files/invoices/#{invoicing_profile.id}" if Rails.env.test? # create directories if they doesn't exists (invoice & invoicing_profile_id) FileUtils.mkdir_p dir diff --git a/app/views/open_api/v1/events/index.json.jbuilder b/app/views/open_api/v1/events/index.json.jbuilder index 57f083cd4..12f7ea1a2 100644 --- a/app/views/open_api/v1/events/index.json.jbuilder +++ b/app/views/open_api/v1/events/index.json.jbuilder @@ -3,10 +3,12 @@ json.events @events do |event| json.extract! event, :nb_total_places, :nb_free_places json.start_at event.availability.start_at json.end_at event.availability.end_at - json.event_image do - json.large_url root_url.chomp('/') + event.event_image.attachment.large.url - json.medium_url root_url.chomp('/') + event.event_image.attachment.medium.url - json.small_url root_url.chomp('/') + event.event_image.attachment.small.url + if event.event_image + json.event_image do + json.large_url root_url.chomp('/') + event.event_image.attachment.large.url + json.medium_url root_url.chomp('/') + event.event_image.attachment.medium.url + json.small_url root_url.chomp('/') + event.event_image.attachment.small.url + end end json.prices do json.normal do diff --git a/test/fixtures/files/invoices/7/FabManager_invoice-3_10062015.pdf b/test/fixtures/files/invoices/7/FabManager_invoice-3_10062015.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b142afa616c38475466c641f71dcc9c10ea1c4d4 GIT binary patch literal 99700 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

-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

iN6?7&xB@_3?IEG;HLa?M(NIta-{YqPX{h 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/open_api_calls_count_tracings.yml b/test/fixtures/open_api_calls_count_tracings.yml new file mode 100644 index 000000000..e69de29bb diff --git a/test/fixtures/open_api_clients.yml b/test/fixtures/open_api_clients.yml new file mode 100644 index 000000000..012f973b4 --- /dev/null +++ b/test/fixtures/open_api_clients.yml @@ -0,0 +1,7 @@ +minitest: + id: 1 + name: minitest + calls_count: 0 + token: TcAbo97tro21vBkbesZTkg2L + created_at: '2021-06-28 06:43:39.237107' + updated_at: '2021-06-28 06:43:39.237107' diff --git a/test/integration/open_api/bookable_machines_test.rb b/test/integration/open_api/bookable_machines_test.rb new file mode 100644 index 000000000..373656659 --- /dev/null +++ b/test/integration/open_api/bookable_machines_test.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'test_helper' + +module OpenApi; end + +class OpenApi::BookableMachinesTest < ActionDispatch::IntegrationTest + def setup + @token = OpenAPI::Client.find_by(name: 'minitest').token + end + + test 'list all bookable machines without user_id' do + get '/open_api/v1/bookable_machines', headers: open_api_headers(@token) + assert_response :internal_server_error + end + + test 'list all bookable machines' do + get '/open_api/v1/bookable_machines?user_id=3', headers: open_api_headers(@token) + assert_response :success + end +end diff --git a/test/integration/open_api/events_test.rb b/test/integration/open_api/events_test.rb new file mode 100644 index 000000000..d723449f2 --- /dev/null +++ b/test/integration/open_api/events_test.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'test_helper' + +module OpenApi; end + +class OpenApi::EventsTest < ActionDispatch::IntegrationTest + def setup + @token = OpenAPI::Client.find_by(name: 'minitest').token + end + + test 'list all events' do + get '/open_api/v1/events', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all events with pagination' do + get '/open_api/v1/events?page=1&per_page=5', headers: open_api_headers(@token) + assert_response :success + end + + test 'list events for a given IDs' do + get '/open_api/v1/events?id=[3,4]', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all upcoming events' do + get '/open_api/v1/events?upcoming=true', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all upcoming events with pagination' do + get '/open_api/v1/events?upcoming=true&page=1&per_page=5', headers: open_api_headers(@token) + assert_response :success + end +end diff --git a/test/integration/open_api/invoices_test.rb b/test/integration/open_api/invoices_test.rb new file mode 100644 index 000000000..2455b03dd --- /dev/null +++ b/test/integration/open_api/invoices_test.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'test_helper' + +module OpenApi; end + +class OpenApi::InvoicesTest < ActionDispatch::IntegrationTest + def setup + @token = OpenAPI::Client.find_by(name: 'minitest').token + end + + test 'list all invoices' do + get '/open_api/v1/invoices', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all invoices with pagination' do + get '/open_api/v1/invoices?page=1&per_page=5', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all invoices for a user' do + get '/open_api/v1/invoices?user_id=3', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all invoices for a user with pagination' do + get '/open_api/v1/invoices?user_id=3&page=1&per_page=5', headers: open_api_headers(@token) + assert_response :success + end + + test 'download an invoice' do + get '/open_api/v1/invoices/3/download', headers: open_api_headers(@token) + assert_response :success + assert_match /^inline; filename=/, response.headers['Content-Disposition'] + end +end diff --git a/test/integration/open_api/machines_test.rb b/test/integration/open_api/machines_test.rb new file mode 100644 index 000000000..9aa00d5ee --- /dev/null +++ b/test/integration/open_api/machines_test.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +require 'test_helper' + +module OpenApi; end + +class OpenApi::MachinesTest < ActionDispatch::IntegrationTest + def setup + @token = OpenAPI::Client.find_by(name: 'minitest').token + end + + test 'list all machines' do + get '/open_api/v1/machines', headers: open_api_headers(@token) + assert_response :success + end + + test 'create a machine' do + post '/open_api/v1/machines', + params: { + machine: { + name: 'IJFX 350 Laser', + description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore...', + spec: 'Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium...', + disabled: true + } + }.to_json, + headers: open_api_headers(@token) + assert_response :success + end + + test 'update a machine' do + patch '/open_api/v1/machines/3', + params: { + machine: { + disabled: true, + name: '[DISABLED] Shopbot' + } + }.to_json, + headers: open_api_headers(@token) + assert_response :success + end + + test 'get a machine' do + get '/open_api/v1/machines/3', headers: open_api_headers(@token) + assert_response :success + end + + test 'delete a machine' do + delete '/open_api/v1/machines/3', headers: open_api_headers(@token) + assert_response :success + end +end diff --git a/test/integration/open_api/reservations_test.rb b/test/integration/open_api/reservations_test.rb new file mode 100644 index 000000000..d1cec96f2 --- /dev/null +++ b/test/integration/open_api/reservations_test.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +require 'test_helper' + +module OpenApi; end + +class OpenApi::ReservationsTest < ActionDispatch::IntegrationTest + def setup + @token = OpenAPI::Client.find_by(name: 'minitest').token + end + + test 'list all reservations' do + get '/open_api/v1/reservations', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all reservations with pagination' do + get '/open_api/v1/reservations?page=1&per_page=5', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all reservations for a user' do + get '/open_api/v1/reservations?user_id=3', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all reservations for a user with pagination' do + get '/open_api/v1/reservations?user_id=3&page=1&per_page=5', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all machine reservations for a user' do + get '/open_api/v1/reservations?reservable_type=Machine&user_id=3', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all machine 4 reservations' do + get '/open_api/v1/reservations?reservable_type=Machine&reservable_id=4', headers: open_api_headers(@token) + assert_response :success + end +end diff --git a/test/integration/open_api/trainings_test.rb b/test/integration/open_api/trainings_test.rb new file mode 100644 index 000000000..deda96800 --- /dev/null +++ b/test/integration/open_api/trainings_test.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require 'test_helper' + +module OpenApi; end + +class OpenApi::TrainingsTest < ActionDispatch::IntegrationTest + def setup + @token = OpenAPI::Client.find_by(name: 'minitest').token + end + + test 'list all trainings' do + get '/open_api/v1/trainings', headers: open_api_headers(@token) + assert_response :success + end + +end diff --git a/test/integration/open_api/users_test.rb b/test/integration/open_api/users_test.rb new file mode 100644 index 000000000..3c3c238cf --- /dev/null +++ b/test/integration/open_api/users_test.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'test_helper' + +module OpenApi; end + +class OpenApi::UsersTest < ActionDispatch::IntegrationTest + def setup + @token = OpenAPI::Client.find_by(name: 'minitest').token + end + + test 'list all users' do + get '/open_api/v1/users', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all users with pagination' do + get '/open_api/v1/users?page=1&per_page=5', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all users filtering by IDs' do + get '/open_api/v1/users?user_id=[3,4,5]', headers: open_api_headers(@token) + assert_response :success + end + + test 'list all users filtering by email' do + get '/open_api/v1/users?email=jean.dupond@gmail.com', headers: open_api_headers(@token) + assert_response :success + end +end diff --git a/test/controllers/payment_schedules_controller_test.rb b/test/integration/payment_schedules_test.rb similarity index 83% rename from test/controllers/payment_schedules_controller_test.rb rename to test/integration/payment_schedules_test.rb index 446e5a558..f662bec84 100644 --- a/test/controllers/payment_schedules_controller_test.rb +++ b/test/integration/payment_schedules_test.rb @@ -2,7 +2,7 @@ require 'test_helper' -class PaymentSchedulesControllerTest < ActionDispatch::IntegrationTest +class PaymentSchedulesTest < ActionDispatch::IntegrationTest def setup @user = User.friendly.find('pjproudhon') login_as(@user, scope: :user) diff --git a/test/test_helper.rb b/test/test_helper.rb index f5d45b1a7..39b482a24 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -36,6 +36,10 @@ class ActiveSupport::TestCase { 'Accept' => Mime[:json], 'Content-Type' => Mime[:json].to_s } end + def open_api_headers(token) + { 'Accept' => Mime[:json], 'Content-Type' => Mime[:json].to_s, 'Authorization' => "Token token=#{token}" } + end + def stripe_payment_method(error: nil) number = '4242424242424242' exp_month = 4 From 6485f54a45461c1e87341b5bc6a4fce264462e3c Mon Sep 17 00:00:00 2001 From: Sylvain Date: Mon, 28 Jun 2021 09:51:35 +0200 Subject: [PATCH 3/3] Version 5.0.8 --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 204f226f1..1c2cdee0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog Fab-manager +## v5.0.8 2021 June 28 + - Ability to run `fablab:chain:all` non interactively - Full test coverage of the OpenAPI - Fix a bug: unable to get the Events without images from the OpenAPI diff --git a/package.json b/package.json index b36fba43f..42db49922 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fab-manager", - "version": "5.0.7", + "version": "5.0.8", "description": "Fab-manager is the FabLab management solution. It provides a comprehensive, web-based, open-source tool to simplify your administrative tasks and your marker's projects.", "keywords": [ "fablab",