Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
P
parlote-facil
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneur
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
facil
parlote-facil
Validations
5fba53a1
Valider
5fba53a1
rédigé
il y a 9 ans
par
zaziemo
Validation de
Dennis Schubert
il y a 9 ans
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
refactor even more tests
parent
3ff33d35
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
1
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
spec/models/conversation_spec.rb
+51
-74
51 ajouts, 74 suppressions
spec/models/conversation_spec.rb
avec
51 ajouts
et
74 suppressions
spec/models/conversation_spec.rb
+
51
−
74
Voir le fichier @
5fba53a1
...
...
@@ -5,101 +5,91 @@
require
'spec_helper'
describe
Conversation
,
:type
=>
:model
do
before
do
@user1
=
alice
@user2
=
bob
@participant_ids
=
[
@user1
.
contacts
.
first
.
person
.
id
,
@user1
.
person
.
id
]
@create_hash
=
{
:author
=>
@user1
.
person
,
:participant_ids
=>
@participant_ids
,
:subject
=>
"cool stuff"
,
:messages_attributes
=>
[
{
:author
=>
@user1
.
person
,
:text
=>
'hey'
}
]
}
end
let
(
:user1
)
{
alice
}
let
(
:user2
)
{
bob
}
let
(
:participant_ids
)
{
[
user1
.
contacts
.
first
.
person
.
id
,
user1
.
person
.
id
]
}
let
(
:create_hash
)
{
{
author:
user1
.
person
,
participant_ids:
participant_ids
,
subject:
"cool stuff"
,
messages_attributes:
[
{
author:
user1
.
person
,
text:
"hey"
}
]}
}
let
(
:conversation
)
{
Conversation
.
create
(
create_hash
)
}
let
(
:message_last
)
{
Message
.
create
(
author:
user2
.
person
,
created_at:
Time
.
now
+
100
,
text:
"last"
,
conversation_id:
conversation
.
id
)
}
let
(
:message_first
)
{
Message
.
create
(
author:
user2
.
person
,
created_at:
Time
.
now
+
100
,
text:
"first"
,
conversation_id:
conversation
.
id
)
}
it
'creates a message on create'
do
expect
{
Conversation
.
create
(
@create_hash
)
}.
to
change
(
Message
,
:count
).
by
(
1
)
expect
{
conversation
}.
to
change
(
Message
,
:count
).
by
(
1
)
end
describe
'#last_author'
do
it
'returns the last author to a conversation'
do
cnv
=
Conversation
.
create
(
@create_hash
)
Message
.
create
(
:author
=>
@user2
.
person
,
:created_at
=>
Time
.
now
+
100
,
:text
=>
"last"
,
:conversation_id
=>
cnv
.
id
)
expect
(
cnv
.
reload
.
last_author
.
id
).
to
eq
(
@user2
.
person
.
id
)
message_last
expect
(
conversation
.
reload
.
last_author
.
id
).
to
eq
(
user2
.
person
.
id
)
end
end
describe
"#ordered_participants"
do
it
"returns the ordered participants"
do
cnv
=
Conversation
.
create
(
@create_hash
)
Message
.
create
(
author:
@user2
.
person
,
created_at:
Time
.
now
+
100
,
text:
"last"
,
conversation_id:
cnv
.
id
)
expect
(
cnv
.
ordered_participants
.
first
).
to
eq
(
@user2
.
person
)
expect
(
cnv
.
ordered_participants
.
last
).
to
eq
(
@user1
.
person
)
message_last
expect
(
conversation
.
ordered_participants
.
first
).
to
eq
(
user2
.
person
)
expect
(
conversation
.
ordered_participants
.
last
).
to
eq
(
user1
.
person
)
end
end
describe
'#first_unread_message'
do
before
do
@cnv
=
Conversation
.
create
(
@create_hash
)
@message
=
Message
.
create
(
:author
=>
@user2
.
person
,
:created_at
=>
Time
.
now
+
100
,
:text
=>
"last"
,
:conversation_id
=>
@cnv
.
id
)
@message
.
increase_unread
(
@user1
)
message_last
.
increase_unread
(
user1
)
end
it
'returns the first unread message if there are unread messages in a conversation'
do
@cnv
.
first_unread_message
(
@
user1
)
==
@
message
conversation
.
first_unread_message
(
user1
)
==
message
_last
end
it
'returns nil if there are no unread messages in a conversation'
do
@cnv
.
conversation_visibilities
.
where
(
:
person_id
=>
@
user1
.
person
.
id
).
first
.
tap
{
|
cv
|
cv
.
unread
=
0
}.
save
expect
(
@cnv
.
first_unread_message
(
@
user1
)).
to
be_nil
conversation
.
conversation_visibilities
.
where
(
person_id
:
user1
.
person
.
id
).
first
.
tap
{
|
cv
|
cv
.
unread
=
0
}.
save
expect
(
conversation
.
first_unread_message
(
user1
)).
to
be_nil
end
end
describe
'#set_read'
do
before
do
@cnv
=
Conversation
.
create
(
@create_hash
)
Message
.
create
(
:author
=>
@user2
.
person
,
:created_at
=>
Time
.
now
+
100
,
:text
=>
"first"
,
:conversation_id
=>
@cnv
.
id
)
.
increase_unread
(
@user1
)
Message
.
create
(
:author
=>
@user2
.
person
,
:created_at
=>
Time
.
now
+
200
,
:text
=>
"last"
,
:conversation_id
=>
@cnv
.
id
)
.
increase_unread
(
@user1
)
conversation
message_first
.
increase_unread
(
user1
)
message_last
.
increase_unread
(
user1
)
end
it
'sets the unread counter to 0'
do
expect
(
@cnv
.
conversation_visibilities
.
where
(
:
person_id
=>
@
user1
.
person
.
id
).
first
.
unread
).
to
eq
(
2
)
@cnv
.
set_read
(
@
user1
)
expect
(
@cnv
.
conversation_visibilities
.
where
(
:
person_id
=>
@
user1
.
person
.
id
).
first
.
unread
).
to
eq
(
0
)
expect
(
conversation
.
conversation_visibilities
.
where
(
person_id
:
user1
.
person
.
id
).
first
.
unread
).
to
eq
(
2
)
conversation
.
set_read
(
user1
)
expect
(
conversation
.
conversation_visibilities
.
where
(
person_id
:
user1
.
person
.
id
).
first
.
unread
).
to
eq
(
0
)
end
end
context
'transport'
do
let
(
:conversation_message
)
{
conversation
.
messages
.
first
}
let
(
:xml
)
{
conversation
.
to_diaspora_xml
}
before
do
@cnv
=
Conversation
.
create
(
@create_hash
)
@message
=
@cnv
.
messages
.
first
@xml
=
@cnv
.
to_diaspora_xml
conversation
end
describe
'serialization'
do
it
'serializes the message'
do
expect
(
@
xml
.
gsub
(
/\s/
,
''
)).
to
include
(
@
message
.
to_xml
.
to_s
.
gsub
(
/\s/
,
''
))
expect
(
xml
.
gsub
(
/\s/
,
''
)).
to
include
(
conversation_
message
.
to_xml
.
to_s
.
gsub
(
/\s/
,
''
))
end
it
'serializes the participants'
do
@
create_hash
[
:participant_ids
].
each
{
|
id
|
expect
(
@
xml
).
to
include
(
Person
.
find
(
id
).
diaspora_handle
)
create_hash
[
:participant_ids
].
each
{
|
id
|
expect
(
xml
).
to
include
(
Person
.
find
(
id
).
diaspora_handle
)
}
end
it
'serializes the created_at time'
do
expect
(
@
xml
).
to
include
(
@
message
.
created_at
.
to_s
)
expect
(
xml
).
to
include
(
conversation_
message
.
created_at
.
to_s
)
end
end
describe
'#subscribers'
do
it
'returns the recipients for the post owner'
do
expect
(
@cnv
.
subscribers
(
@
user1
)).
to
eq
(
@
user1
.
contacts
.
map
{
|
c
|
c
.
person
})
expect
(
conversation
.
subscribers
(
user1
)).
to
eq
(
user1
.
contacts
.
map
{
|
c
|
c
.
person
})
end
end
...
...
@@ -111,63 +101,50 @@ describe Conversation, :type => :model do
it
'creates a message'
do
expect
{
Diaspora
::
Parser
.
from_xml
(
@
xml
).
receive
(
@
user1
,
@
user2
.
person
)
Diaspora
::
Parser
.
from_xml
(
xml
).
receive
(
user1
,
user2
.
person
)
}.
to
change
(
Message
,
:count
).
by
(
1
)
end
it
'creates a conversation'
do
expect
{
Diaspora
::
Parser
.
from_xml
(
@
xml
).
receive
(
@
user1
,
@
user2
.
person
)
Diaspora
::
Parser
.
from_xml
(
xml
).
receive
(
user1
,
user2
.
person
)
}.
to
change
(
Conversation
,
:count
).
by
(
1
)
end
it
'creates appropriate visibilities'
do
expect
{
Diaspora
::
Parser
.
from_xml
(
@
xml
).
receive
(
@
user1
,
@
user2
.
person
)
}.
to
change
(
ConversationVisibility
,
:count
).
by
(
@
participant_ids
.
size
)
Diaspora
::
Parser
.
from_xml
(
xml
).
receive
(
user1
,
user2
.
person
)
}.
to
change
(
ConversationVisibility
,
:count
).
by
(
participant_ids
.
size
)
end
it
'does not save before receive'
do
expect
(
Diaspora
::
Parser
.
from_xml
(
@
xml
).
persisted?
).
to
be
false
expect
(
Diaspora
::
Parser
.
from_xml
(
xml
).
persisted?
).
to
be
false
end
it
'notifies for the message'
do
expect
(
Notification
).
to
receive
(
:notify
).
once
Diaspora
::
Parser
.
from_xml
(
@
xml
).
receive
(
@
user1
,
@
user2
.
person
)
Diaspora
::
Parser
.
from_xml
(
xml
).
receive
(
user1
,
user2
.
person
)
end
end
end
describe
"#invalid parameters"
do
context
"local author"
do
before
do
@invalid_hash
=
{
author:
peter
.
person
,
participant_ids:
[
peter
.
person
.
id
,
@user1
.
person
.
id
],
subject:
"cool stuff"
,
messages_attributes:
[{
author:
peter
.
person
,
text:
"hey"
}]
}
end
let
(
:invalid_hash
)
{
{
author:
peter
.
person
,
participant_ids:
[
peter
.
person
.
id
,
user1
.
person
.
id
],
subject:
"cool stuff"
,
messages_attributes:
[{
author:
peter
.
person
,
text:
"hey"
}]}
}
it
"is invalid with invalid recipient"
do
conversation
=
Conversation
.
create
(
@
invalid_hash
)
expect
(
conversation
).
to
be_invalid
invalid_
conversation
=
Conversation
.
create
(
invalid_hash
)
expect
(
invalid_
conversation
).
to
be_invalid
end
end
context
"remote author"
do
before
do
@remote_person
=
remote_raphael
@local_user
=
alice
@participant_ids
=
[
@remote_person
.
id
,
@local_user
.
person
.
id
]
@invalid_hash_remote
=
{
author:
@remote_person
,
participant_ids:
@participant_ids
,
subject:
"cool stuff"
,
messages_attributes:
[{
author:
@remote_person
,
text:
"hey"
}]
}
end
let
(
:remote_person
)
{
remote_raphael
}
let
(
:local_user
)
{
alice
}
let
(
:participant_ids
)
{
[
remote_person
.
id
,
local_user
.
person
.
id
]
}
let
(
:invalid_hash_remote
)
{
{
author:
remote_person
,
participant_ids:
participant_ids
,
subject:
"cool stuff"
,
messages_attributes:
[{
author:
remote_person
,
text:
"hey"
}]}
}
it
"is invalid with invalid recipient"
do
conversation
=
Conversation
.
create
(
@
invalid_hash_remote
)
expect
(
conversation
).
to
be_invalid
invalid_
conversation
_remote
=
Conversation
.
create
(
invalid_hash_remote
)
expect
(
invalid_
conversation
_remote
).
to
be_invalid
end
end
end
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter