Events of the recent-activity feed that share one timestamp now list by kind (grant, invoice, payment, tier change, as before) and, within a kind, the one the console recorded later first. Invoice and payment events had no Seq, so two of them at one instant fell through to their summary text and organization id: "$100.00" listed above "$20.00" and Zeta above Alpha whichever was recorded later. They now carry their own row's id, as grant and tier events already did, and activityLess breaks the tie on it, so every event has one place in the order. The comment on ActivityEvent.Seq and on activityLess say so. The requirement "Invoice and payment events are placed when they happened" now states the order of events that share one timestamp, through the change same-instant-feed-order, archived in this commit with the delta synced into the main spec. How it was shown to change only that: TestRecentActivityTiesListTheLaterWrittenFirst (invoices of two organizations, invoices of one organization, rows of one kind in any input order) fails in all three subtests at the parent and passes here. The feed's golden diff is exactly two pairs of rows swapped in feed.json and in feed.html: Alpha's invoice above Zeta's, and "$20.00" above "$100.00" for the invoices of one organization. Names and results of internal/server are equal to the parent's (1473 at the parent, 1477 here: the new test and its three subtests), 0 failures. Four breaks (the invoice Seq, the payment Seq, the id direction, the kind direction) are each caught by the new test or the feed's golden. The lint snapshot is unchanged (0 added, 0 removed). Walkthroughs are equal at the parent and here (16 pass, 6 skip); screens at the parent and here differ from the baseline only in the masked regions, so operator-overview is unchanged: the demo feed holds no same-kind ties. Unprobed: payments tied in the database. The database subtests tie invoices only; ties of payments, and of three rows of one kind, are checked without a database through the comparator, because the tie rests on the payment row carrying its id, which the comparator check and the payment break cover.
315 lines
6.9 KiB
JSON
315 lines
6.9 KiB
JSON
[
|
|
{
|
|
"at": "t01",
|
|
"kind": "transition",
|
|
"summary": "Ended: —",
|
|
"href": "/operator/organizations/<org:Org G>",
|
|
"org": "Org G",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t02",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Max (complimentary)",
|
|
"href": "/operator/organizations/<org:Org G>",
|
|
"org": "Org G",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t02",
|
|
"kind": "transition",
|
|
"summary": "Started: rank 2",
|
|
"href": "/operator/organizations/<org:Org G>",
|
|
"org": "Org G",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t03",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Pro2 (complimentary)",
|
|
"href": "/operator/organizations/<org:Org F>",
|
|
"org": "Org F",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t03",
|
|
"kind": "transition",
|
|
"summary": "Upgraded: Pro2 to Basic",
|
|
"href": "/operator/organizations/<org:Org F>",
|
|
"org": "Org F",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t03",
|
|
"kind": "transition",
|
|
"summary": "Ended: Pro2",
|
|
"href": "/operator/organizations/<org:Org F>",
|
|
"org": "Org F",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t04",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Basic (complimentary)",
|
|
"href": "/operator/organizations/<org:Org F>",
|
|
"org": "Org F",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t04",
|
|
"kind": "transition",
|
|
"summary": "Started: Pro2",
|
|
"href": "/operator/organizations/<org:Org F>",
|
|
"org": "Org F",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t05",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Chat Plus (complimentary)",
|
|
"href": "/operator/organizations/<org:Org E>",
|
|
"org": "Org E",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t05",
|
|
"kind": "transition",
|
|
"summary": "Started: Chat Plus",
|
|
"href": "/operator/organizations/<org:Org E>",
|
|
"org": "Org E",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t06",
|
|
"kind": "grant_issued",
|
|
"summary": "Extended: Plus",
|
|
"href": "/operator/organizations/<org:Org D>",
|
|
"org": "Org D",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t07",
|
|
"kind": "transition",
|
|
"summary": "Upgraded: Plus to Pro",
|
|
"href": "/operator/organizations/<org:Org D>",
|
|
"org": "Org D",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t07",
|
|
"kind": "transition",
|
|
"summary": "Ended: Plus",
|
|
"href": "/operator/organizations/<org:Org D>",
|
|
"org": "Org D",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t08",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Plus (complimentary)",
|
|
"href": "/operator/organizations/<org:Org D>",
|
|
"org": "Org D",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t08",
|
|
"kind": "transition",
|
|
"summary": "Started: Plus",
|
|
"href": "/operator/organizations/<org:Org D>",
|
|
"org": "Org D",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t09",
|
|
"kind": "transition",
|
|
"summary": "Extended: Plus",
|
|
"href": "/operator/organizations/<org:Org C>",
|
|
"org": "Org C",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t10",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Plus (complimentary)",
|
|
"href": "/operator/organizations/<org:Org C>",
|
|
"org": "Org C",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t10",
|
|
"kind": "transition",
|
|
"summary": "Started: Plus",
|
|
"href": "/operator/organizations/<org:Org C>",
|
|
"org": "Org C",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t11",
|
|
"kind": "transition",
|
|
"summary": "Resumed: Plus",
|
|
"href": "/operator/organizations/<org:Org B>",
|
|
"org": "Org B",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t11",
|
|
"kind": "transition",
|
|
"summary": "Ended: Pro",
|
|
"href": "/operator/organizations/<org:Org B>",
|
|
"org": "Org B",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t12",
|
|
"kind": "transition",
|
|
"summary": "Upgraded: Plus to Pro",
|
|
"href": "/operator/organizations/<org:Org B>",
|
|
"org": "Org B",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t12",
|
|
"kind": "transition",
|
|
"summary": "Ended: Plus",
|
|
"href": "/operator/organizations/<org:Org B>",
|
|
"org": "Org B",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t13",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Plus (complimentary)",
|
|
"href": "/operator/organizations/<org:Org B>",
|
|
"org": "Org B",
|
|
"actor": "Bea"
|
|
},
|
|
{
|
|
"at": "t13",
|
|
"kind": "transition",
|
|
"summary": "Started: Plus",
|
|
"href": "/operator/organizations/<org:Org B>",
|
|
"org": "Org B",
|
|
"actor": "Bea"
|
|
},
|
|
{
|
|
"at": "t14",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Free (default) after Plus ended",
|
|
"href": "/operator/organizations/<org:Org A>",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t14",
|
|
"kind": "transition",
|
|
"summary": "Started: Free",
|
|
"href": "/operator/organizations/<org:Org A>",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t14",
|
|
"kind": "transition",
|
|
"summary": "Ended: Plus",
|
|
"href": "/operator/organizations/<org:Org A>",
|
|
"org": "Org A",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t15",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Plus (complimentary)",
|
|
"href": "/operator/organizations/<org:Org A>",
|
|
"org": "Org A",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t15",
|
|
"kind": "invoice_created",
|
|
"summary": "Invoice USD 50.00 · open",
|
|
"href": "/operator/billing/invoices",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t15",
|
|
"kind": "transition",
|
|
"summary": "Upgraded: Free to Plus",
|
|
"href": "/operator/organizations/<org:Org A>",
|
|
"org": "Org A",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t15",
|
|
"kind": "transition",
|
|
"summary": "Ended: Free",
|
|
"href": "/operator/organizations/<org:Org A>",
|
|
"org": "Org A",
|
|
"actor": "Ann"
|
|
},
|
|
{
|
|
"at": "t16",
|
|
"kind": "grant_issued",
|
|
"summary": "Issued Free (default)",
|
|
"href": "/operator/organizations/<org:Org A>",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t16",
|
|
"kind": "transition",
|
|
"summary": "Started: Free",
|
|
"href": "/operator/organizations/<org:Org A>",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t17",
|
|
"kind": "payment_received",
|
|
"summary": "Payment USD 100.00 · succeeded",
|
|
"href": "/operator/billing/payments",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t18",
|
|
"kind": "payment_received",
|
|
"summary": "Payment USD 20.00 · failed",
|
|
"href": "/operator/billing/payments",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t19",
|
|
"kind": "invoice_created",
|
|
"summary": "Invoice USD 20.00 · open",
|
|
"href": "/operator/billing/invoices",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t19",
|
|
"kind": "invoice_created",
|
|
"summary": "Invoice USD 100.00 · open",
|
|
"href": "/operator/billing/invoices",
|
|
"org": "Org A",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t20",
|
|
"kind": "invoice_created",
|
|
"summary": "Invoice USD 10.00 · open",
|
|
"href": "/operator/billing/invoices",
|
|
"org": "Alpha",
|
|
"actor": "-"
|
|
},
|
|
{
|
|
"at": "t20",
|
|
"kind": "invoice_created",
|
|
"summary": "Invoice USD 10.00 · open",
|
|
"href": "/operator/billing/invoices",
|
|
"org": "Zeta",
|
|
"actor": "-"
|
|
}
|
|
]
|