fix merge problem, create factory, fix controller problem in SO and WRN, setup a testing database

This commit is contained in:
Zain Fauzan Rofie Azizi
2018-05-31 15:59:59 +08:00
17 changed files with 658 additions and 25 deletions
View File
+167
View File
@@ -0,0 +1,167 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\So;
use App\Soitem;
class SoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
// get the list of the shipping order
public function index()
{
return view('welcome');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
//get the shipping order
public function showso($so_id)
{
$so_id = So::find($so_id);
return response()->json($so_id, 200);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
//post shipping order amd item
public function store(Request $request)
{
//shipping order
$so = new So;
$so->ff_id = $request->input('ff_id');
$so->supplier_company_name = $request->input('supplier_company_name');
$so->supplier_contact_person = $request->input('supplier_contact_person');
$so->supplier_contact_person_no = $request->input('supplier_contact_person_no');
$so->delivery_id = $request->input('delivery_id');
$so->warehouse_id = $request->input('warehouse_id');
$so->save();
//shipping order item
$soitems = $request->input("soitem");
foreach ($soitems as $soitem)
{
$new_soitem = new Soitem(array(
'so_id'=>$so->id,
'status'=>$soitem['status'],
'order_id'=>$soitem['order_id'],
'brand_no'=>$soitem['brand_no'],
'model_no'=>$soitem['model_no'],
'item_code'=>$soitem['item_code'],
'quantity_of_item'=>$soitem['quantity_of_item'],
'uom'=>$soitem['uom'],
'quantity_of_carton'=>$soitem['quantity_of_carton'],
'packaging_type'=>$soitem['packaging_type'],
'packaging_height'=>$soitem['packaging_height'],
'packaging_width'=>$soitem['packaging_width'],
'packaging_depth'=>$soitem['packaging_depth'],
'packaging_gross'=>$soitem['packaging_gross'],
'packaging_nett'=>$soitem['packaging_nett'],
));
$new_soitem->save();
}
return response()->json(['so'=>$so], 201);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
//post the cancel order
public function cancelOrder(Request $request)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//for shipping order
$so = So::find($id);
$so->ff_id = $request->input('ff_id');
$so->supplier_company_name = $request->input('supplier_company_name');
$so->supplier_contact_person = $request->input('supplier_contact_person');
$so->supplier_contact_person_no = $request->input('supplier_contact_person_no');
$so->delivery_id = $request->input('delivery_id');
$so->warehouse_id = $request->input('warehouse_id');
$so->save();
$soitems = $request->input('soitem');
foreach ($soitems as $soitem)
{
$new_soitem = Soitem::where('so_id', $id)->first();
$new_soitem->status = $soitem['status'];
$new_soitem->order_id = $soitem['order_id'];
$new_soitem->brand_no = $soitem['brand_no'];
$new_soitem->model_no = $soitem['model_no'];
$new_soitem->item_code = $soitem['item_code'];
$new_soitem->quantity_of_item = $soitem['quantity_of_item'];
$new_soitem->uom = $soitem['uom'];
$new_soitem->quantity_of_carton = $soitem['quantity_of_carton'];
$new_soitem->packaging_type = $soitem['packaging_type'];
$new_soitem->packaging_height = $soitem['packaging_height'];
$new_soitem->packaging_width = $soitem['packaging_width'];
$new_soitem->packaging_depth = $soitem['packaging_depth'];
$new_soitem->packaging_gross = $soitem['packaging_gross'];
$new_soitem->packaging_nett = $soitem['packaging_nett'];
$new_soitem->save();
}
return response()->json(['so'=>$so],201);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
// delete the shipping order
public function delete(So $so_id)
{
$so_id->delete($so_id);
return response()->json($so_id, 204);
}
// delete the shipping order item
public function deleteitem(Soitem $so_id)
{
$so_id->delete($so_id);
return response()->json($so_id, 204);
}
}
@@ -46,6 +46,7 @@ class WarehousearrangementController extends Controller
$warehouseitems = $request->input("warehouseitem");
foreach ($warehouseitems as $warehouseitem)
{
$new_warehouseitem = new Warehouseitem(array(
'description'=>$warehouseitem['description'],
'nominal_ctn'=>$warehouseitem['nominal_ctn'],
@@ -58,8 +59,7 @@ class WarehousearrangementController extends Controller
'isDamaged'=>$warehouseitem['isDamaged'],
'status'=>$warehouseitem['status'],
'image'=>$warehouseitem['image'],
'wa_id'=>$warehouseitem['wa_id'],
'soitem_id'=>$warehouseitem['soitem_id'],
'wa_id'=>$warehousearr->id,
));
$new_warehouseitem->save();
@@ -93,8 +93,7 @@ class WarehousearrangementController extends Controller
$warehousearr->save();
//store warehouse receive note item
$warehouseitems = $request->input('warehouseitem');
$warehouseitems = $request->input('warehouseitem');
foreach ($warehouseitems as $warehouseitem)
{
$ex_warehouseitem = Warehouseitem::where('wa_id', $id)->first();
@@ -109,11 +108,7 @@ class WarehousearrangementController extends Controller
$ex_warehouseitem->isDamaged = $warehouseitem['isDamaged'];
$ex_warehouseitem->status = $warehouseitem['status'];
$ex_warehouseitem->actual_measurement = $warehouseitem['actual_measurement'];
$ex_warehouseitem->image = $warehouseitem['image'];
// $ex_warehouseitem->wa_id = $warehouseitem['wa_id'];
// $ex_warehouseitem->soitem_id = $warehouseitem['soitem_id'];
$ex_warehouseitem->image = $warehouseitem['image'];
$ex_warehouseitem->save();
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class So extends Model
{
protected $fillable = [
'ff_id',
'supplier_company_name',
'supplier_contact_person',
'supplier_contact_person_no',
'delivery_id',
'warehouse_id',
];
public function soitem()
{
return $this->hasMany('App\Soitem');
}
public function warehousearr()
{
return $this->hasMany('App\Warehousearr');
}
}
+35
View File
@@ -0,0 +1,35 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Soitem extends Model
{
protected $fillable = [
'so_id',
'status',
'order_id',
'brand_no',
'model_no',
'item_code',
'quantity_of_item',
'uom',
'quantity_of_carton',
'packaging_type',
'packaging_height',
'packaging_width',
'packaging_depth',
'packaging_gross',
'packaging_nett',
];
public function so()
{
return $this->belongsTo('App\So');
}
}
+15
View File
@@ -54,6 +54,21 @@ return [
'engine' => null,
],
'testing' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => 'testingizyim',
'username' => 'root',
'password' => '',
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
+25
View File
@@ -0,0 +1,25 @@
<?php
use Faker\Generator as Faker;
/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| This directory should contain each of the model factory definitions for
| your application. Factories provide a convenient way to generate new
| model instances for testing / seeding your application's database.
|
*/
// Manually creating the relationship tree.
$factory->define(App\So::class, function (Faker $faker) {
return [
'ff_id'=>'testing',
'supplier_company_name'=>'testing',
'supplier_contact_person'=>'testing',
'supplier_contact_person_no'=>'12345',
'delivery_id'=>'12345',
'warehouse_id'=>'testing',
];
});
@@ -0,0 +1,44 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateSosTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('sos', function (Blueprint $table) {
$table->increments('id');
//Order details
$table->integer('ff_id');
$table->string('supplier_company_name');
$table->string('supplier_contact_person');
$table->integer('supplier_contact_person_no');
//Delivery details
$table->integer('delivery_id');
//Warehouse details
$table->integer('warehouse_id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('sos');
}
}
@@ -0,0 +1,59 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateSoitemsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('soitems', function (Blueprint $table) {
$table->increments('id');
// foreign key for the so table
$table->unsignedInteger('so_id');
$table->foreign('so_id')
->references('id')->on('sos')
->onDelete('cascade')
->onUpdate('cascade');
$table->Integer('status')->default('0');
//Item details
$table->integer('order_id');
$table->integer('brand_no');
$table->integer('model_no');
$table->integer('item_code');
$table->string('quantity_of_item');
$table->string('uom');
//Packaging details
$table->integer('quantity_of_carton');
$table->string('packaging_type');
//Measurement details
$table->double('packaging_height');
$table->double('packaging_width');
$table->double('packaging_depth');
//Weight details
$table->double('packaging_gross');
$table->double('packaging_nett');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('soitems');
}
}
@@ -27,8 +27,8 @@ class DropForeignKeyInWarehouseitemsTable extends Migration
{
Schema::table('warehouseitems', function (Blueprint $table) {
// $table->dropColumn('soitem_id');
// $table->dropForeign('warehouseitems_soitem_id_foreign');
$table->dropColumn('soitem_id');
$table->dropForeign('warehouseitems_soitem_id_foreign');
});
}
+2
View File
@@ -13,5 +13,7 @@ class DatabaseSeeder extends Seeder
{
$this->call(LaratrustSeeder::class);
$this->call(UsersTableSeeder::class);
//$this->call(UsersTableSeeder::class);
$this->call(SoSeeder::class);
}
}
+29
View File
@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Seeder;
use App\So;
use Carbon\Carbon;
class SoSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('sos')->insert([
'ff_id' => '1',
'supplier_company_name' => 'SEED',
'supplier_contact_person' => 'SEED',
'supplier_contact_person_no' => '1234',
'delivery_id' => '1',
'warehouse_id' => '1',
'created_at' => Carbon::now()->format('Y-m-d H:i:s'),
'updated_at' => Carbon::now()->format('Y-m-d H:i:s'),
]);
}
}
+64
View File
@@ -0,0 +1,64 @@
<?php
use Illuminate\Database\Seeder;
use App\Soitems;
use Carbon\Carbon;
class SoitemSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('soitems')->insert([
([
'so_id' => '3',
'status' => '0',
'order_id' => '1',
'brand_no' => '1',
'model_no' => '1',
'item_code' => '1',
'quantity_of_item' => '1',
'uom' => 'SEED',
'quantity_of_carton' => '1',
'packaging_type' => '1',
'packaging_height' => '1',
'packaging_width' => '1',
'packaging_depth' => '1',
'packaging_gross' => '1',
'packaging_nett' => '41',
'created_at' => Carbon::now()->format('Y-m-d H:i:s'),
'updated_at' => Carbon::now()->format('Y-m-d H:i:s'),
]),
([
// 'id' => '8',
'so_id' => '3',
'status' => '0',
'order_id' => '1',
'brand_no' => '1',
'model_no' => '1',
'item_code' => '1',
'quantity_of_item' => '1',
'uom' => 'SEED',
'quantity_of_carton' => '1',
'packaging_type' => '1',
'packaging_height' => '1',
'packaging_width' => '1',
'packaging_depth' => '1',
'packaging_gross' => '1',
'packaging_nett' => '41',
'created_at' => Carbon::now()->format('Y-m-d H:i:s'),
'updated_at' => Carbon::now()->format('Y-m-d H:i:s'),
]),
]);
}
}
+1
View File
@@ -27,6 +27,7 @@
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="testing"/>
<env name="MAIL_DRIVER" value="array"/>
</php>
</phpunit>
+13
View File
@@ -2,6 +2,8 @@
use Illuminate\Http\Request;
use App\Company;
/*
|--------------------------------------------------------------------------
| API Routes
@@ -13,6 +15,17 @@ use App\Company;
|
*/
/* Wshipping-order */
Route::get('/so', 'SoController@index');// get the list of the shipping order
Route::get('/so/{so_id}', 'SoController@showso');//get the shipping order
Route::post('/so', 'SoController@store');//store shipping order
Route::post('/so/{so_id}/cancelOrder', 'SoController@cancelOrder');//post the cancel order
Route::delete('/so/{so_id}', 'SoController@delete');// delete the shipping order
Route::put('/so/{so_id}', 'SoController@update');//update the shipping order
/* Warehouse-receive-note */
//Route::get('/so/{so_id}','warehousearrangementController@index');//view the list of wrn
Route::get('/warehousearr','WarehousearrangementController@index');//view the wrn
+144
View File
@@ -0,0 +1,144 @@
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ShippingorderTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testGETtheindex()
{
$response = $this->json('GET', '/api/so');
$response->assertStatus(200);
}
public function testGET()
{
$response = $this->json('GET', '/api/so/{so_id}');
$response->assertStatus(200);
}
public function testPOSTso()
{
$response = $this->json('POST', '/api/so',
[
'id' => '1',
'ff_id' => '1',
'supplier_company_name' => 'Testing',
'supplier_contact_person' => 'Testing',
'supplier_contact_person_no' => '1234',
'delivery_id' => '1',
'warehouse_id' => '1',
'soitem' => [
0 => [
'so_id' => '1',
'status' => '1',
'order_id' => '1',
'brand_no' => '1',
'model_no' => '1',
'item_code' => '1',
'quantity_of_item' => '1',
'uom' => 'test',
'quantity_of_carton' => '1',
'packaging_type' => 'Testing',
'packaging_height' => '123',
'packaging_width' => '123',
'packaging_depth' => '123',
'packaging_gross' => '123',
'packaging_nett' => '123',
],
1 => [
'so_id' => '1',
'status' => '1',
'order_id' => '1',
'brand_no' => '1',
'model_no' => '1',
'item_code' => '1',
'quantity_of_item' => '1',
'uom' => 'test',
'quantity_of_carton' => '1',
'packaging_type' => 'Testing',
'packaging_height' => '123',
'packaging_width' => '123',
'packaging_depth' => '123',
'packaging_gross' => '123',
'packaging_nett' => '123',
]
]
]);
$response->assertStatus(201);
}
public function testDELETEso()
{
$response = $this->json('DELETE', '/api/so/8');
$response->assertStatus(204);
}
public function testDELETEsoitem()
{
$response = $this->json('DELETE', '/api/so/soitem/3');
$response->assertStatus(204);
}
public function testPUTso()
{
$response = $this->json('PUT', '/api/so/2', [
'id' => '1',
'ff_id' => '1',
'supplier_company_name' => 'Testinggggggggggggggggggggg',
'supplier_contact_person' => 'Testing',
'supplier_contact_person_no' => '1234',
'delivery_id' => '1',
'warehouse_id' => '1',
]);
$response->assertStatus(200);
}
public function testPUTsoitem()
{
$response = $this->json('PUT', '/api/so/soitem/1', [
'so_id' => '2',
'status' => '1',
'order_id' => '2',
'brand_no' => '2',
'model_no' => '2',
'item_code' => '2',
'quantity_of_item' => '2',
'uom' => 'test',
'quantity_of_carton' => '2',
'packaging_type' => 'Testinggggggggggggggggggg',
'packaging_height' => '123',
'packaging_width' => '123',
'packaging_depth' => '123',
'packaging_gross' => '123',
'packaging_nett' => '123',
]);
$response->assertStatus(200);
}
}
+26 -14
View File
@@ -7,6 +7,9 @@ use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
use App\Warehousearr;
use App\Warehouseitem;
use Artisan;
class WarehouseReceiveNoteTest extends TestCase
@@ -16,13 +19,13 @@ class WarehouseReceiveNoteTest extends TestCase
*
* @return void
*/
public function testGET()
{
$response = $this->json('GET', '/api/warehousearr');
// public function testGET()
// {
// $response = $this->json('GET', '/api/warehousearr');
$response->assertStatus(200);
// $response->assertStatus(200);
}
// }
public function testPOST()
{
@@ -51,11 +54,10 @@ class WarehouseReceiveNoteTest extends TestCase
'isDamaged'=> '1',
'status'=> 'ok',
'image'=> 'test.jpg',
'wa_id'=> '4',
'soitem_id'=> '4'
'wa_id'=> '11',
],
1 => [
'description'=> 'CIEFhuhuuh',
'description'=> 'CIE',
'nominal_ctn'=> '1',
'actual_ctn'=> '1',
'nominal_measurement'=> '1',
@@ -66,14 +68,13 @@ class WarehouseReceiveNoteTest extends TestCase
'isDamaged'=> '1',
'status'=> 'ok',
'image'=> 'test.jpg',
'wa_id'=> '4',
'soitem_id'=> '4'
'wa_id'=> '11',
]
]
]);
dd($response->getContent());
// $response->assertStatus(201);
// dd($response->getContent());
$response->assertStatus(201);
}
@@ -120,12 +121,23 @@ class WarehouseReceiveNoteTest extends TestCase
// Storage::fake('warehouse_picture');
// $response = $this->actingAs($this->user)
// ->json('POST', '/warehousearr/warehouse_picture/{wa_id}', [
// 'warehouse_picture' => UploadedFile::fake()->image('comp.jpg')
// ->json('POST', '/warehousearr/warehouse_picture/1', [
// 'warehouse_picture' => UploadedFile::fake()->image('test.jpg')
// ]);
// // dd($response->getContent());
// $response->assertStatus(201);
// }
// public function testUploadWarehouseItemImage()
// {
// Storage::fake('warehouse_picture');
// $response = $this->actingAs($this->user)
// ->json('POST', '/warehousearr/warehouse_item_picture/1', [
// 'warehouse_item_picture' => UploadedFile::fake()->image('test.jpg')
// ]);
// // dd($response->getContent());
// $response->assertStatus(201);
// }
}