-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
tests.js
116 lines (98 loc) · 4.67 KB
/
tests.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
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
describe('Домашнее задание к лекции 5 «Классы»', () => {
describe('Задача №1', () => {
let printItem;
beforeEach(function(){
printItem = new PrintEditionItem('Типовой школьный журнал', 2019, 102);
});
it('создание печатного издания', () => {
expect(printItem).toBeDefined();
expect(printItem.name).toEqual('Типовой школьный журнал');
expect(printItem.releaseDate).toEqual(2019);
expect(printItem.pagesCount).toEqual(102);
expect(printItem.state).toEqual(100);
expect(printItem.type).toEqual(null);
});
it('починка почти целого печатного издания (ограничение сеттером state)', () => {
printItem.state = 90;
printItem.fix();
expect(printItem.state).toEqual(100);
});
it('починка печатного издания', () => {
printItem.state = 50;
printItem.fix();
expect(printItem.state).toEqual(75);
});
it('геттер для свойства state', () => {
printItem.state = 10;
const spy = spyOnProperty(printItem, 'state', 'get').and.returnValue(10);
expect(printItem.state).toBe(10);
expect(spy).toHaveBeenCalled();
});
it('сеттер для свойства state', () => {
const spy = spyOnProperty(printItem, 'state', 'set');
printItem.state = 10;
expect(spy).toHaveBeenCalled();
});
it('создание объекта Magazine', () => {
printItem = new Magazine('Forbes', 2020, 180);
expect(printItem.type).toEqual("magazine");
});
it('создание объекта Book', () => {
printItem = new Book('А. Сапковский', 'Меч Предназначения', 1992, 384);
expect(printItem.author).toEqual('А. Сапковский');
expect(printItem.name).toEqual('Меч Предназначения');
expect(printItem.releaseDate).toEqual(1992);
expect(printItem.pagesCount).toEqual(384);
expect(printItem.type).toEqual('book');
});
it('создание объекта NovelBook', () => {
printItem = new NovelBook('А. Сапковский', 'Меч Предназначения', 1992, 384);
expect(printItem.author).toEqual('А. Сапковский');
expect(printItem.type).toEqual('novel');
});
it('создание объекта FantasticBook', () => {
printItem = new FantasticBook('Джон Толкин', 'Властелин колец', 1954, 2093);
expect(printItem.author).toEqual('Джон Толкин');
expect(printItem.type).toEqual('fantastic');
});
it('создание объекта DetectiveBook', () => {
printItem = new DetectiveBook('Агата Кристи', 'Десять негритят', 2019, 256);
expect(printItem.author).toEqual('Агата Кристи');
expect(printItem.type).toEqual('detective');
});
});
describe('Задача №2', () => {
let library, printItem;
beforeEach(function(){
library = new Library('Библиотека имени Ленина');
printItem = new PrintEditionItem('Типовой школьный журнал', 2019, 102);
});
it('создание библиотеки', () => {
expect(library).toBeDefined();
expect(library.name).toEqual('Библиотека имени Ленина');
expect(library.books).toEqual(jasmine.any(Array));
});
it('добавление книги', () => {
library.addBook(printItem);
expect(library.books[0].name).toEqual('Типовой школьный журнал');
expect(library.books.length).toEqual(1);
});
it('поиск книги', () => {
const printItemAdditional = new PrintEditionItem('Блокнот для заметок', 2021, 100);
library.addBook(printItemAdditional);
library.addBook(printItem);
const firstBook = library.findBookBy("releaseDate", 2019);
expect(firstBook.name).toEqual('Типовой школьный журнал');
const secondBook = library.findBookBy("releaseDate", 2154);
expect(secondBook).toEqual(null);
});
it('выдача книги', () => {
library.addBook(printItem);
const firstBook = library.giveBookByName('Типовой школьный журнал');
expect(firstBook.name).toEqual('Типовой школьный журнал');
expect(library.books.length).toEqual(0);
const secondBook = library.giveBookByName('Судовой журнал');
expect(secondBook).toEqual(null);
});
})
});