1- import { IEvent } from '../models/IEvent' ;
2- import { IStorage } from './IStorage' ;
3- import { IStorageItem } from './IStorageItem' ;
4-
5- import { InMemoryStorage } from './InMemoryStorage' ;
61import { NodeFileStorage } from './NodeFileStorage' ;
72
8- import { expect } from 'chai' ;
3+ import { describeStorage } from './Storage-spec' ;
4+
95import * as mockFs from 'mock-fs' ;
106
117let mockedFs ;
@@ -25,181 +21,3 @@ describeStorage('NodeFileStorage',
2521 nodeFileStorageInitializer ,
2622 true
2723) ;
28-
29- describeStorage ( 'InMemoryStorage' , ( maxItems = 250 ) => {
30- return new InMemoryStorage ( maxItems ) ;
31- } ) ;
32-
33- function describeStorage ( name : string ,
34- storageFactory : ( maxItems ?: number ) => IStorage ,
35- beforeEachCallback ?: ( ) => void ,
36- recreateStorage : boolean = false ) {
37-
38- describe ( name , ( ) => {
39-
40- if ( beforeEachCallback ) {
41- beforeEach ( beforeEachCallback ) ;
42- }
43-
44- it ( 'should save events' , ( ) => {
45- let storage = storageFactory ( ) ;
46- let key = 'ex-q-' ;
47- let event1 : IEvent = { type : 'log' , reference_id : key + '123454321' } ;
48- let event2 : IEvent = { type : 'log' , reference_id : key + '098765432' } ;
49- expect ( storage . get ( ) . length ) . to . equal ( 0 ) ;
50- storage . save ( event1 ) ;
51- expect ( storage . get ( ) . length ) . to . equal ( 1 ) ;
52-
53- if ( recreateStorage ) {
54- storage = storageFactory ( ) ;
55- }
56-
57- storage . save ( event2 ) ;
58- expect ( storage . get ( ) . length ) . to . equal ( 2 ) ;
59- } ) ;
60-
61- it ( 'should get saved events' , ( ) => {
62- let storage = storageFactory ( ) ;
63- let key = 'ex-q-' ;
64- let event1 : IEvent = { type : 'log' , reference_id : key + '11' } ;
65- let event2 : IEvent = { type : 'log' , reference_id : key + '12' } ;
66- let event3 : IEvent = { type : 'log' , reference_id : key + '13' } ;
67- let event4 : IEvent = { type : 'log' , reference_id : key + '14' } ;
68- let event5 : IEvent = { type : 'log' , reference_id : key + '15' } ;
69- let event6 : IEvent = { type : 'log' , reference_id : key + '16' } ;
70- expect ( storage . get ( ) . length ) . to . equal ( 0 ) ;
71-
72- let ts1 = storage . save ( event1 ) ;
73- let ts2 = storage . save ( event2 ) ;
74- storage . save ( event3 ) ;
75- storage . save ( event4 ) ;
76- storage . save ( event5 ) ;
77- storage . save ( event6 ) ;
78- expect ( storage . get ( ) . length ) . to . equal ( 6 ) ;
79-
80- if ( recreateStorage ) {
81- storage = storageFactory ( ) ;
82- }
83-
84- expect ( storage . get ( ) . length ) . to . equal ( 6 ) ;
85- storage . remove ( ts1 ) ;
86- expect ( storage . get ( ) . length ) . to . equal ( 5 ) ;
87-
88- expect ( storage . get ( ) [ 0 ] . value ) . to . eql ( event2 ) ;
89- storage . remove ( ts2 ) ;
90- expect ( storage . get ( ) . length ) . to . equal ( 4 ) ;
91-
92- let events = storage . get ( 2 ) ;
93- expect ( events . length ) . to . equal ( 2 ) ;
94- expect ( events [ 0 ] . value ) . not . to . equal ( events [ 1 ] . value ) ;
95- storage . remove ( events [ 0 ] . timestamp ) ;
96- storage . remove ( events [ 1 ] . timestamp ) ;
97- expect ( storage . get ( ) . length ) . to . equal ( 2 ) ;
98-
99- events = storage . get ( ) ;
100- expect ( events . length ) . to . equal ( 2 ) ;
101- expect ( events [ 0 ] . value ) . not . to . equal ( events [ 1 ] . value ) ;
102- } ) ;
103-
104- it ( 'should clear all events' , ( ) => {
105- let storage = storageFactory ( ) ;
106- let key = 'ex-q-' ;
107- let event1 : IEvent = { type : 'log' , reference_id : key + '11' } ;
108- let event2 : IEvent = { type : 'log' , reference_id : key + '12' } ;
109- let event3 : IEvent = { type : 'log' , reference_id : key + '13' } ;
110- let event4 : IEvent = { type : 'log' , reference_id : key + '14' } ;
111- let event5 : IEvent = { type : 'log' , reference_id : key + '15' } ;
112- let event6 : IEvent = { type : 'log' , reference_id : key + '16' } ;
113- expect ( storage . get ( ) . length ) . to . equal ( 0 ) ;
114-
115- let ts1 = storage . save ( event1 ) ;
116- storage . save ( event2 ) ;
117- storage . save ( event3 ) ;
118- storage . save ( event4 ) ;
119- storage . save ( event5 ) ;
120- storage . save ( event6 ) ;
121- expect ( storage . get ( ) . length ) . to . equal ( 6 ) ;
122-
123- if ( recreateStorage ) {
124- storage = storageFactory ( ) ;
125- }
126-
127- storage . remove ( ts1 ) ;
128- expect ( storage . get ( ) . length ) . to . equal ( 5 ) ;
129-
130- storage . clear ( ) ;
131-
132- expect ( storage . get ( ) . length ) . to . equal ( 0 ) ;
133- } ) ;
134-
135- it ( 'should get with limit' , ( ) => {
136- let storage = storageFactory ( 250 ) ;
137- for ( let index : number = 0 ; index < 260 ; index ++ ) {
138- storage . save ( { type : 'log' , reference_id : index . toString ( ) } ) ;
139- }
140-
141- if ( recreateStorage ) {
142- storage = storageFactory ( 250 ) ;
143- }
144-
145- expect ( storage . get ( ) . length ) . to . equal ( 250 ) ;
146- expect ( storage . get ( 1 ) . length ) . to . equal ( 1 ) ;
147- } ) ;
148-
149- it ( 'should get the oldest events' , ( ) => {
150- function getDate ( baseDate : Date , offset : number ) {
151- return new Date ( baseDate . getTime ( ) + ( offset * 60000 ) ) ;
152- }
153-
154- const DATE : Date = new Date ( ) ;
155- let storage = storageFactory ( ) ;
156- for ( let index : number = 0 ; index < 10 ; index ++ ) {
157- storage . save ( {
158- date : getDate ( DATE , index ) ,
159- type : 'log' ,
160- reference_id : index . toString ( )
161- } ) ;
162-
163- expect ( storage . get ( ) . length ) . to . equal ( index + 1 ) ;
164- }
165-
166- if ( recreateStorage ) {
167- storage = storageFactory ( ) ;
168- }
169-
170- let offset : number = 0 ;
171- let events : IStorageItem [ ] = storage . get ( 2 ) ;
172- while ( events && events . length > 0 ) {
173- expect ( 2 ) . to . equal ( events . length ) ;
174- for ( let ei = 0 ; ei < 2 ; ei ++ ) {
175- expect ( getDate ( DATE , offset ++ ) ) . to . eql ( events [ ei ] . value . date ) ;
176- storage . remove ( events [ ei ] . timestamp ) ;
177- }
178-
179- events = storage . get ( 2 ) ;
180- }
181- } ) ;
182-
183- it ( 'should respect max items limit' , ( ) => {
184- let storage = storageFactory ( 5 ) ;
185- let timestamps = [ ] ;
186- for ( let index : number = 0 ; index < 5 ; index ++ ) {
187- timestamps . push ( storage . save ( { type : 'log' , reference_id : index . toString ( ) } ) ) ;
188- }
189-
190- let events : IStorageItem [ ] = storage . get ( ) ;
191- expect ( events . length ) . to . equal ( 5 ) ;
192- expect ( events [ 0 ] . timestamp ) . to . equal ( timestamps [ 0 ] ) ;
193- storage . save ( { type : 'log' , reference_id : '6' } ) ;
194-
195- if ( recreateStorage ) {
196- storage = storageFactory ( 5 ) ;
197- }
198-
199- events = storage . get ( ) ;
200- expect ( events . length ) . to . equal ( 5 ) ;
201- expect ( events [ 0 ] . timestamp ) . to . equal ( timestamps [ 1 ] ) ;
202- } ) ;
203-
204- } ) ;
205- }
0 commit comments