root/branches/feature-narrow-tables/t/lib/MT/Test.pm @ 1835

Revision 1835, 28.8 kB (checked in by bchoate, 20 months ago)

Always eval with line/file info.

  • Property svn:keywords set to Id Revision
Line 
1package MT::Test;
2
3use strict;
4# Handle cwd = MT_DIR, MT_DIR/t
5use lib 't/lib', 'extlib', 'lib', '../lib', '../extlib';
6use File::Spec;
7use MT;
8
9use Test::More;
10
11BEGIN {
12    # if MT_HOME is not set, set it
13    unless ($ENV{MT_HOME}) {
14        require Cwd;
15        my $cwd = Cwd::getcwd();
16        my @pieces = File::Spec->splitdir($cwd);
17        pop @pieces unless -d 't';
18        $ENV{MT_HOME} = File::Spec->catdir(@pieces);
19    }
20    # if MT_CONFIG is not set, set it
21    if ($ENV{MT_CONFIG}) {
22        if (!File::Spec->file_name_is_absolute($ENV{MT_CONFIG})) {
23            $ENV{MT_CONFIG} = File::Spec->catfile($ENV{MT_HOME}, "t", $ENV{MT_CONFIG});
24        }
25    } else {
26        $ENV{MT_CONFIG} = File::Spec->catfile($ENV{MT_HOME}, "t", "mt.cfg");
27    }
28    chdir $ENV{MT_HOME};
29    my $ds_dir = File::Spec->catdir($ENV{MT_HOME}, "t", "db");
30    if (!-d $ds_dir) {
31        mkdir $ds_dir;
32    }
33}
34
35sub import {
36    my $pkg = shift;
37    foreach my $opt (@_) {
38        if ($opt eq ':db') {
39            diag "Initializing database";
40            $pkg->init_db();
41        }
42        elsif ($opt eq ':testdb') {
43            $pkg->init_test_db();
44        }
45        elsif ($opt eq ':data') {
46            diag "Initializing sample data";
47            $pkg->sample_data();
48        }
49    }
50}
51
52sub init_test_db {
53    my $pkg = shift;
54    # This is a bit of MT::Upgrade magic to prevent the full
55    # instantiation of the MT schema. We force the classes list
56    # to only contain the test 'Foo', 'Bar' classes and neuter
57    # the
58    require MT::Upgrade;
59    # Add our test 'Foo' and 'Bar' classes to the list of
60    # object classes to install.
61    %MT::Upgrade::classes = (foo=>'Foo',bar=>'Bar');
62    #MT::Upgrade->register_class(['Foo', 'Bar']);
63    MT->instance;
64    MT->registry->{object_types}->{foo} = 'Foo';
65    MT->registry->{object_types}->{bar} = 'Bar';
66
67    # Replace the standard seed_database/install_template functions
68    # with stubs since we're not creating a full schema.
69    MT::Upgrade->register_upgrade_function({
70        core_seed_database     => { code => sub { 1 } },
71        core_upgrade_templates => { code => sub { 1 } },
72        core_upgrade_templates => { code => sub { 1 } },
73        core_finish            => { code => sub { 1 } },
74    });
75    $pkg->init_db();
76}
77
78sub init_db {
79    my $pkg = shift;
80    my ($cfg) = @_;
81
82    my $mt = MT->instance($cfg ? (Config => $cfg) : ())
83        or die "No MT object " . MT->errstr;
84
85    my $types = MT->registry('object_types');
86    my @classes = map { $types->{$_} } grep { $_ !~ /\./ } sort keys %$types;
87    foreach my $class (@classes) {
88        if (ref($class) eq 'ARRAY') {
89            next; #TODO for now - it won't hurt when we do driver-tests.
90        }
91        elsif (!defined *{ $class . '::__properties' }) {
92            eval '# line ' . __LINE__ . ' ' . __FILE__ . "\n" . 'require '.$class or die $@;
93        }
94    }
95
96    # Clear existing database tables
97    my $driver = MT::Object->driver();
98    foreach my $class (@classes) {
99        if (ref($class) eq 'ARRAY') {
100            next; #TODO for now - it won't hurt when we do driver-tests.
101        }
102        else {
103            if ($driver->dbd->ddl_class->table_exists($class)) {
104                $driver->sql(
105                    $driver->dbd->ddl_class->drop_table_sql($class),
106                );
107                $driver->dbd->ddl_class->drop_sequence($class),
108            }
109        }
110    }
111
112    require MT::Upgrade;
113    # Initialize the MT database
114    MT::Upgrade->do_upgrade(
115        Install => 1, 
116        App     => __PACKAGE__, 
117        User    => {},
118        Blog    => {}
119    );
120    eval {
121        # line __LINE__ __FILE__
122        MT::Entry->remove;
123        MT::Comment->remove;
124    };
125}
126
127sub progress {}
128sub error {
129    my ($x, $msg) = @_;
130    print "ERROR: $msg\n";
131}
132
133sub sample_data {
134    my $pkg = shift;
135    my $blog = MT::Blog->new();
136    $blog->set_values({
137        name => 'none',
138        site_url => 'http://narnia.na/nana/',
139        archive_url => 'http://narnia.na/nana/archives/',
140        site_path => 't/site/',
141        archive_path => 't/site/archives/',
142        archive_type=>'Individual,Monthly,Weekly,Daily,Category,Page',
143        archive_type_preferred => 'Individual',
144        description => "Narnia None Test Blog",
145        custom_dynamic_templates => 'custom',
146        convert_paras => 1,
147        allow_reg_comments => 1,
148        allow_unreg_comments => 0,
149        allow_pings => 1,
150        sort_order_posts => 'descend',
151        sort_order_comments => 'ascend',
152        remote_auth_token => 'token',
153        convert_paras_comments => 1,
154        google_api_key => 'r9Vj5K8PsjEu+OMsNZ/EEKjWmbCeQAv1',
155        cc_license => 'by-nc-sa http://creativecommons.org/licenses/by-nc-sa/2.0/ http://creativecommons.org/images/public/somerights20.gif',
156        server_offset => '-3.5',
157        children_modified_on => '20000101000000',
158        language => 'en_us',
159        file_extension => 'html',
160    });
161    $blog->id(1);
162    $blog->commenter_authenticators('enabled_TypeKey');
163    $blog->save() or die "Couldn't save blog 1: ". $blog->errstr;
164    diag "Saved blog";
165
166    require MT::Entry;
167    require MT::Author;
168    my $chuckd = MT::Author->new();
169    $chuckd->set_values({
170        name => 'Chuck D',
171        nickname => 'Chucky Dee', 
172        email => 'chuckd@example.com',
173        url => 'http://chuckd.com/',
174        api_password => 'seecret',
175        auth_type => 'MT',
176    });
177    $chuckd->set_password("bass");
178    $chuckd->type(MT::Author::AUTHOR());
179    $chuckd->id(2);
180    $chuckd->is_superuser(1);
181    $chuckd->save()
182        or die "Couldn't save author record 2: " . $chuckd->errstr;
183    diag "Saved user Chuck D";
184
185    my $bobd = MT::Author->new();
186    $bobd->set_values({
187        name => 'Bob D',
188        nickname => 'Dylan', 
189        email => 'bobd@example.com',
190        auth_type => 'MT',
191    });
192    $bobd->set_password("flute");
193    $bobd->type(MT::Author::AUTHOR());
194    $bobd->id(3);
195    $bobd->save() or die "Couldn't save author record 3: " . $bobd->errstr;
196    diag "Saved user Bob D";
197
198    my $johnd = MT::Author->new();
199    $johnd->set_values({
200        name => 'John Doe',
201        nickname => 'John Doe',
202        email => 'jdoe@doe.com',
203        auth_type => 'TypeKey',
204    });
205    $johnd->type(MT::Author::COMMENTER());
206    $johnd->password('(none)');
207    $johnd->id(4);
208    $johnd->save() or die "Couldn't save author record 4: " . $johnd->errstr;
209    diag "Saved user John Doe";
210
211    my $hiro = MT::Author->new();
212    $hiro->set_values({
213        name => 'Hiro Nakamura',
214        nickname => 'Hiro',
215        email => 'hiro@heroes.com',
216        auth_type => 'MT',
217    });
218    $hiro->type(MT::Author::AUTHOR());
219    $hiro->password('time');
220    $hiro->id(5);
221    $hiro->status(2);
222    $hiro->save() or die "Couldn't save author record 5: " . $hiro->errstr;
223    diag "Saved user Hiro";
224
225    require MT::Association;
226    my $assoc = MT::Association->new();
227    $assoc->author_id($chuckd->id);
228    $assoc->blog_id(1);
229    $assoc->role_id(3);
230    $assoc->type(1);
231    $assoc->save();
232
233    $assoc = MT::Association->new();
234    $assoc->author_id($bobd->id);
235    $assoc->blog_id(1);
236    $assoc->role_id(4);
237    $assoc->type(1);
238    $assoc->save();
239
240    $assoc = MT::Association->new();
241    $assoc->author_id($hiro->id);
242    $assoc->blog_id(1);
243    $assoc->role_id(3);
244    $assoc->type(1);
245    $assoc->save();
246
247    # set permission record for johnd commenter on blog 1
248    $johnd->approve(1);
249
250    my $entry = MT::Entry->load(1);
251    if (!$entry) {
252        $entry = MT::Entry->new();
253        $entry->set_values({
254            blog_id => 1,
255            title => 'A Rainy Day',
256            text => 'On a drizzly day last weekend,',
257            text_more => 'I took my grandpa for a walk.',
258            excerpt => 'A story of a stroll.',
259            keywords => 'keywords',
260            created_on => '19780131074500',
261            authored_on => '19780131074500',
262            modified_on => '19780131074600',
263            authored_on => '19780131074500',
264            author_id => $chuckd->id,
265            pinged_urls => 'http://technorati.com/',
266            allow_comments => 1,
267            allow_pings => 1,
268            status => MT::Entry::RELEASE(),
269        });
270        $entry->id(1);
271        $entry->tags('rain', 'grandpa', 'strolling');
272        $entry->save() or die "Couldn't save entry record 1: ".$entry->errstr;
273        diag "Saved entry #1";
274    }
275
276    $entry = MT::Entry->load(2);
277    if (!$entry) {
278        $entry = MT::Entry->new();
279        $entry->set_values({
280            blog_id => 1,
281            title => 'A preponderance of evidence',
282            text => 'It is sufficient to say...',
283            text_more => 'I suck at making up test data.',
284            created_on => '19790131074500',
285            authored_on => '19790131074500',
286            modified_on => '19790131074600',
287            authored_on => '19780131074500',
288            author_id => $bobd->id,
289            allow_comments => 1,
290            status => MT::Entry::FUTURE(),
291        });
292        $entry->id(2);
293        $entry->save() or die "Couldn't save entry record 2: ".$entry->errstr;
294        diag "Saved entry #2";
295    }
296
297    $entry = MT::Entry->load(3);
298    if (!$entry) {
299        $entry = MT::Entry->new();
300        $entry->set_values({
301            blog_id => 1,
302            title => 'Spurious anemones',
303            text => '...are better than the non-spurious',
304            text_more => 'variety.',
305            created_on => '19770131074500',
306            authored_on => '19790131074500',
307            modified_on => '19770131074600',
308            authored_on => '19780131074500',
309            author_id => $chuckd->id,
310            allow_comments => 1,
311            allow_pings => 0,
312            status => MT::Entry::HOLD(),
313        });
314        $entry->id(3);
315        $entry->tags('anemones');
316        $entry->save() or die "Couldn't save entry record 3: ".$entry->errstr;
317        diag "Saved entry #3";
318    }
319
320    require MT::Trackback;
321    my $tb = MT::Trackback->load(1);
322    if (!$tb) {
323        $tb = new MT::Trackback;
324        $tb->entry_id(1);
325        $tb->blog_id(1);
326        $tb->title("Entry TrackBack Title");
327        $tb->description("Entry TrackBack Description");
328        $tb->category_id(0);
329        $tb->id(1);
330        $tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
331    }
332
333    require MT::TBPing;
334    my $ping = MT::TBPing->load(1);
335    if (!$ping) {
336        $ping = new MT::TBPing;
337        $ping->tb_id(1);
338        $ping->blog_id(1);
339        $ping->ip('127.0.0.1');
340        $ping->title('Foo');
341        $ping->excerpt('Bar');
342        $ping->source_url('http://example.com/');
343        $ping->blog_name("Example Blog");
344        $ping->created_on('20050405000000');
345        $ping->id(1);
346        $ping->visible(1);
347        $ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
348        diag "Saved a trackback ping";
349    }
350
351    my @verses = (
352        'Oh, where have you been, my blue-eyed son?
353Oh, where have you been, my darling young one?',
354        'I saw a newborn baby with wild wolves all around it
355I saw a highway of diamonds with nobody on it',
356        'Heard one hundred drummers whose hands were a-blazin\',
357Heard ten thousand whisperin\' and nobody listenin\'',
358        'I met one man who was wounded in love,
359I met another man who was wounded with hatred',
360        'Where hunger is ugly, where souls are forgotten,
361Where black is the color, where none is the number,
362And it\'s a hard, it\'s a hard, it\'s a hard, it\'s a hard,
363It\'s a hard rain\'s a-gonna fall',
364    );
365
366    require MT::Category;
367    my $cat = MT::Category->load({ label => 'foo', blog_id => 1});
368    if (!$cat) {
369        $cat = new MT::Category;
370        $cat->blog_id(1);
371        $cat->label('foo');
372        $cat->description('bar');
373        $cat->author_id($chuckd->id);
374        $cat->parent(0);
375        $cat->id(1);
376        $cat->save or die "Couldn't save category record 1: ". $cat->errstr;
377        diag "Saved category foo";
378    }
379
380    $cat = MT::Category->load({ label => 'bar', blog_id => 1});
381    if (!$cat) {
382        $cat = new MT::Category;
383        $cat->blog_id(1);
384        $cat->label('bar');
385        $cat->description('foo');
386        $cat->author_id($chuckd->id);
387        $cat->parent(0);
388        $cat->id(2);
389        $cat->save or die "Couldn't save category record 2: ". $cat->errstr;
390        diag "Saved category bar";
391    }
392
393    $tb = MT::Trackback->load(2);
394    if (!$tb) {
395        $tb = new MT::Trackback;
396        $tb->title("Category TrackBack Title");
397        $tb->description("Category TrackBack Description");
398        $tb->entry_id(0);
399        $tb->blog_id(1);
400        $tb->category_id(2);
401        $tb->id(2);
402        $tb->save or die "Couldn't save Trackback record 2: " . $tb->errstr;;
403        diag "Saved category bar's trackback target";
404    }
405
406    $cat = MT::Category->load({ label => 'subfoo', blog_id => 1});
407    if (!$cat) {
408        $cat = new MT::Category;
409        $cat->blog_id(1);
410        $cat->label('subfoo');
411        $cat->description('subcat');
412        $cat->author_id($bobd->id);
413        $cat->parent(1);
414        $cat->id(3);
415        $cat->save or die "Couldn't save category record 3: ". $cat->errstr;
416        diag "Saved subcategory subfoo";
417    }
418
419    require MT::Placement;
420    foreach my $i (1..@verses) {
421        $entry = MT::Entry->load($i+3);
422        if (!$entry) {
423            $entry = MT::Entry->new();
424            $entry->set_values({
425                blog_id => 1,
426                title => "Verse $i",
427                text => $verses[$i],
428                author_id => ($i == 3 ? $bobd->id : $chuckd->id),
429                created_on => sprintf("%04d0131074501", $i + 1960),
430                authored_on => sprintf("%04d0131074501", $i + 1960),
431                modified_on => sprintf("%04d0131074601", $i + 1960),
432                authored_on => sprintf("%04d0131074501", $i + 1960),
433                allow_comments => ($i <= 2 ? 0 : 1),
434                status => MT::Entry::RELEASE(),
435            });
436            $entry->id($i+3);
437            $entry->tags('verse');
438            $entry->save()
439                or die "Couldn't save entry record ".($entry->id).": ". $entry->errstr;
440            if ($i == 3) {
441                my $place = new MT::Placement;
442                $place->entry_id($entry->id);
443                $place->blog_id(1);
444                $place->category_id(1);
445                $place->is_primary(1);
446                $place->save
447                    or die "Couldn't save placement record: ".$place->errstr;
448                diag "Placed entry Verse 3 in category foo";
449            }
450            if ($i == 4) {
451                my $place = new MT::Placement;
452                $place->entry_id($entry->id);
453                $place->blog_id(1);
454                $place->category_id(3);
455                $place->is_primary(1);
456                $place->save
457                    or die "Couldn't save placement record: ".$place->errstr;
458                diag "Placed entry Verse 4 in category subfoo";
459            }
460        }
461    }
462
463    # entry id 1 - 1 visible comment
464    # entry id 4 - no comments, commenting is off
465    require MT::Comment;
466    unless (MT::Comment->count({entry_id => 1})) {
467        my $cmt = new MT::Comment();
468        $cmt->set_values({
469            text => 'Postmodern false consciousness has always been firmly rooted in post-Freudian Lacanian neo-Marxist bojangles. Needless to say, this quickly and asymptotically approches a purpletacular jouissance of etic jumpinmypants.',
470            entry_id => 1,
471            author => 'v14GrUH 4 cheep',
472            visible => 1,
473            email => 'jake@fatman.com',
474            url => 'http://fatman.com/',
475            blog_id => 1,
476            ip => '127.0.0.1',
477            created_on => '20040914182800',
478        });
479        $cmt->id(1);
480        $cmt->save() or die "Couldn't save comment record 1: ".$cmt->errstr;
481        diag "Saved comment #1";
482
483        $cmt->id(11);
484        $cmt->text('Comment reply for comment 1');
485        $cmt->author('Comment 11');
486        $cmt->created_on('20040812182900');
487        $cmt->parent_id(1);
488        $cmt->save() or die "Couldn't save comment record 11: ".$cmt->errstr;
489        diag "Saved child comment #11";
490
491        $cmt->id(12);
492        $cmt->text('Comment reply for comment 11');
493        $cmt->author('Comment 12');
494        $cmt->created_on('20040810183000');
495        $cmt->parent_id(11);
496        $cmt->save() or die "Couldn't save comment record 12: ".$cmt->errstr;
497        diag "Saved child comment #12";
498    }
499    # entry id 5 - 1 comment, commenting is off (closed)
500    unless (MT::Comment->count({entry_id => 5})) {
501        my $cmt = new MT::Comment();
502        $cmt->set_values({
503            text => 'Comment for entry 5, visible',
504            entry_id => 5,
505            author => 'Comment 2',
506            visible => 1,
507            email => 'johnd@doe.com',
508            url => 'http://john.doe.com/',
509            commenter_id => $johnd->id,
510            blog_id => 1,
511            ip => '127.0.0.1',
512            created_on => '20040912182800',
513        });
514        $cmt->id(2);
515        $cmt->junk_score(1.5);
516        $cmt->save() or die "Couldn't save comment record 2: ".$cmt->errstr;
517    }
518    # entry id 6 - 3 comment visible, 1 moderated
519    unless (MT::Comment->count({entry_id => 6})) {
520        my $cmt = new MT::Comment();
521        $cmt->set_values({
522            text => 'Comment for entry 6, visible',
523            entry_id => 6,
524            author => 'Comment 3',
525            visible => 1,
526            email => '',
527            url => '',
528            blog_id => 1,
529            ip => '127.0.0.1',
530            created_on => '20040911182800',
531        });
532        $cmt->id(3);
533        $cmt->save() or die "Couldn't save comment record 3: ".$cmt->errstr;
534
535        $cmt->id(4);
536        $cmt->visible(0);
537        $cmt->author('Comment 4');
538        $cmt->text('Comment for entry 6, moderated');
539        $cmt->created_on('20040910182800');
540        $cmt->save() or die "Couldn't save comment record 4: ".$cmt->errstr;
541       
542        $cmt->text("All your comments are belonged to me.");
543        $cmt->commenter_id($chuckd->id);
544        $cmt->visible(1);
545        $cmt->id(14);
546        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
547
548        $cmt->text("All your comments are belonged to us MT Authors.");
549        $cmt->commenter_id($bobd->id);
550        $cmt->visible(1);
551        $cmt->id(15);
552        $cmt->save or die "Couldn't save comment record 1: ".$cmt->errstr;
553    }
554    # entry id 7 - 0 comment visible, 1 moderated
555    unless (MT::Comment->count({entry_id => 7})) {
556        my $cmt = new MT::Comment();
557        $cmt->set_values({
558            text => 'Comment for entry 7, moderated',
559            entry_id => 7,
560            author => 'Comment 7',
561            visible => 0,
562            email => '',
563            url => '',
564            blog_id => 1,
565            ip => '127.0.0.1',
566            created_on => '20040909182800',
567        });
568        $cmt->id(5);
569        $cmt->save() or die "Couldn't save comment record 5: ".$cmt->errstr;
570    }
571    # entry id 8 - 1 comment visible, 1 moderated, 1 junk
572    unless (MT::Comment->count({entry_id => 8})) {
573        my $cmt = new MT::Comment();
574        $cmt->set_values({
575            text => 'Comment for entry 8, visible',
576            entry_id => 8,
577            author => 'Comment 8',
578            visible => 1,
579            email => '',
580            url => '',
581            blog_id => 1,
582            ip => '127.0.0.1',
583            created_on => '20040814182800',
584        });
585        $cmt->id(6);
586        $cmt->save() or die "Couldn't save comment record 6: ".$cmt->errstr;
587
588        $cmt->id(7);
589        $cmt->visible(0);
590        $cmt->text('Comment for entry 8, moderated');
591        $cmt->author('JD7');
592        $cmt->created_on('20040812182800');
593        $cmt->save() or die "Couldn't save comment record 7: ".$cmt->errstr;
594
595        $cmt->id(8);
596        $cmt->visible(0);
597        $cmt->junk_status(-1);
598        $cmt->text('Comment for entry 8, junk');
599        $cmt->author('JD8');
600        $cmt->created_on('20040810182800');
601        $cmt->save() or die "Couldn't save comment record 8: ".$cmt->errstr;
602    }
603
604    require MT::Template;
605    require MT::TemplateMap;
606
607    my $tmpl = new MT::Template;
608    $tmpl->blog_id(1);
609    $tmpl->name('blog-name');
610    $tmpl->text('<MTBlogName>');
611    $tmpl->type('custom');
612    $tmpl->save or die "Couldn't save template record 1: ".$tmpl->errstr;
613    diag "Saved blog-name template";
614
615    ### Asset
616    use MT::Asset;
617
618    my $img_pkg = MT::Asset->class_handler('image');
619    my $file_pkg = MT::Asset->class_handler('file');
620    my $asset = new $img_pkg;
621    $asset->blog_id(1);
622    $asset->url('http://narnia.na/nana/images/test.jpg');
623    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'images', 'test.jpg'));
624    $asset->file_name('test.jpg');
625    $asset->file_ext('jpg');
626    $asset->image_width(640);
627    diag "Set image asset's width metadata field";
628    $asset->image_height(480);
629    $asset->mime_type('image/jpeg');
630    $asset->label('Image photo');
631    $asset->description('This is a test photo.');
632    $asset->created_by(1);
633    $asset->tags('alpha', 'beta', 'gamma');
634    diag "Tagged image asset";
635    $asset->save or die "Couldn't save asset record 1: " . $asset->errstr;
636    diag "Saved image asset";
637
638    $asset->set_score('unit test', $bobd, 5, 1);
639    $asset->set_score('unit test', $johnd, 3, 1);
640    $asset->set_score('unit test', MT::Author->load(1), 4, 1);
641
642    $asset = new $file_pkg;
643    $asset->blog_id(1);
644    $asset->url('http://narnia.na/nana/files/test.tmpl');
645    $asset->file_path(File::Spec->catfile($ENV{MT_HOME}, "t", 'test.tmpl'));
646    $asset->file_name('test.tmpl');
647    $asset->file_ext('tmpl');
648    $asset->mime_type('text/plain');
649    $asset->label('Template');
650    $asset->description('This is a test template.');
651    $asset->created_by(1);
652    $asset->created_on('19780131074500');
653    $asset->tags('beta');
654    $asset->save or die "Couldn't save file asset record: " . $asset->errstr;
655    diag "Saved file asset";
656
657    $asset->set_score('unit test', $chuckd, 2, 1);
658    $asset->set_score('unit test', $johnd, 3, 1);
659   
660    ## ObjectScore
661    my $e5 = MT::Entry->load(5);
662    $e5->set_score('unit test', $bobd, 5, 1);
663    $e5->set_score('unit test', $johnd, 3, 1);
664    $e5->set_score('unit test', MT::Author->load(1), 4, 1);
665
666    my $e6 = MT::Entry->load(6);
667    $e6->set_score('unit test', $chuckd, 1, 1);
668    $e6->set_score('unit test', $johnd, 1, 1);
669   
670    my $e4 = MT::Entry->load(4);
671    $e4->set_score('unit test', $chuckd, 2, 1);
672    $e4->set_score('unit test', $johnd, 3, 1);
673    diag "Saved scores for entry #4";
674
675    ## Page
676    require MT::Page;
677    my $page = MT::Page->new();
678    $page->set_values({
679        blog_id => 1,
680        title => 'Watching the River Flow',
681        text => 'What the matter with me,',
682        text_more => 'I don\'t have much to say,',
683        keywords => 'no folder',
684        excerpt => 'excerpt',
685        created_on => '19780131074500',
686        authored_on => '19780131074500',
687        modified_on => '19780131074600',
688        author_id => $chuckd->id,
689        status => MT::Entry::RELEASE(),
690    });
691    $page->id(20);
692    $page->tags('river', 'flow', 'watch');
693    $page->save() or die "Couldn't save page record 20: ".$page->errstr;
694
695    require MT::Folder;
696    my $folder = MT::Folder->new();
697    $folder->blog_id(1);
698    $folder->label('info');
699    $folder->description('information');
700    $folder->author_id($chuckd->id);
701    $folder->parent(0);
702    $folder->id(20);
703    $folder->save or die "Could'n sae folder record 20:" . $folder->errstr;
704    diag "Saved folder #20";
705
706    $folder = MT::Folder->new();
707    $folder->blog_id(1);
708    $folder->label('download');
709    $folder->description('download top');
710    $folder->author_id($chuckd->id);
711    $folder->parent(0);
712    $folder->id(21);
713    $folder->save or die "Could'n sae folder record 21:" . $folder->errstr;
714
715    $folder = MT::Folder->new();
716    $folder->blog_id(1);
717    $folder->label('nightly');
718    $folder->description('nightly build');
719    $folder->author_id($chuckd->id);
720    $folder->parent(21);
721    $folder->id(22);
722    $folder->save or die "Could'n sae folder record 22:" . $folder->errstr;
723
724    $page = MT::Page->new();
725    $page->set_values({
726        blog_id => 1,
727        title => 'Page #1',
728        text => 'Wish I was back in the city',
729        text_more => 'Instead of this old bank of sand,',
730        keywords => 'keywords',
731        created_on => '19790131074500',
732        authored_on => '19790131074500',
733        modified_on => '19790131074600',
734        author_id => $chuckd->id,
735        status => MT::Entry::RELEASE(),
736    });
737    $page->id(21);
738    $page->tags('page1', 'page2', 'page3');
739    $page->save() or die "Couldn't save page record 21: ".$page->errstr;
740
741    my $folder_place = new MT::Placement;
742    $folder_place->entry_id(21);
743    $folder_place->blog_id(1);
744    $folder_place->category_id(20);
745    $folder_place->is_primary(1);
746    $folder_place->save
747        or die "Couldn't save placement record: ".$folder_place->errstr;
748
749    $page = MT::Page->new();
750    $page->set_values({
751        blog_id => 1,
752        title => 'Page #2',
753        text => 'With the sub beating down over the chimney tops',
754        text_more => 'And the one I love so close at hand',
755        keywords => 'keywords',
756        created_on => '19800131074500',
757        authored_on => '19800131074500',
758        modified_on => '19800131074600',
759        author_id => $chuckd->id,
760        status => MT::Entry::RELEASE(),
761    });
762    $page->id(22);
763    $page->tags('page2', 'page3');
764    $page->save() or die "Couldn't save page record 22: ".$page->errstr;
765
766    $folder_place = new MT::Placement;
767    $folder_place->entry_id(22);
768    $folder_place->blog_id(1);
769    $folder_place->category_id(21);
770    $folder_place->is_primary(1);
771    $folder_place->save
772        or die "Couldn't save placement record: ".$folder_place->errstr;
773
774    $page = MT::Page->new();
775    $page->set_values({
776        blog_id => 1,
777        title => 'Page #3',
778        text => 'If I had wings and I could fly,',
779        text_more => 'I know where I would go.',
780        keywords => 'keywords',
781        created_on => '19810131074500',
782        authored_on => '19810131074500',
783        modified_on => '19810131074600',
784        author_id => $bobd->id,
785        status => MT::Entry::RELEASE(),
786    });
787    $page->id(23);
788    $page->tags('page3');
789    $page->save() or die "Couldn't save page record 23: ".$page->errstr;
790
791    $folder_place = new MT::Placement;
792    $folder_place->entry_id(23);
793    $folder_place->blog_id(1);
794    $folder_place->category_id(22);
795    $folder_place->is_primary(1);
796    $folder_place->save
797        or die "Couldn't save placement record: ".$folder_place->errstr;
798
799    unless (MT::Comment->count({entry_id => $page->id})) {
800        my $page_cmt = new MT::Comment();
801        $page_cmt->set_values({
802            text => "Your time is limited, so don't waste it living someone else's life. Don't be trapped by dogma - which is living with the results of other people's thinking. Don't let the noise of others' opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.",
803            entry_id => 23,
804            author => 'Steve Jobs',
805            visible => 1,
806            email => 'f@example.com',
807            url => 'http://example.com/',
808            blog_id => 1,
809            ip => '127.0.0.1',
810            created_on => '20040114182800',
811            modified_on => '20040114182800',
812        });
813        $page_cmt->id(13);
814        $page_cmt->save() or die "Couldn't save comment record 1: ".$page_cmt->errstr;
815    }
816
817    my $page_tb = MT::Trackback->new;
818    $page_tb->entry_id($page->id);
819    $page_tb->blog_id(1);
820    $page_tb->title("Page TrackBack Title");
821    $page_tb->description("Page TrackBack Description");
822    $page_tb->category_id(0);
823    $page_tb->id(3);
824    $page_tb->save or die "Couldn't save Trackback record 1: " . $tb->errstr;;
825
826    my $page_ping = MT::TBPing->new;
827    $page_ping->tb_id($page_tb->id);
828    $page_ping->blog_id(1);
829    $page_ping->ip('127.0.0.1');
830    $page_ping->title('Trackbacking to a page');
831    $page_ping->excerpt('Four bridges in the bayarea.  Golden Gate, Bay, San Mateo and Dan Burton.');
832    $page_ping->source_url('http://example.com/');
833    $page_ping->blog_name("Example Blog");
834    $page_ping->created_on('20040101000000');
835    $page_ping->modified_on('20040101000000');
836    $page_ping->visible(1);
837    $page_ping->id(3);
838    $page_ping->save or die "Couldn't save TBPing record 1: " . $ping->errstr;
839
840    MT->instance->rebuild(
841        BlogId => 1,
842        EntryCallback => sub { print STDERR "# Rebuilding entry " . $_[0]->id . "\n" }
843    );
844
845    ### Make ObjectAsset mappings
846    require MT::ObjectAsset;
847    my $map;
848    $entry = MT::Entry->load(1);
849    if ($entry) {
850        $map = new MT::ObjectAsset;
851        $map->blog_id($entry->blog_id);
852        $map->asset_id(1);
853        $map->object_ds($entry->datasource);
854        $map->object_id($entry->id);
855        $map->save;
856    }
857    $page = MT::Page->load(20);
858    if ($entry) {
859        $map = new MT::ObjectAsset;
860        $map->blog_id($page->blog_id);
861        $map->asset_id(2);
862        $map->object_ds($page->datasource);
863        $map->object_id($page->id);
864        $map->save;
865    }
866
867    1;
868}
869
8701;
Note: See TracBrowser for help on using the browser.