1
0
зеркало из https://github.com/glebtv/yookassa.git synced 2026-08-28 15:16:18 +03:00

Fix rubocop issues and browser test CHROME_PATH

Этот коммит содержится в:
Gleb Tv
2026-03-06 17:46:32 +03:00
родитель 04a43ec51d
Коммит b592cff079
38 изменённых файлов: 97 добавлений и 88 удалений

3
.github/workflows/main.yml поставляемый
Просмотреть файл

@@ -30,6 +30,9 @@ jobs:
browser-tests: browser-tests:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
CHROME_PATH: /usr/bin/google-chrome
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up Ruby - name: Set up Ruby

Просмотреть файл

@@ -17,4 +17,4 @@ Layout/LineLength:
Max: 150 Max: 150
Metrics/BlockLength: Metrics/BlockLength:
IgnoredMethods: ['describe', 'context', 'shared_examples'] AllowedMethods: ['describe', 'context', 'shared_examples']

Просмотреть файл

@@ -18,14 +18,14 @@ group :development, :test do
gem "cuprite", "~> 0.15" gem "cuprite", "~> 0.15"
gem "pry" gem "pry"
gem "pry-byebug", "~> 3.10" gem "pry-byebug", "~> 3.10"
gem "rake", "~> 13.0"
gem "rack-test", "~> 2.1" gem "rack-test", "~> 2.1"
gem "rails", "~> 8.0" gem "rails", "~> 8.0"
gem "rake", "~> 13.0"
gem "rspec", "~> 3.13" gem "rspec", "~> 3.13"
gem "sqlite3", "~> 2.0"
gem "rubocop", "~> 1.60" gem "rubocop", "~> 1.60"
gem "rubocop-rake", "~> 0.7" gem "rubocop-rake", "~> 0.7"
gem "rubocop-rspec", "~> 2.31" gem "rubocop-rspec", "~> 2.31"
gem "simplecov", "~> 0.22" gem "simplecov", "~> 0.22"
gem "sqlite3", "~> 2.0"
gem "webmock", "~> 3.23" gem "webmock", "~> 3.23"
end end

Просмотреть файл

@@ -54,7 +54,7 @@ module Yookassa
end end
def payload_matches_api_object?(payload) def payload_matches_api_object?(payload)
object = payload["object"] || payload.dig("data", "object") object = extract_object(payload)
return false unless object.is_a?(Hash) return false unless object.is_a?(Hash)
object_id = object["id"].to_s object_id = object["id"].to_s
@@ -69,6 +69,10 @@ module Yookassa
false false
end end
def extract_object(payload)
payload["object"] || payload.dig("data", "object")
end
def fetch_object_from_api(payload, object_id) def fetch_object_from_api(payload, object_id)
event_name = payload["event"].to_s event_name = payload["event"].to_s
event_name = payload["type"].to_s if event_name.empty? event_name = payload["type"].to_s if event_name.empty?

Просмотреть файл

@@ -1,3 +1,5 @@
# frozen_string_literal: true
Yookassa::Engine.routes.draw do Yookassa::Engine.routes.draw do
post "/webhooks/:token", to: "webhooks#create" post "/webhooks/:token", to: "webhooks#create"
end end

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require "http" require "http"
require_relative "./entity/error" require_relative "entity/error"
module Yookassa module Yookassa
class Client class Client

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./client" require_relative "client"
require_relative "./entity/deal" require_relative "entity/deal"
require_relative "./entity/collection" require_relative "entity/collection"
module Yookassa module Yookassa
class Deals < Client class Deals < Client
@@ -13,7 +13,7 @@ module Yookassa
def create(payload:, idempotency_key: SecureRandom.hex(10)) def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("deals", payload: payload, idempotency_key: idempotency_key) data = post("deals", payload: payload, idempotency_key: idempotency_key)
Entity::Deal.new(**data.merge(idempotency_key: idempotency_key)) Entity::Deal.new(**data, idempotency_key: idempotency_key)
end end
def list def list

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,11 +1,11 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./payment" require_relative "payment"
require_relative "./receipt" require_relative "receipt"
require_relative "./refund" require_relative "refund"
require_relative "./webhook" require_relative "webhook"
require_relative "./deal" require_relative "deal"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./amount" require_relative "amount"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,13 +1,13 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./amount" require_relative "amount"
require_relative "./payment_methods" require_relative "payment_methods"
require_relative "./confirmation" require_relative "confirmation"
require_relative "./recipient" require_relative "recipient"
require_relative "./cancellation_details" require_relative "cancellation_details"
require_relative "./authorization_details" require_relative "authorization_details"
require_relative "./transfer" require_relative "transfer"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./card" require_relative "card"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./customer" require_relative "customer"
require_relative "./product" require_relative "product"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./amount" require_relative "amount"
require_relative "./payout_destinations" require_relative "payout_destinations"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./card" require_relative "card"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./amount" require_relative "amount"
require_relative "./supplier" require_relative "supplier"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,9 +1,9 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./customer" require_relative "customer"
require_relative "./product" require_relative "product"
require_relative "./settlement" require_relative "settlement"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./amount" require_relative "amount"
require_relative "./source" require_relative "source"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./amount" require_relative "amount"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./amount" require_relative "amount"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
require_relative "./amount" require_relative "amount"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,6 +1,6 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./types" require_relative "types"
module Yookassa module Yookassa
module Entity module Entity

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./client" require_relative "client"
require_relative "./entity/payment" require_relative "entity/payment"
require_relative "./entity/collection" require_relative "entity/collection"
module Yookassa module Yookassa
class Payments < Client class Payments < Client
@@ -13,17 +13,17 @@ module Yookassa
def create(payment:, idempotency_key: SecureRandom.hex(10)) def create(payment:, idempotency_key: SecureRandom.hex(10))
data = post("payments", payload: payment, idempotency_key: idempotency_key) data = post("payments", payload: payment, idempotency_key: idempotency_key)
Entity::Payment.new(**data.merge(idempotency_key: idempotency_key)) Entity::Payment.new(**data, idempotency_key: idempotency_key)
end end
def capture(payment_id:, idempotency_key: SecureRandom.hex(10)) def capture(payment_id:, idempotency_key: SecureRandom.hex(10))
data = post("payments/#{payment_id}/capture", idempotency_key: idempotency_key) data = post("payments/#{payment_id}/capture", idempotency_key: idempotency_key)
Entity::Payment.new(**data.merge(idempotency_key: idempotency_key)) Entity::Payment.new(**data, idempotency_key: idempotency_key)
end end
def cancel(payment_id:, idempotency_key: SecureRandom.hex(10)) def cancel(payment_id:, idempotency_key: SecureRandom.hex(10))
data = post("payments/#{payment_id}/cancel", idempotency_key: idempotency_key) data = post("payments/#{payment_id}/cancel", idempotency_key: idempotency_key)
Entity::Payment.new(**data.merge(idempotency_key: idempotency_key)) Entity::Payment.new(**data, idempotency_key: idempotency_key)
end end
def list(filters: {}) def list(filters: {})

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./client" require_relative "client"
require_relative "./entity/payout" require_relative "entity/payout"
require_relative "./entity/collection" require_relative "entity/collection"
module Yookassa module Yookassa
class Payouts < Client class Payouts < Client
@@ -13,7 +13,7 @@ module Yookassa
def create(payload:, idempotency_key: SecureRandom.hex(10)) def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("payouts", payload: payload, idempotency_key: idempotency_key) data = post("payouts", payload: payload, idempotency_key: idempotency_key)
Entity::Payout.new(**data.merge(idempotency_key: idempotency_key)) Entity::Payout.new(**data, idempotency_key: idempotency_key)
end end
end end
end end

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./client" require_relative "client"
require_relative "./entity/receipt" require_relative "entity/receipt"
require_relative "./entity/collection" require_relative "entity/collection"
module Yookassa module Yookassa
class Receipts < Client class Receipts < Client
@@ -13,7 +13,7 @@ module Yookassa
def create(payload:, idempotency_key: SecureRandom.hex(10)) def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("receipts", payload: payload, idempotency_key: idempotency_key) data = post("receipts", payload: payload, idempotency_key: idempotency_key)
Entity::Receipt.new(**data.merge(idempotency_key: idempotency_key)) Entity::Receipt.new(**data, idempotency_key: idempotency_key)
end end
def list(filters: {}) def list(filters: {})

Просмотреть файл

@@ -1,8 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./client" require_relative "client"
require_relative "./entity/refund" require_relative "entity/refund"
require_relative "./entity/collection" require_relative "entity/collection"
module Yookassa module Yookassa
class Refunds < Client class Refunds < Client
@@ -13,7 +13,7 @@ module Yookassa
def create(payload:, idempotency_key: SecureRandom.hex(10)) def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("refunds", payload: payload, idempotency_key: idempotency_key) data = post("refunds", payload: payload, idempotency_key: idempotency_key)
Entity::Refund.new(**data.merge(idempotency_key: idempotency_key)) Entity::Refund.new(**data, idempotency_key: idempotency_key)
end end
def list(filters: {}) def list(filters: {})

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./client" require_relative "client"
require_relative "./entity/store_info" require_relative "entity/store_info"
module Yookassa module Yookassa
class Stores < Client class Stores < Client

Просмотреть файл

@@ -1,14 +1,14 @@
# frozen_string_literal: true # frozen_string_literal: true
require_relative "./client" require_relative "client"
require_relative "./entity/webhook" require_relative "entity/webhook"
require_relative "./entity/collection" require_relative "entity/collection"
module Yookassa module Yookassa
class Webhooks < Client class Webhooks < Client
def create(payload:, idempotency_key: SecureRandom.hex(10)) def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("webhooks", payload: payload, idempotency_key: idempotency_key) data = post("webhooks", payload: payload, idempotency_key: idempotency_key)
Entity::Webhook.new(**data.merge(idempotency_key: idempotency_key)) Entity::Webhook.new(**data, idempotency_key: idempotency_key)
end end
def list def list
@@ -16,7 +16,7 @@ module Yookassa
Entity::WebhookCollection.new(**data) Entity::WebhookCollection.new(**data)
end end
def delete(webhook_id:) def delete(webhook_id:) # rubocop:disable Naming/PredicateMethod
delete("webhooks/#{webhook_id}") delete("webhooks/#{webhook_id}")
true true
end end

Просмотреть файл

@@ -17,7 +17,7 @@ if defined?(Rails)
require File.expand_path("../../app/controllers/yookassa/webhooks_controller", __dir__) require File.expand_path("../../app/controllers/yookassa/webhooks_controller", __dir__)
class YookassaSpecBrowserController < ActionController::Base class YookassaSpecBrowserController < ActionController::Base
def index def index # rubocop:disable Metrics/MethodLength
render inline: <<~HTML render inline: <<~HTML
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>