Phoenix 1.8 app that scrapes ammunition retailers (Lucky Gunner, SGAmmo) for price data and displays historical price trends. - Data model: retailers, calibers, products, price snapshots - Scraper infrastructure with Req, Floki, realistic browser headers - Oban-scheduled scrape jobs (every 4h with randomized delays) - LiveView pages: homepage with category cards, caliber detail with price table, Chart.js price history, and price stats banner - 18 seeded calibers across handgun/rifle/rimfire/shotgun categories - 77 tests
50 lines
1.6 KiB
Elixir
50 lines
1.6 KiB
Elixir
import Config
|
|
|
|
# In test we don't send emails
|
|
config :ammoprices, Ammoprices.Mailer, adapter: Swoosh.Adapters.Test
|
|
|
|
# Configure your database
|
|
#
|
|
# The MIX_TEST_PARTITION environment variable can be used
|
|
# to provide built-in test partitioning in CI environment.
|
|
# Run `mix help test` for more information.
|
|
config :ammoprices, Ammoprices.Repo,
|
|
username: "postgres",
|
|
password: "postgres",
|
|
hostname: "localhost",
|
|
database: "ammoprices_test#{System.get_env("MIX_TEST_PARTITION")}",
|
|
pool: Ecto.Adapters.SQL.Sandbox,
|
|
pool_size: System.schedulers_online() * 2
|
|
|
|
# We don't run a server during test. If one is required,
|
|
# you can enable the server option below.
|
|
config :ammoprices, AmmopricesWeb.Endpoint,
|
|
http: [ip: {127, 0, 0, 1}, port: 4002],
|
|
secret_key_base: "3Dqelm7MG3lTMnfjThpCeE0sPMEC5FBlKmOuCfZ5X/ZHiYqW9fxBif4fc9Db9B0j",
|
|
server: false
|
|
|
|
# Oban testing mode
|
|
config :ammoprices, Oban, testing: :manual
|
|
|
|
# Stub HTTP requests in tests
|
|
config :ammoprices, :req_options, plug: {Req.Test, Ammoprices.Scraping.HttpClient}
|
|
|
|
# No delay between scrape requests in tests
|
|
config :ammoprices, :scrape_delay_ms, {0, 0}
|
|
|
|
# Print only warnings and errors during test
|
|
config :logger, level: :warning
|
|
|
|
# Initialize plugs at runtime for faster test compilation
|
|
config :phoenix, :plug_init_mode, :runtime
|
|
|
|
# Sort query params output of verified routes for robust url comparisons
|
|
config :phoenix,
|
|
sort_verified_routes_query_params: true
|
|
|
|
# Enable helpful, but potentially expensive runtime checks
|
|
config :phoenix_live_view,
|
|
enable_expensive_runtime_checks: true
|
|
|
|
# Disable swoosh api client as it is only required for production adapters
|
|
config :swoosh, :api_client, false
|