summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/models/thread/thread_tests.js
blob: a535cf4e72fc682ba6cf396b78b8ef3d2ea714e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
odoo.define('mail/static/src/models/thread/thread_tests.js', function (require) {
'use strict';

const { afterEach, beforeEach, start } = require('mail/static/src/utils/test_utils.js');

QUnit.module('mail', {}, function () {
QUnit.module('models', {}, function () {
QUnit.module('thread', {}, function () {
QUnit.module('thread_tests.js', {
    beforeEach() {
        beforeEach(this);

        this.start = async params => {
            const { env, widget } = await start(Object.assign({}, params, {
                data: this.data,
            }));
            this.env = env;
            this.widget = widget;
        };
    },
    afterEach() {
        afterEach(this);
    },
});

QUnit.test('inbox & starred mailboxes', async function (assert) {
    assert.expect(10);

    await this.start();
    const mailboxInbox = this.env.messaging.inbox;
    const mailboxStarred = this.env.messaging.starred;
    assert.ok(mailboxInbox, "should have mailbox inbox");
    assert.ok(mailboxStarred, "should have mailbox starred");
    assert.strictEqual(mailboxInbox.model, 'mail.box');
    assert.strictEqual(mailboxInbox.counter, 0);
    assert.strictEqual(mailboxInbox.id, 'inbox');
    assert.strictEqual(mailboxInbox.name, "Inbox"); // language-dependent
    assert.strictEqual(mailboxStarred.model, 'mail.box');
    assert.strictEqual(mailboxStarred.counter, 0);
    assert.strictEqual(mailboxStarred.id, 'starred');
    assert.strictEqual(mailboxStarred.name, "Starred"); // language-dependent
});

QUnit.test('create (channel)', async function (assert) {
    assert.expect(23);

    await this.start();
    assert.notOk(this.env.models['mail.partner'].findFromIdentifyingData({ id: 9 }));
    assert.notOk(this.env.models['mail.partner'].findFromIdentifyingData({ id: 10 }));
    assert.notOk(this.env.models['mail.thread'].findFromIdentifyingData({
        id: 100,
        model: 'mail.channel',
    }));

    const thread = this.env.models['mail.thread'].create({
        channel_type: 'channel',
        id: 100,
        members: [['insert', [{
            email: "john@example.com",
            id: 9,
            name: "John",
        }, {
            email: "fred@example.com",
            id: 10,
            name: "Fred",
        }]]],
        message_needaction_counter: 6,
        model: 'mail.channel',
        name: "General",
        public: 'public',
        serverMessageUnreadCounter: 5,
    });
    assert.ok(thread);
    assert.ok(this.env.models['mail.partner'].findFromIdentifyingData({ id: 9 }));
    assert.ok(this.env.models['mail.partner'].findFromIdentifyingData({ id: 10 }));
    assert.ok(this.env.models['mail.thread'].findFromIdentifyingData({
        id: 100,
        model: 'mail.channel',
    }));
    const partner9 = this.env.models['mail.partner'].findFromIdentifyingData({ id: 9 });
    const partner10 = this.env.models['mail.partner'].findFromIdentifyingData({ id: 10 });
    assert.strictEqual(thread, this.env.models['mail.thread'].findFromIdentifyingData({
        id: 100,
        model: 'mail.channel',
    }));
    assert.strictEqual(thread.model, 'mail.channel');
    assert.strictEqual(thread.channel_type, 'channel');
    assert.strictEqual(thread.id, 100);
    assert.ok(thread.members.includes(partner9));
    assert.ok(thread.members.includes(partner10));
    assert.strictEqual(thread.message_needaction_counter, 6);
    assert.strictEqual(thread.name, "General");
    assert.strictEqual(thread.public, 'public');
    assert.strictEqual(thread.serverMessageUnreadCounter, 5);
    assert.strictEqual(partner9.email, "john@example.com");
    assert.strictEqual(partner9.id, 9);
    assert.strictEqual(partner9.name, "John");
    assert.strictEqual(partner10.email, "fred@example.com");
    assert.strictEqual(partner10.id, 10);
    assert.strictEqual(partner10.name, "Fred");
});

QUnit.test('create (chat)', async function (assert) {
    assert.expect(15);

    await this.start();
    assert.notOk(this.env.models['mail.partner'].findFromIdentifyingData({ id: 5 }));
    assert.notOk(this.env.models['mail.thread'].findFromIdentifyingData({
        id: 200,
        model: 'mail.channel',
    }));

    const channel = this.env.models['mail.thread'].create({
        channel_type: 'chat',
        id: 200,
        members: [['insert', {
            email: "demo@example.com",
            id: 5,
            im_status: 'online',
            name: "Demo",
        }]],
        model: 'mail.channel',
    });
    assert.ok(channel);
    assert.ok(this.env.models['mail.thread'].findFromIdentifyingData({
        id: 200,
        model: 'mail.channel',
    }));
    assert.ok(this.env.models['mail.partner'].findFromIdentifyingData({ id: 5 }));
    const partner = this.env.models['mail.partner'].findFromIdentifyingData({ id: 5 });
    assert.strictEqual(channel, this.env.models['mail.thread'].findFromIdentifyingData({
        id: 200,
        model: 'mail.channel',
    }));
    assert.strictEqual(channel.model, 'mail.channel');
    assert.strictEqual(channel.channel_type, 'chat');
    assert.strictEqual(channel.id, 200);
    assert.ok(channel.correspondent);
    assert.strictEqual(partner, channel.correspondent);
    assert.strictEqual(partner.email, "demo@example.com");
    assert.strictEqual(partner.id, 5);
    assert.strictEqual(partner.im_status, 'online');
    assert.strictEqual(partner.name, "Demo");
});

});
});
});

});