Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
2a94bc3
feat: add Cookie Policy and Contributor Agreements to static pages
rsmithlal Nov 21, 2025
3fcaacf
feat: update privacy policy with additional sections on geolocation d…
rsmithlal Nov 21, 2025
13d2b7b
feat: add plain language summaries to Contributor License Agreement, …
rsmithlal Nov 21, 2025
bcfb83c
Add comprehensive guides for platform administration, security, user …
rsmithlal Nov 21, 2025
5defc82
Add tests for BetterTogether content and template rendering
rsmithlal Nov 21, 2025
3c18c82
feat: enhance template rendering logic to differentiate between stati…
rsmithlal Nov 21, 2025
b6e9f27
feat: add search tasks for Elasticsearch reindexing and management
rsmithlal Nov 21, 2025
1e789eb
feat: add error messages for file handling and support for markdown c…
rsmithlal Nov 21, 2025
3fd6480
feat: add page title display for pages without a hero block
rsmithlal Nov 24, 2025
d1b866f
feat: implement MarkdownPolicy and associated specs for content manag…
rsmithlal Nov 24, 2025
cd2692e
feat: add documentation navigation building and associated specs
rsmithlal Nov 24, 2025
8128e66
Add factories and specs for BetterTogether content models
rsmithlal Nov 24, 2025
053550f
feat: enhance metrics factories and specs for downloads, link clicks,…
rsmithlal Nov 24, 2025
cd05452
feat: update page creation in specs to include identifier prefixes fo…
rsmithlal Nov 24, 2025
6dc90cf
feat: enhance factories and specs for categories and categorizations …
rsmithlal Nov 24, 2025
933c2a6
feat: enhance factories and specs for contact details, social media a…
rsmithlal Nov 24, 2025
834d3d6
feat: add factory and specs for calendar_entry with validations and a…
rsmithlal Nov 24, 2025
6730222
feat: enhance factory and specs for call_for_interest with validation…
rsmithlal Nov 24, 2025
ac4c9e5
feat: enhance factories and specs for conversation and message models…
rsmithlal Nov 24, 2025
64596ab
feat: enhance jwt_denylist factory and specs with additional traits a…
rsmithlal Nov 24, 2025
b623fd5
feat: enhance resource_permission factory and specs with validations …
rsmithlal Nov 24, 2025
37bfa14
feat: enhance comment model specs with comprehensive tests for schema…
rsmithlal Nov 24, 2025
d7248fd
feat: enhance page model specs with tests for markdown block indexing…
rsmithlal Nov 24, 2025
3776016
feat: add comprehensive test coverage improvement plan with detailed …
rsmithlal Nov 24, 2025
e6cdbf3
Rubocop fixes
rsmithlal Nov 24, 2025
84cc429
feat: update test coverage improvement plan with current status, comp…
rsmithlal Nov 24, 2025
f106f88
Remove outdated config files for CI/CD services no longer in use
rsmithlal Nov 24, 2025
fb940ea
feat: update Phase 4 of Test Coverage Improvement Plan to reflect com…
rsmithlal Nov 24, 2025
63de527
feat: add additional coverage groups for Services and API Controllers…
rsmithlal Nov 24, 2025
9651376
feat: add coverage group for Model Concerns in SimpleCov configuration
rsmithlal Nov 24, 2025
1faffd4
feat: enhance geography continent factory and add comprehensive model…
rsmithlal Nov 24, 2025
a2f723c
feat: enhance geography_country factory and expand country model spec…
rsmithlal Nov 24, 2025
2f9d3e9
feat: enhance geography_state factory and expand state model specs wi…
rsmithlal Nov 24, 2025
3ae2524
Rubocop fixes
rsmithlal Nov 24, 2025
c666109
feat: enhance geography_settlement factory and expand settlement mode…
rsmithlal Nov 24, 2025
38bc784
feat: enhance geography_region factory and expand region model specs …
rsmithlal Nov 24, 2025
d1fd787
feat: update SimpleCov filters and coverage groups in spec_helper
rsmithlal Nov 24, 2025
17514a7
feat: enhance translations for title in Map model and update factory …
rsmithlal Nov 24, 2025
3777221
feat: update title translations to use string type and add migration …
rsmithlal Nov 24, 2025
80d5599
feat: remove obsolete RichText Link Checker flow diagram
rsmithlal Nov 24, 2025
5783b7d
Rubocop fixes
rsmithlal Nov 24, 2025
b2e5c60
Rubocop fixes
rsmithlal Nov 24, 2025
809b88c
feat: add RSpec best practices to agent instructions for testing clar…
rsmithlal Nov 24, 2025
be54a00
Rubocop fixes
rsmithlal Nov 24, 2025
65c1bcd
feat: enhance SimpleCov configuration with additional filters and arc…
rsmithlal Nov 24, 2025
e0d60ab
feat: expand SimpleCov coverage groups to include additional controll…
rsmithlal Nov 24, 2025
0befab9
feat: add comprehensive specs for BetterTogether configuration and sa…
rsmithlal Nov 24, 2025
70aae98
Merge branch 'main' into feat/policies-and-docs
rsmithlal Nov 24, 2025
86889c1
refactor: remove obsolete attachments_spec.rb test file
rsmithlal Nov 24, 2025
db20943
feat: add specs for authorship_changed_notification in AuthorshipMailer
rsmithlal Nov 24, 2025
5edd3e5
Merge branch 'feat/policies-and-docs' of github.com:better-together-s…
rsmithlal Nov 24, 2025
7bc587e
feat: add tests for SidebarNavHelper rendering and caching behavior
rsmithlal Nov 24, 2025
f37c709
fix: update documentation page slugs to use correct path format and e…
rsmithlal Nov 24, 2025
f504491
feat: implement DocumentationBuilder for creating documentation navig…
rsmithlal Nov 24, 2025
c55df42
feat: update i18n-tasks.yml to include timezones in ignore checks for…
rsmithlal Nov 24, 2025
b6a0628
feat: update error messages in locale files for better clarity and ad…
rsmithlal Nov 24, 2025
1f76564
Add specs for PlatformInvitationMailer, ReportsController, SetupWizar…
rsmithlal Nov 25, 2025
430b651
feat: add creator association to pages and update schema
rsmithlal Nov 25, 2025
47f5ea2
fix: correct block yield variable in create_bt_membership_table method
rsmithlal Nov 25, 2025
333113a
feat: enhance wizard step handling and improve user associations in s…
rsmithlal Nov 25, 2025
8389618
Rubocop fixes
rsmithlal Nov 25, 2025
76aa680
fix: update user registration spec to handle invalid person attribute…
rsmithlal Nov 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .coveralls.yml

This file was deleted.

25 changes: 25 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -269,3 +269,28 @@ Note: The helper set lives under `spec/support/automatic_test_configuration.rb`
expect(response).to redirect_to(person_blocks_path)
```
- **Factory Requirements**: Every Better Together model needs a corresponding FactoryBot factory with proper engine namespace handling

### RSpec Best Practices
- **Named subjects for explicit references**: When using `expect(subject)` with complex matchers (like `have_many`), always define a named subject in the describe block:
```ruby
describe 'associations' do
subject(:model_name) { build(:factory_name) }

it { is_expected.to belong_to(:association) }

it do
expect(model_name).to have_many(:items)
.class_name('Namespace::Item')
.dependent(:destroy)
end
end
```
- **Pending tests require reasons**: Use `skip` inside `it` blocks with a descriptive reason instead of `xit`:
```ruby
it 'complex feature requiring external service' do
skip 'External service not available in test environment'
# test code here
end
```
- **Use `is_expected.to` for simple one-line matchers**: Prefer implicit subject with `is_expected.to` for single-assertion tests
- **Use named subject for multi-line or complex matchers**: Define `subject(:name)` when tests need explicit subject references
26 changes: 0 additions & 26 deletions .travis.yml

This file was deleted.

25 changes: 25 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,31 @@ Note: The helper set lives under `spec/support/automatic_test_configuration.rb`
- **Integration**: Test complete user workflows and cross-model interactions.
- **Feature Tests**: End-to-end stakeholder workflows validating acceptance criteria.

### RSpec Best Practices
- **Named subjects for explicit references**: When using `expect(subject)` with complex matchers (like `have_many`), always define a named subject in the describe block:
```ruby
describe 'associations' do
subject(:model_name) { build(:factory_name) }

it { is_expected.to belong_to(:association) }

