package publish import ( "testing" "time" "gitea.maximumdirect.net/eric/distributor/internal/config" "gitea.maximumdirect.net/eric/distributor/internal/state" "gitea.maximumdirect.net/eric/distributor/internal/storage/fake" "gitea.maximumdirect.net/eric/distributor/internal/testutil" ) func TestCompareDestinationFixedPathReportsDestinationNewerDetail(t *testing.T) { sourceBackend := fake.New() sourceBundle := testutil.WriteFakeSourceBundle(t, sourceBackend, "bundle", testutil.BundleOptions{}) destinationState := testutil.DestinationState(sourceBundle.Manifest, testutil.DestinationStateOptions{}) destinationState.Source.Manifest.ID = "latest.previous" destinationState.Source.Manifest.Created = sourceBundle.Manifest.Created.Add(time.Hour) comparison := compareDestination(Request{ PipelineID: "reports", DestinationID: "archive", SourceBundle: sourceBundle, DestinationBundlePath: "", PathMapping: config.PathMappingFixed, State: config.StatePolicy{Mode: config.StateModeSingleOwner}, }, state.DestinationStatus{State: &destinationState, HasContents: true}) if comparison.Outcome != state.OutcomeDestinationNewer { t.Fatalf("comparison outcome = %s, want %s", comparison.Outcome, state.OutcomeDestinationNewer) } if comparison.Reason != "fixed destination source is newer than selected source" { t.Fatalf("comparison reason = %q, want fixed-path newer reason", comparison.Reason) } if comparison.Detail.Kind != state.ComparisonDetailDestinationNewer { t.Fatalf("detail kind = %q, want %q", comparison.Detail.Kind, state.ComparisonDetailDestinationNewer) } if comparison.Detail.CurrentSourceID != sourceBundle.Manifest.ID || comparison.Detail.DestinationSourceID != "latest.previous" { t.Fatalf("detail = %#v, want source ids", comparison.Detail) } }