Skip to content
Merged
2 changes: 2 additions & 0 deletions .github/workflows/rails_application-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ on:
- master
paths:
- "apps/rails_application/Gemfile.lock"
- "apps/rails_application/.mutant.yml"
- ".github/workflows/rails_application-coverage.yml"
pull_request:
paths:
- "apps/rails_application/Gemfile.lock"
- "apps/rails_application/.mutant.yml"
- ".github/workflows/rails_application-coverage.yml"
schedule:
- cron: '0 17 * * *'
Expand Down
2 changes: 2 additions & 0 deletions apps/rails_application/.mutant.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
---
environment_variables:
RAILS_ENV: test
mutation:
operators: light
timeout: 10.0
Expand Down
22 changes: 14 additions & 8 deletions apps/rails_application/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,18 @@ install: ## Installs dependencies, runs migrations, creates db & seeds if necess
dev:
@$(MAKE) -j 2 web css

mutate: ## Run full mutation tests
build-tailwind:
@echo "Building Tailwind CSS..."
@bin/rails tailwindcss:build

mutate: build-tailwind
ifdef MUTANT_SUBJECT
@echo "Running mutation tests for subject: '$(MUTANT_SUBJECT)'"
@bundle exec mutant run $(MUTANT_OPTS) -- '$(MUTANT_SUBJECT)'
else
@echo "Running full mutation tests..."
@RAILS_ENV=test bundle exec mutant run
@bundle exec mutant run $(MUTANT_OPTS)
endif

mutate-changes: ## Run incremental mutation tests on changes
@echo "Running incremental mutation tests against $(GIT_BASE_SHA)..."
Expand Down Expand Up @@ -86,9 +95,7 @@ mutate-client-authentication: ## Run mutation tests for ClientAuthentication nam
@echo "Running mutation tests for ClientAuthentication..."
@RAILS_ENV=test bundle exec mutant run "ClientAuthentication*"

test: ## Run unit tests
@echo "Building Tailwind CSS..."
@bin/rails tailwindcss:build
test: build-tailwind
@echo "Running unit tests..."
@BROWSERSLIST_IGNORE_OLD_DATA=1 bin/rails test

Expand All @@ -101,9 +108,8 @@ css:
web:
@bin/rails server -p 3000

test-mutant-runner:
@bin/rails tailwindcss:build
test-mutant-runner: build-tailwind
@RAILS_ENV=test bundle exec mutant test -j 4

.PHONY: help install dev test mutate mutate-changes mutate-processes mutate-orders mutate-order-header mutate-client-orders mutate-invoices mutate-shipments mutate-vat-rates mutate-coupons mutate-products mutate-public-offer mutate-customers mutate-admin mutate-time-promotions mutate-returns mutate-availability mutate-client-inbox mutate-authorization mutate-client-authentication css web test-mutant-runner
.PHONY: help install dev build-tailwind test mutate mutate-changes mutate-processes mutate-orders mutate-order-header mutate-client-orders mutate-invoices mutate-shipments mutate-vat-rates mutate-coupons mutate-products mutate-public-offer mutate-customers mutate-admin mutate-time-promotions mutate-returns mutate-availability mutate-client-inbox mutate-authorization mutate-client-authentication css web test-mutant-runner
.DEFAULT_GOAL := help
Original file line number Diff line number Diff line change
Expand Up @@ -91,5 +91,37 @@ def test_assigns_store_to_correct_invoice_when_multiple_invoices_exist
assert_equal(store_id_1, invoice_1.store_id)
assert_equal(store_id_2, invoice_2.store_id)
end

def test_returns_nil_when_invoice_exists_in_different_store
event_store = Rails.configuration.event_store
store_id_1 = SecureRandom.uuid
store_id_2 = SecureRandom.uuid
invoice_id = SecureRandom.uuid

event_store.publish(
Invoicing::InvoiceItemAdded.new(
data: {
invoice_id: invoice_id,
product_id: SecureRandom.uuid,
title: "Test Product",
quantity: 1,
unit_price: 100,
vat_rate: { rate: 20, code: "VAT" }
}
)
)

event_store.publish(
Stores::InvoiceRegistered.new(
data: {
store_id: store_id_1,
invoice_id: invoice_id
}
)
)

assert_nil Invoices.find_invoice_in_store(invoice_id, store_id_2)
assert_not_nil Invoices.find_invoice_in_store(invoice_id, store_id_1)
end
end
end
1 change: 1 addition & 0 deletions apps/rails_application/test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ def before_setup

Configuration.new.call(Rails.configuration.event_store, Rails.configuration.command_bus)
@default_store_id = ensure_default_store
cookies[:current_store_id] = @default_store_id
result
end

Expand Down