UNPKG

7.86 kBJavaScriptView Raw
1'use strict';
2
3const should = require('should');
4const Activity = require('../index');
5
6const activityExample = {
7 "@context": "http://www.w3.org/ns/activitystreams#",
8 "id": "44da8f78-29ba-9a04-44c4-be3451a3b716",
9 "name": "John Smith has accepted JPG.jpg",
10 "type": "Accept",
11 "actor": {
12 "id": "98765",
13 "type": "Person",
14 "attributedTo": "jsmith@fakedomain.com",
15 "name": "John Smith"
16 },
17 "published": "2016-09-15T21:06:47Z",
18 "object": {
19 "id": "123456",
20 "type": "Presentation",
21 "href": "http://www.fakedomain.com/presentation/id",
22 "mediaType": "mime/jpeg",
23 "name": "JPG.jpg"
24
25 },
26 "target": {
27 "id": "123456",
28 "type": "Link",
29 "href": "http://www.fakedomain.com/image/id",
30 "mediaType": "mime/jpeg",
31 "name": "JPG.jpg"
32 },
33 "content": "This is my content"
34};
35
36describe('Run all tests', () => {
37 describe('Create activity', () => {
38 it('should have empty fields when none are supplied', (done) => {
39 let activity = new Activity();
40 Object.keys(activity.actor()).length.should.equal(0);
41 Object.keys(activity.target()).length.should.equal(0);
42 activity.type().length.should.equal(0);
43 should.not.exist(activity.content());
44 done();
45 });
46
47 it('should have populated fields if they are supplied', (done) => {
48 let activity = new Activity(activityExample);
49 activity.actor().id.should.equal(activityExample.actor.id);
50 activity.target().id.should.equal(activityExample.target.id);
51 activity.type().should.equal(activityExample.type);
52 activity.content().should.equal(activityExample.content);
53 activity.object().should.equal(activityExample.object);
54 done();
55 });
56
57 it('should allow name to be set manually', (done) => {
58 let activity = new Activity();
59 activity.name().length.should.equal(0);
60
61 activity.name(activityExample.name);
62 activity.name().should.equal(activityExample.name);
63 done();
64 });
65
66 it ("should generate name if we don't set it manually", (done) => {
67 let activity = new Activity();
68 activity.name().length.should.equal(0);
69 activity.actor(activityExample.actor);
70 activity.object(activityExample.object);
71 activity.type(activityExample.type);
72
73 activity.actor().id.should.equal(activityExample.actor.id);
74 activity.object().id.should.equal(activityExample.object.id);
75 activity.type().should.equal(activityExample.type);
76
77 activity.toJSON().name.should.equal(activityExample.name);
78 done();
79
80 });
81
82 it('should not override a manual name with a generated name', () => {
83 let activity = new Activity();
84 activity.name().length.should.equal(0);
85 activity.actor(activityExample.actor);
86 activity.object(activityExample.object);
87 activity.type(activityExample.type);
88
89 activity.actor().id.should.equal(activityExample.actor.id);
90 activity.object().id.should.equal(activityExample.object.id);
91 activity.type().should.equal(activityExample.type);
92
93 activity.toJSON().name.should.equal(activityExample.name);
94
95 let fakeName = "Toto, I've a feeling we're not in Kansas anymore.";
96 activity.name(fakeName);
97 activity.name().should.equal(fakeName);
98 activity.toJSON().name.should.equal(fakeName);
99 });
100
101 it('should allow object to be set manually', (done) => {
102 let activity = new Activity();
103 Object.keys(activity.object()).length.should.equal(0);
104
105 activity.object(activityExample.object);
106 activity.object().id.should.equal(activityExample.object.id);
107 done();
108 });
109
110 it('should allow actor to be set manually', (done) => {
111 let activity = new Activity();
112 Object.keys(activity.actor()).length.should.equal(0);
113
114 activity.actor(activityExample.actor);
115 activity.actor().id.should.equal(activityExample.actor.id);
116 done();
117 });
118
119 it('should allow target to be set manually', (done) => {
120 let activity = new Activity();
121 Object.keys(activity.target()).length.should.equal(0);
122
123 activity.target(activityExample.target);
124 activity.target().id.should.equal(activityExample.target.id);
125 done();
126 });
127
128 it('should allow type to be set manually', (done) => {
129 let activity = new Activity();
130 activity.type().length.should.equal(0);
131
132 activity.type(activityExample.type);
133 activity.type().should.equal(activityExample.type);
134 done();
135 });
136
137 it('should allow content to be set manually', (done) => {
138 let activity = new Activity();
139 should.not.exist(activity.content());
140
141 activity.content(activityExample.content);
142 activity.content().should.equal(activityExample.content);
143 done();
144 });
145
146 it('should allow meta to be set as an object or a string', (done) => {
147 let activity = new Activity(activityExample);
148 should.not.exist(activity.meta());
149
150 let metadata = { recipients: ["email1@email.com", "email2@email.com"], clientId: "clientId" };
151
152 activity.meta(metadata);
153 activity.toJSON().meta.recipients.should.equal(metadata.recipients);
154 activity.toJSON().meta.clientId.should.equal(metadata.clientId);
155 done();
156 });
157
158 it('should allow content to be an object or a string', (done) => {
159 let activity = new Activity();
160 should.not.exist(activity.content());
161
162 activity.content(activityExample.content);
163 activity.content().should.equal(activityExample.content);
164
165 let content = {
166 type: "Note",
167 name: "This is my content"
168 };
169
170 activity.content(content);
171 activity.content().should.equal(content);
172 done();
173 })
174
175 });
176 describe('Output functions', () => {
177
178 it('- toString() should output correctly', (done) => {
179 let activity = new Activity();
180 activity.object(activityExample.object)
181 .type(activityExample.type)
182 .target(activityExample.target)
183 .actor(activityExample.actor)
184 .content(activityExample.content);
185
186 let activityJSONString = activity.toString();
187 let json = JSON.parse(activityJSONString);
188
189 json.actor.id.should.equal(activityExample.actor.id);
190 json.object.id.should.equal(activityExample.object.id);
191 json.type.should.equal(activityExample.type);
192 should.exist(json.published);
193 should.exist(json['@context']);
194 Object.keys(json).length.should.equal(Object.keys(activityExample).length);
195 Object.keys(json.actor).length.should.equal(Object.keys(activityExample.actor).length);
196 Object.keys(json.target).length.should.equal(Object.keys(activityExample.target).length);
197 Object.keys(json.object).length.should.equal(Object.keys(activityExample.object).length);
198
199 done();
200
201 });
202 it('- toJson() should output correctly', (done) => {
203 let activity = new Activity();
204 activity.target(activityExample.target);
205 activity.object(activityExample.object);
206 activity.type(activityExample.type);
207 activity.actor(activityExample.actor);
208 activity.content(activityExample.content);
209
210 let activityJSON = activity.toJSON();
211
212 activityJSON.actor.id.should.equal(activityExample.actor.id);
213 activityJSON.object.id.should.equal(activityExample.object.id);
214 activityJSON.type.should.equal(activityExample.type);
215 should.exist(activityJSON.published);
216 should.exist(activityJSON['@context']);
217 Object.keys(activityJSON).length.should.equal(Object.keys(activityExample).length);
218 Object.keys(activityJSON.actor).length.should.equal(Object.keys(activityExample.actor).length);
219 Object.keys(activityJSON.target).length.should.equal(Object.keys(activityExample.target).length);
220 Object.keys(activityJSON.object).length.should.equal(Object.keys(activityExample.object).length);
221
222 done();
223
224 });
225 });
226});