Completed
Push — master ( e3ee1d...5cbb1b )
by Justin
01:36
created

test/rs/SourceDescription.js   A

Complexity

Total Complexity 4
Complexity/F 1

Size

Lines of Code 183
Function Count 4

Duplication

Duplicated Lines 183
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 0
c 1
b 0
f 0
nc 1
dl 183
loc 183
rs 10
wmc 4
mnd 0
bc 4
fnc 4
bpm 1
cpm 1
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
B SourceDescription.js ➔ describe(ꞌSourceDescriptionꞌ) 180 180 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1 View Code Duplication
var assert = require('chai').assert,
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
2
    GedcomX = require('../../');
3
4
describe('SourceDescription', function(){
5
  
6
  var fullJSON = {
7
    resourceType: 'http://some/type',
8
    citations: [
9
      {
10
        lang: 'en',
11
        value: 'Long source citation'
12
      }
13
    ],
14
    mediaType: 'book',
15
    about: 'http://a/resource',
16
    mediator: {
17
      resource: 'http://mediator'
18
    },
19
    sources: [
20
      {
21
        description: 'http://source/reference'
22
      }
23
    ],
24
    analysis: {
25
      resource: 'http://analysis'
26
    },
27
    componentOf: {
28
      description: 'http://container'
29
    },
30
    titles: [
31
      {
32
        lang: 'en',
33
        value: 'Title'
34
      },
35
      {
36
        lang: 'es',
37
        value: 'Titulo'
38
      }
39
    ],
40
    notes: [
41
      {
42
        subject: 'Note',
43
        text: 'Some note text'
44
      }
45
    ],
46
    attribution: {
47
      created: 1234578129
48
    },
49
    rights: [
50
      {
51
        resource: 'https://some/right'
52
      }
53
    ],
54
    coverage: {
55
      temporal: {
56
        formal: '+2015'
57
      },
58
      spatial: {
59
        original: 'A place'
60
      }
61
    },
62
    descriptions: [
63
      {
64
        value: 'A description'
65
      }
66
    ],
67
    identifiers: {
68
      $: 'identifier'
69
    },
70
    created: 1000000,
71
    modified: 11111111,
72
    sortKey: '123456',
73
    version: '123',
74
    repository: {
75
      resource: 'http://repository'
76
    }
77
  };
78
  
79
  it('Create with JSON', function(){
80
    var description = GedcomX.SourceDescription(fullJSON);
81
    assert.equal(description.getResourceType(), 'http://some/type');
82
    assert.equal(description.getCitations().length, 1);
83
    assert.equal(description.getCitations()[0].getLang(), 'en');
84
    assert.equal(description.getCitations()[0].getValue(), 'Long source citation');
85
    assert.equal(description.getMediaType(), 'book');
86
    assert.equal(description.getAbout(), 'http://a/resource');
87
    assert.equal(description.getMediator().getResource(), 'http://mediator');
88
    assert.equal(description.getSources().length, 1);
89
    assert.equal(description.getSources()[0].getDescription(), 'http://source/reference');
90
    assert.equal(description.getAnalysis().getResource(), 'http://analysis');
91
    assert.equal(description.getComponentOf().getDescription(), 'http://container');
92
    assert.equal(description.getTitles().length, 2);
93
    assert.equal(description.getTitles()[0].getLang(), 'en');
94
    assert.equal(description.getTitles()[0].getValue(), 'Title');
95
    assert.equal(description.getTitles()[1].getLang(), 'es');
96
    assert.equal(description.getTitles()[1].getValue(), 'Titulo');
97
    assert.equal(description.getNotes().length, 1);
98
    assert.equal(description.getNotes()[0].getSubject(), 'Note');
99
    assert.equal(description.getNotes()[0].getText(), 'Some note text');
100
    assert.equal(description.getAttribution().getCreated().getTime(), 1234578129);
101
    assert.equal(description.getRights().length, 1);
102
    assert.equal(description.getRights()[0].getResource(), 'https://some/right');
103
    assert.equal(description.getCoverage().getTemporal().getFormal(), '+2015');
104
    assert.equal(description.getCoverage().getSpatial().getOriginal(), 'A place');
105
    assert.equal(description.getDescriptions().length, 1);
106
    assert.equal(description.getDescriptions()[0].getValue(), 'A description');
107
    assert.equal(description.getIdentifiers().identifiers.$, 'identifier');
108
    assert.equal(description.getCreated(), 1000000);
109
    assert.equal(description.getModified(), 11111111);
110
    assert.equal(description.getSortKey(), '123456');
111
    assert.equal(description.getVersion(), '123');
112
    assert.equal(description.getRepository().getResource(), 'http://repository');
113
  });
114
  
115
  it('Build', function(){
116
    var description = GedcomX.SourceDescription()
117
      .setResourceType('http://some/type')
118
      .addCitation(GedcomX.SourceCitation().setLang('en').setValue('Long source citation'))
119
      .setMediaType('book')
120
      .setAbout('http://a/resource')
121
      .setMediator(GedcomX.ResourceReference().setResource('http://mediator'))
122
      .addSource(GedcomX.SourceReference().setDescription('http://source/reference'))
123
      .setAnalysis(GedcomX.ResourceReference().setResource('http://analysis'))
124
      .setComponentOf(GedcomX.SourceReference().setDescription('http://container'))
125
      .addTitle(GedcomX.TextValue().setLang('en').setValue('Title'))
126
      .addTitle(GedcomX.TextValue().setLang('es').setValue('Titulo'))
127
      .addNote(GedcomX.Note().setSubject('Note').setText('Some note text'))
128
      .setAttribution(GedcomX.Attribution().setCreated(1234578129))
129
      .addRight(GedcomX.ResourceReference().setResource('https://some/right'))
130
      .setCoverage(
131
        GedcomX.Coverage()
132
          .setTemporal(GedcomX.Date().setFormal('+2015'))
133
          .setSpatial(GedcomX.PlaceReference().setOriginal('A place'))
134
      )
135
      .addDescription(GedcomX.TextValue().setValue('A description'))
136
      .setIdentifiers(GedcomX.Identifiers({
137
        $: 'identifier'
138
      }))
139
      .setCreated(1000000)
140
      .setModified(11111111)
141
      .setSortKey('123456')
142
      .setVersion('123')
143
      .setRepository(GedcomX.ResourceReference().setResource('http://repository'));
144
    assert.equal(description.getResourceType(), 'http://some/type');
145
    assert.equal(description.getCitations().length, 1);
146
    assert.equal(description.getCitations()[0].getLang(), 'en');
147
    assert.equal(description.getCitations()[0].getValue(), 'Long source citation');
148
    assert.equal(description.getMediaType(), 'book');
149
    assert.equal(description.getAbout(), 'http://a/resource');
150
    assert.equal(description.getMediator().getResource(), 'http://mediator');
151
    assert.equal(description.getSources().length, 1);
152
    assert.equal(description.getSources()[0].getDescription(), 'http://source/reference');
153
    assert.equal(description.getAnalysis().getResource(), 'http://analysis');
154
    assert.equal(description.getComponentOf().getDescription(), 'http://container');
155
    assert.equal(description.getTitles().length, 2);
156
    assert.equal(description.getTitles()[0].getLang(), 'en');
157
    assert.equal(description.getTitles()[0].getValue(), 'Title');
158
    assert.equal(description.getTitles()[1].getLang(), 'es');
159
    assert.equal(description.getTitles()[1].getValue(), 'Titulo');
160
    assert.equal(description.getNotes().length, 1);
161
    assert.equal(description.getNotes()[0].getSubject(), 'Note');
162
    assert.equal(description.getNotes()[0].getText(), 'Some note text');
163
    assert.equal(description.getAttribution().getCreated().getTime(), 1234578129);
164
    assert.equal(description.getRights().length, 1);
165
    assert.equal(description.getRights()[0].getResource(), 'https://some/right');
166
    assert.equal(description.getCoverage().getTemporal().getFormal(), '+2015');
167
    assert.equal(description.getCoverage().getSpatial().getOriginal(), 'A place');
168
    assert.equal(description.getDescriptions().length, 1);
169
    assert.equal(description.getDescriptions()[0].getValue(), 'A description');
170
    assert.equal(description.getIdentifiers().identifiers.$, 'identifier');
171
    assert.equal(description.getCreated(), 1000000);
172
    assert.equal(description.getModified(), 11111111);
173
    assert.equal(description.getSortKey(), '123456');
174
    assert.equal(description.getVersion(), '123');
175
    assert.equal(description.getRepository().getResource(), 'http://repository');
176
  });
177
  
178
  it('toJSON', function(){
179
    var description = GedcomX.SourceDescription(fullJSON);
180
    assert.deepEqual(description.toJSON(), fullJSON);
181
  });
182
  
183
});