it do
expect(model_name).to have_many(:items)
.class_name('Namespace::Item')
.dependent(:destroy)
end
end
```
- **Pending tests require reasons**: Use `skip` inside `it` blocks with a descriptive reason instead of `xit`:
```ruby
it 'complex feature requiring external service' do
skip 'External service not available in test environment'
# test code here
end
```
- **Use `is_expected.to` for simple one-line matchers**: Prefer implicit subject with `is_expected.to` for single-assertion tests
- **Use named subject for multi-line or complex matchers**: Define `subject(:name)` when tests need explicit subject references

## TDD Test Types by Stakeholder Need

### End User-Focused Tests
Expand Down
2 changes: 2 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ PATH
rack-cors (>= 1.1.1, < 3.1.0)
rack-mini-profiler
rails (>= 7.2, < 8.1)
redcarpet (~> 3.6)
reform-rails (>= 0.2, < 0.4)
rswag (>= 2.3.1, < 2.18.0)
ruby-openai
Expand Down Expand Up @@ -609,6 +610,7 @@ GEM
erb
psych (>= 4.0.0)
tsort
redcarpet (3.6.1)
redis (5.4.1)
redis-client (>= 0.22.0)
redis-client (0.26.1)
Expand Down
194 changes: 194 additions & 0 deletions app/assets/stylesheets/better_together/content_blocks.scss
Original file line number Diff line number Diff line change
Expand Up @@ -241,3 +241,197 @@
margin-left: 5px;
}
}

// Markdown content styling - GitHub-flavored markdown styles
.markdown-content {
line-height: 1.6;
color: #24292e;

// Headings
h1, h2, h3, h4, h5, h6 {
margin-top: 24px;
margin-bottom: 16px;
font-weight: 600;
line-height: 1.25;
border-bottom: 1px solid #eaecef;
padding-bottom: 0.3em;
}

h1 { font-size: 2em; }
h2 { font-size: 1.5em; }
h3 { font-size: 1.25em; }
h4 { font-size: 1em; }
h5 { font-size: 0.875em; }
h6 { font-size: 0.85em; color: #6a737d; }

// Paragraphs and text
p {
margin-top: 0;
margin-bottom: 16px;
}

// Links
a {
color: #0366d6;
text-decoration: none;

&:hover {
text-decoration: underline;
}
}

// Lists
ul, ol {
padding-left: 2em;
margin-top: 0;
margin-bottom: 16px;
}

li {
margin-bottom: 0.25em;

> p {
margin-top: 16px;
}

+ li {
margin-top: 0.25em;
}
}

// Blockquotes
blockquote {
padding: 0 1em;
color: #6a737d;
border-left: 0.25em solid #dfe2e5;
margin: 0 0 16px 0;

> :first-child {
margin-top: 0;
}

> :last-child {
margin-bottom: 0;
}
}

// Code blocks
pre {
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f6f8fa;
border-radius: 6px;
margin-bottom: 16px;

code {
display: inline;
padding: 0;
margin: 0;
overflow: visible;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
}

// Inline code
code {
padding: 0.2em 0.4em;
margin: 0;
font-size: 85%;
background-color: rgba(27, 31, 35, 0.05);
border-radius: 6px;
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
}

// Tables
table {
border-spacing: 0;
border-collapse: collapse;
margin-top: 0;
margin-bottom: 16px;
width: 100%;
overflow: auto;

th {
font-weight: 600;
padding: 6px 13px;
border: 1px solid #dfe2e5;
background-color: #f6f8fa;
}

td {
padding: 6px 13px;
border: 1px solid #dfe2e5;
}

tr {
background-color: #fff;
border-top: 1px solid #c6cbd1;

&:nth-child(2n) {
background-color: #f6f8fa;
}
}
}

// Horizontal rules
hr {
height: 0.25em;
padding: 0;
margin: 24px 0;
background-color: #e1e4e8;
border: 0;
}

// Task lists
.task-list-item {
list-style-type: none;

input {
margin: 0 0.2em 0.25em -1.6em;
vertical-align: middle;
}
}

// Images
img {
max-width: 100%;
box-sizing: content-box;
background-color: #fff;
border-radius: 6px;
}

// Strikethrough
del {
text-decoration: line-through;
}

// Superscript
sup {
vertical-align: super;
font-size: smaller;
}

// Highlight
mark {
background-color: #fff740;
padding: 0.2em;
}

// Footnotes
.footnotes {
margin-top: 32px;
padding-top: 16px;
border-top: 1px solid #e1e4e8;
font-size: 0.9em;
color: #6a737d;

ol {
padding-left: 1.5em;
}
}
}
Loading
Loading