mirror of
https://github.com/usetrmnl/trmnl-api.git
synced 2026-04-29 13:35:13 -07:00
Added application container
Necessary to register common application dependencies for potential injection as desired.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "cogger"
|
||||
require "containable"
|
||||
require "http"
|
||||
|
||||
module TRMNL
|
||||
module API
|
||||
# Registers application dependencies.
|
||||
module Container
|
||||
extend Containable
|
||||
|
||||
register(:client) { API::Client.new }
|
||||
register(:logger) { Cogger.new id: "trmnl-api", formatter: :json }
|
||||
|
||||
register :http do
|
||||
HTTP.default_options = ::HTTP::Options.new features: {logging: {logger: self[:logger]}}
|
||||
HTTP
|
||||
end
|
||||
|
||||
namespace :contracts do
|
||||
register :current_screen, Contracts::CurrentScreen
|
||||
register :display, Contracts::Display
|
||||
register :firmware, Contracts::Firmware
|
||||
register :setup, Contracts::Setup
|
||||
end
|
||||
|
||||
namespace :models do
|
||||
register :current_screen, Models::CurrentScreen
|
||||
register :display, Models::Display
|
||||
register :firmware, Models::Firmware
|
||||
register :setup, Models::Setup
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,13 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "spec_helper"
|
||||
|
||||
RSpec.describe TRMNL::API::Container do
|
||||
subject(:container) { described_class }
|
||||
|
||||
describe ".[]" do
|
||||
it "answers HTTP" do
|
||||
expect(container[:http]).to eq(HTTP)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
RSpec.shared_context "with application dependencies" do
|
||||
let(:logger) { Cogger.new id: "trmnl-api", io: StringIO.new, level: :debug }
|
||||
|
||||
before { TRMNL::API::Container.stub! http:, logger: }
|
||||
|
||||
after { TRMNL::API::Container.restore }
|
||||
end
|
||||
Reference in New Issue
Block a user