51 lines
2 KiB
Ruby
51 lines
2 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe ConsumerApps::RpushAppQuery, type: :query do
|
|
let(:ios_consumer_app) do
|
|
ConsumerApps::FindOrCreateByQuery.call(app_bundle: ConsumerApp::FOREM_BUNDLE, platform: :ios)
|
|
end
|
|
let(:android_consumer_app) do
|
|
ConsumerApps::FindOrCreateByQuery.call(app_bundle: ConsumerApp::FOREM_BUNDLE, platform: :android)
|
|
end
|
|
|
|
describe "Rpush app" do
|
|
it "is recreated after updating a ConsumerApp" do
|
|
mock_rpush(ios_consumer_app)
|
|
|
|
# Fetch rpush app associated to the target
|
|
rpush_app = described_class.call(app_bundle: ios_consumer_app.app_bundle, platform: :ios)
|
|
|
|
expect(rpush_app).to be_instance_of(Rpush::Apns2::App)
|
|
expect(rpush_app.name).to eq(ios_consumer_app.app_bundle)
|
|
end
|
|
|
|
it "returns nil if ConsumerApp is not operational" do
|
|
bad_consumer_app = create(:consumer_app, auth_key: nil)
|
|
|
|
mock_rpush(bad_consumer_app, empty: true)
|
|
|
|
rpush_app = described_class.call(app_bundle: bad_consumer_app.app_bundle, platform: bad_consumer_app.platform)
|
|
|
|
expect(bad_consumer_app.operational?).to be false
|
|
expect(rpush_app).to be_nil
|
|
end
|
|
|
|
it "works when ConsumerApps have the same bundle but different platform" do
|
|
# This is a regression test to avoid conflicting `name` in either
|
|
# Rpush::Apns2::App or Rpush::Gcm::App to break the app
|
|
allow(ApplicationConfig).to receive(:[]).with("RPUSH_IOS_PEM").and_return("asdf123")
|
|
allow(ApplicationConfig).to receive(:[]).with("RPUSH_FCM_KEY").and_return("asdf123")
|
|
|
|
mock_rpush(ios_consumer_app)
|
|
mock_rpush(android_consumer_app)
|
|
|
|
# Fetch rpush app associated to the target
|
|
ios_rpush_app = described_class.call(app_bundle: ios_consumer_app.app_bundle, platform: :ios)
|
|
expect(ios_rpush_app).to be_instance_of(Rpush::Apns2::App)
|
|
|
|
# Fetch rpush app associated to the target
|
|
android_rpush_app = described_class.call(app_bundle: android_consumer_app.app_bundle, platform: :android)
|
|
expect(android_rpush_app).to be_instance_of(Rpush::Gcm::App)
|
|
end
|
|
end
|
|
end
|