<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cccms/test/models, branch erdgeist-revive-events</title>
<subtitle>[no description]</subtitle>
<id>https://erdgeist.org/gitweb/cccms/atom?h=erdgeist-revive-events</id>
<link rel='self' href='https://erdgeist.org/gitweb/cccms/atom?h=erdgeist-revive-events'/>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/'/>
<updated>2026-06-30T22:24:10Z</updated>
<entry>
<title>Add RRULE humanizer and wire events into nodes#show</title>
<updated>2026-06-30T22:24:10Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-30T22:24:10Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=95955abaa339098755a214cfcadf87c90211fe64'/>
<id>urn:sha1:95955abaa339098755a214cfcadf87c90211fe64</id>
<content type='text'>
- app/models/concerns/rrule_humanizer.rb: new concern included into
  Event, renders recurring schedule as natural-language German or
  English from RRULE string; handles WEEKLY/MONTHLY, biweekly
  (INTERVAL=2), ordinal weekday positions (1TU, -1TH, -2WE),
  BYMONTH single-month exclusions (December pause convention);
  gracefully returns nil for COUNT/UNTIL/unrecognized shapes
- test/models/concerns/rrule_humanizer_test.rb: 15 tests covering
  all distinct RRULE shapes found in production data
- app/helpers/nodes_helper.rb: add event_schedule_text helper
  combining humanize_rrule with start_time formatting
- app/views/nodes/show.html.erb: add events row, conditionally
  rendered when node has associated events
- config/locales/de.yml, en.yml: add event_schedule_time,
  event_schedule_unrecognized, event_schedule_none keys
</content>
</entry>
<entry>
<title>Phase 1: standalone events, external_url on nodes</title>
<updated>2026-06-30T17:22:24Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-30T17:15:22Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=a7a6ad786eeb9f94f7882462bccbdd31e1bb4743'/>
<id>urn:sha1:a7a6ad786eeb9f94f7882462bccbdd31e1bb4743</id>
<content type='text'>
- Migration: node_id nullable on events and occurrences, add
  title/description/is_primary to events, external_url to nodes
- Existing events marked is_primary: true (were all 1:1 with nodes)
- Node: has_one :event -&gt; has_many :events
- Event: belongs_to :node optional, validates title presence for
  standalone events, is_primary uniqueness scoped to node_id,
  display_title helper falling back through node title
- Occurrence: belongs_to :node optional, summary falls back to
  event.display_title
- nodes_helper: event_information uses events.first (interim; will
  be replaced in Phase 3 event UI)
- Tests: fix node.event -&gt; node.events.first in event_test
</content>
</entry>
<entry>
<title>Stage 4: Rails 5.2 -&gt; 6.1 on Ruby 2.7.2</title>
<updated>2026-06-25T23:59:57Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-25T23:59:57Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=c06723ee715512c2033c7786c48f15674585b56b'/>
<id>urn:sha1:c06723ee715512c2033c7786c48f15674585b56b</id>
<content type='text'>
- routing-filter 0.6.3 -&gt; 0.7.0 (Rails 6.1 compatibility)
- RSS named routes rss_xml/rss_rdf added
- RouteWithParams workarounds: will_paginate_patch, content_path shim, safe_path helper
- Paperclip removed, replaced with FileAttachment concern (preserves URL scheme)
- Assets resource moved to /admin/assets (Sprockets middleware conflict)
- ApplicationRecord base class added, all models migrated
- Strong parameters added to Assets, Occurrences, Events, MenuItems controllers
- update_attributes -&gt; update throughout
- render :nothing -&gt; head :ok/:not_found throughout
- language_selector rewritten (removes :overwrite_params)
- Environment files updated for Rails 6.1 (eager_load, public_file_server, ActionMailer)
- Arel::Visitors::DepthFirst and Integer/Float duration patches removed from test_helper
- AssetsController tests added (10 tests covering upload, variants, destroy, auth)
- ImageMagick geometry: 460x250! for headline crop (not # which is invalid in IM6)

129 runs, 311 assertions, 5 failures (all pre-existing), 0 errors
</content>
</entry>
<entry>
<title>Rails 5.2 test updates</title>
<updated>2026-06-25T15:51:45Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-25T15:51:45Z</published>
<link rel='alternate' type='text/html' href='https://erdgeist.org/gitweb/cccms/commit/?id=0818a3057b0a91e422158d828026c941b4e10622'/>
<id>urn:sha1:0818a3057b0a91e422158d828026c941b4e10622</id>
<content type='text'>
- Rename test/functional → test/controllers, test/unit → test/models
- Remove test/performance/browsing_test.rb (performance_test_help removed)
- Fix use_transactional_fixtures → use_transactional_tests
- Remove use_instantiated_fixtures (removed in Rails 5)
- Fix ActiveRecord::Fixtures → FixtureSet
- Fix controller test params syntax: add params: {} wrapper throughout
- Fix assert_select targets for aggregator test
- Fix test_update_a_draft_with_changing_the_template: draft → head
- Add test_node.reload after children.create! (awesome_nested_set bug)
- Add before/after count pattern for create tests (transactional isolation)
- Known failures: 5 tests affected by Rails 5 transactional test isolation
</content>
</entry>
</feed>
