summaryrefslogtreecommitdiff
path: root/web-ui/test/spec/tags/data/tags.spec.js
blob: adb279ac82bc0b8a2570f3f70fb343169ceb1328 (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
/* global Pixelated */

describeComponent('tags/data/tags', function () {
  'use strict';

  beforeEach(function () {
    this.setupComponent();
  });

  it('asks the server for tags when receiving the tags:want event', function() {
    spyOn($, 'ajax').and.returnValue($.Deferred());

    this.component.trigger(Pixelated.events.tags.want);

    expect($.ajax.calls.mostRecent().args[0]).toEqual('/tags');
  });

  it('triggers an event on the initial sender after receiving tags', function() {
    var deferred = $.Deferred();

    spyOn($, 'ajax').and.returnValue(deferred);
    var me = {};
    var eventSpy = spyOnEvent(me, Pixelated.events.tags.received);

    this.component.trigger(Pixelated.events.tags.want, { caller: me});

    deferred.resolve(['foo', 'bar', 'quux/bar']);

    expect(eventSpy).toHaveBeenTriggeredOn(me);
  });

  it('triggers an event containing the returned tags', function() {
    var tags = ['foo', 'bar', 'quux/bar'];
    var deferred = $.Deferred();

    spyOn($, 'ajax').and.returnValue(deferred);
    var me = {};
    var eventSpy = spyOnEvent(me, Pixelated.events.tags.received);
    this.component.trigger(Pixelated.events.tags.want, { caller: me });

    deferred.resolve(tags);

    tags.push(this.component.all);
    expect(eventSpy.mostRecentCall.data).toEqual(jasmine.objectContaining({tags: tags}));
  });
});