fix(graphql): improuve sort for pending deleted dossiers
This commit is contained in:
parent
0454d2066e
commit
21b9a491cb
3 changed files with 42 additions and 12 deletions
|
@ -144,7 +144,19 @@ module Types
|
||||||
dossiers = dossiers.hidden_since(deleted_since)
|
dossiers = dossiers.hidden_since(deleted_since)
|
||||||
end
|
end
|
||||||
|
|
||||||
dossiers.order(hidden_by_user_at: order, hidden_by_administration_at: order)
|
dossiers_table = Dossier.arel_table
|
||||||
|
case_statement = dossiers_table[:state]
|
||||||
|
.when(:en_construction)
|
||||||
|
.then(dossiers_table[:hidden_by_user_at])
|
||||||
|
.else(dossiers_table[:hidden_by_administration_at])
|
||||||
|
|
||||||
|
dossiers = dossiers.order(case_statement)
|
||||||
|
|
||||||
|
if order == :desc
|
||||||
|
dossiers = dossiers.reverse_order
|
||||||
|
end
|
||||||
|
|
||||||
|
dossiers
|
||||||
end
|
end
|
||||||
|
|
||||||
def champ_descriptors
|
def champ_descriptors
|
||||||
|
|
|
@ -83,7 +83,19 @@ module Types
|
||||||
dossiers = dossiers.hidden_since(deleted_since)
|
dossiers = dossiers.hidden_since(deleted_since)
|
||||||
end
|
end
|
||||||
|
|
||||||
dossiers.order(hidden_by_user_at: order, hidden_by_administration_at: order)
|
dossiers_table = Dossier.arel_table
|
||||||
|
case_statement = dossiers_table[:state]
|
||||||
|
.when(:en_construction)
|
||||||
|
.then(dossiers_table[:hidden_by_user_at])
|
||||||
|
.else(dossiers_table[:hidden_by_administration_at])
|
||||||
|
|
||||||
|
dossiers = dossiers.order(case_statement)
|
||||||
|
|
||||||
|
if order == :desc
|
||||||
|
dossiers = dossiers.reverse_order
|
||||||
|
end
|
||||||
|
|
||||||
|
dossiers
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -185,17 +185,20 @@ describe API::V2::GraphqlController do
|
||||||
|
|
||||||
before {
|
before {
|
||||||
dossier.hide_and_keep_track!(dossier.user, DeletedDossier.reasons.fetch(:user_request))
|
dossier.hide_and_keep_track!(dossier.user, DeletedDossier.reasons.fetch(:user_request))
|
||||||
dossier_accepte.hide_and_keep_track!(instructeur, DeletedDossier.reasons.fetch(:instructeur_request))
|
Timecop.travel(3.hours.ago) {
|
||||||
|
dossier_accepte.hide_and_keep_track!(instructeur, DeletedDossier.reasons.fetch(:instructeur_request))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
it {
|
it {
|
||||||
expect(gql_errors).to be_nil
|
expect(gql_errors).to be_nil
|
||||||
expect(gql_data[:demarche][:id]).to eq(procedure.to_typed_id)
|
expect(gql_data[:demarche][:id]).to eq(procedure.to_typed_id)
|
||||||
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].size).to eq(2)
|
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].size).to eq(2)
|
||||||
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].first[:id]).to eq(GraphQL::Schema::UniqueWithinType.encode('DeletedDossier', dossier.id))
|
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].first[:id]).to eq(GraphQL::Schema::UniqueWithinType.encode('DeletedDossier', dossier_accepte.id))
|
||||||
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].second[:id]).to eq(GraphQL::Schema::UniqueWithinType.encode('DeletedDossier', dossier_accepte.id))
|
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].second[:id]).to eq(GraphQL::Schema::UniqueWithinType.encode('DeletedDossier', dossier.id))
|
||||||
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].first[:dateSupression]).to eq(dossier.hidden_by_user_at.iso8601)
|
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].first[:dateSupression]).to eq(dossier_accepte.hidden_by_administration_at.iso8601)
|
||||||
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].second[:dateSupression]).to eq(dossier_accepte.hidden_by_administration_at.iso8601)
|
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].second[:dateSupression]).to eq(dossier.hidden_by_user_at.iso8601)
|
||||||
|
expect(gql_data[:demarche][:pendingDeletedDossiers][:nodes].first[:dateSupression] < gql_data[:demarche][:pendingDeletedDossiers][:nodes].second[:dateSupression])
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -252,17 +255,20 @@ describe API::V2::GraphqlController do
|
||||||
|
|
||||||
before {
|
before {
|
||||||
dossier.hide_and_keep_track!(dossier.user, DeletedDossier.reasons.fetch(:user_request))
|
dossier.hide_and_keep_track!(dossier.user, DeletedDossier.reasons.fetch(:user_request))
|
||||||
dossier_accepte.hide_and_keep_track!(instructeur, DeletedDossier.reasons.fetch(:instructeur_request))
|
Timecop.travel(3.hours.ago) {
|
||||||
|
dossier_accepte.hide_and_keep_track!(instructeur, DeletedDossier.reasons.fetch(:instructeur_request))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
it {
|
it {
|
||||||
expect(gql_errors).to be_nil
|
expect(gql_errors).to be_nil
|
||||||
expect(gql_data[:groupeInstructeur][:id]).to eq(groupe_instructeur.to_typed_id)
|
expect(gql_data[:groupeInstructeur][:id]).to eq(groupe_instructeur.to_typed_id)
|
||||||
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].size).to eq(2)
|
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].size).to eq(2)
|
||||||
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].first[:id]).to eq(GraphQL::Schema::UniqueWithinType.encode('DeletedDossier', dossier.id))
|
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].first[:id]).to eq(GraphQL::Schema::UniqueWithinType.encode('DeletedDossier', dossier_accepte.id))
|
||||||
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].second[:id]).to eq(GraphQL::Schema::UniqueWithinType.encode('DeletedDossier', dossier_accepte.id))
|
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].second[:id]).to eq(GraphQL::Schema::UniqueWithinType.encode('DeletedDossier', dossier.id))
|
||||||
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].first[:dateSupression]).to eq(dossier.hidden_by_user_at.iso8601)
|
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].first[:dateSupression]).to eq(dossier_accepte.hidden_by_administration_at.iso8601)
|
||||||
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].second[:dateSupression]).to eq(dossier_accepte.hidden_by_administration_at.iso8601)
|
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].second[:dateSupression]).to eq(dossier.hidden_by_user_at.iso8601)
|
||||||
|
expect(gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].first[:dateSupression] < gql_data[:groupeInstructeur][:pendingDeletedDossiers][:nodes].second[:dateSupression])
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue