1
exercism fetch javascript proverb

proverb.spec.js

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
var Proverb = require('./proverb');

describe('Proverb Test Suite', function () {
  it('tests a single consequence', function () {
    var proverb = new Proverb('nail', 'shoe');

    expect(proverb.toString()).toEqual(
      'For want of a nail the shoe was lost.\n' +
      'And all for the want of a nail.');
  });


  it('tests a short chain of consequences', function () {
    var proverb = new Proverb('nail', 'shoe', 'horse');

    expect(proverb.toString()).toEqual(
      'For want of a nail the shoe was lost.\n' +
      'For want of a shoe the horse was lost.\n' +
      'And all for the want of a nail.');
  });

  it('tests a longer chain of consequences', function () {
    var proverb = new Proverb('nail', 'shoe', 'horse', 'rider');

    expect(proverb.toString()).toEqual(
      'For want of a nail the shoe was lost.\n' +
     'For want of a shoe the horse was lost.\n' +
     'For want of a horse the rider was lost.\n' +
     'And all for the want of a nail.');
  });


  it('tests Proverb class does not hard code the rhyme dictionary',
    function () {
      var proverb = new Proverb('key', 'value');

      expect(proverb.toString()).toEqual(
        'For want of a key the value was lost.\n' +
      'And all for the want of a key.');
    });

  it('tests the whole proveb', function () {
    var proverb = new Proverb('nail', 'shoe', 'horse', 'rider',
      'message', 'battle', 'kingdom');

    expect(proverb.toString()).toEqual(
      'For want of a nail the shoe was lost.\n' +
      'For want of a shoe the horse was lost.\n' +
      'For want of a horse the rider was lost.\n' +
      'For want of a rider the message was lost.\n' +
      'For want of a message the battle was lost.\n' +
      'For want of a battle the kingdom was lost.\n' +
      'And all for the want of a nail.');
  });


  it('tests the use of an optional qualifier in the final consequence',
    function () {
      var proverb = new Proverb('nail', 'shoe', 'horse', 'rider',
        'message', 'battle', 'kingdom',
        { qualifier: 'horseshoe' });

      expect(proverb.toString()).toEqual(
        'For want of a nail the shoe was lost.\n' +
     'For want of a shoe the horse was lost.\n' +
     'For want of a horse the rider was lost.\n' +
     'For want of a rider the message was lost.\n' +
     'For want of a message the battle was lost.\n' +
     'For want of a battle the kingdom was lost.\n' +
     'And all for the want of a horseshoe nail.');
    });

  it('tests the proverb is the same each time', function () {
    var proverb = new Proverb('nail', 'shoe');

    expect(proverb.toString()).toEqual(proverb.toString());
  });
});